Android геолокация работает в 2.2, но не 2.3 - PullRequest
0 голосов
/ 17 марта 2011

Я надеялся, что кто-нибудь сможет пролить свет на это. Я пытаюсь выяснить, почему вдруг мой код из 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 ]

1 голос
/ 17 марта 2011

getLastKnownLocation может вернуть ноль, если нет предыдущего местоположения. Если это так, вам нужно дождаться значения в onLocationChanged с зарегистрированным слушателем.

0 голосов
/ 29 марта 2012

Кажется, что Android 2.3 не работает с "0,0" на lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

Вам нужно установить эти 2 параметра как минимум 1 и 1: lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, locationListener);

...