Android地理定位适用于2.2,但不适用于2.3

时间:2011-03-17 02:08:24

标签: android android-emulator geolocation android-sdk-2.3

我希望有人可以对此有所了解。我试图找出为什么突然间我的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模拟器。任何帮助都会非常感激,欢呼!

2 个答案:

答案 0 :(得分:1)

如果没有以前的位置,

getLastKnownLocation可以返回null。如果是这样,您需要使用您注册的侦听器等待onLocationChanged中的值。

答案 1 :(得分:-1)

似乎android 2.3不能与lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

上的“0,0”一起使用

您需要将这两个参数设置为至少1和1: lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, locationListener);