2011-03-17 62 views
0

我希望有人能夠對此有所瞭解。我試圖弄清楚爲什麼突然之間我2.2的代碼不能在2.3下工作。我有點困惑。這是一直在工作的代碼,但現在拋出一個空指針異常。Android地理位置在2.2中可用,但不是2.3

@Override 
public void onStart(Intent intent, int startId) { 
    LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location l){ 
     Log.i("MYSERVICE", "LocationChanged " + l); 
     } 
     public void onStatusChanged(String provider, int status, Bundle Extras) {} 
     public void onProviderEnabled(String provider){ 
     Log.i("MYSERVICE", "ProviderEnabled " + provider); 
     } 
     public void onProviderDisabled(String provider) {} 
     }; 

     lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
    super.onStart(intent, startId); 
    String location = getLocation(); 
} 


public String getLocation() { 
    String provider = LocationManager.GPS_PROVIDER; 
    Location location = lm.getLastKnownLocation(provider); 
    Double lat = location.getLatitude(); 
    Log.i("lat", lat.toString()); 
    double lng = location.getLongitude(); 
    String writeString = lat+"&"+lng; 
    return writeString; 
} 

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

我也在使用2.3模擬器。任何幫助將不勝感激,歡呼!

回答

1

getLastKnownLocation如果沒有以前的位置,則可以返回null。如果是這樣,您需要等待onLocationChanged中的值與您註冊的監聽器一起使用。

-1

看來,Android 2.3的不會對lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

您需要設置的2個參數到至少1和1「0,0」的工作: lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, locationListener);

+1

這是錯誤的。從[文檔](http://developer.android.com/reference/android/location/LocationManager.html):如果minTime大於0,LocationManager可能會在位置更新之間休息minTime毫秒以節省電量。如果minDistance大於0,則只有當設備通過minDistance米移動時纔會廣播位置。 **要儘可能頻繁地獲得通知,請將這兩個參數設置爲0。** – 2012-03-29 15:40:54

+0

爲什麼您投票否定?是的,確實要儘可能頻繁地獲得通知,你必須設置爲0,但在2.3薑餅不工作!我嘗試過,並在2.2(Froyo)工作,但在2.3沒有奏效。 – Alin 2012-04-03 09:44:41

+2

我投票因爲它做了工作。它可以在模擬器上運行,它可以在我的設備上運行,並且可以根據從API級別1開始運行的文檔。如果您要聲明文檔錯誤,最好提供一些證據。否則,最好假設代碼有錯或設備出錯。 – 2012-04-06 19:57:29

相關問題