Я пытаюсь получить свое местоположение. Но ноль - это все, что у меня есть. Пожалуйста, посмотрите на код:Местоположение null в android
public class ListBranchesActivity extends Activity {
private double lat, lon;
private LocationManager lm;
private Location location;
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
lon = location.getLongitude();
lat = location.getLatitude();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
};
А потом где-то в onCreate()
:
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10,
locationListener);
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Следующий код возвращает NullPointerException:
Log.w("es09", "coordinates are " + lon + " " + lat +" " +location.getLatitude()+" "+ location.getLongitude());
И этот код возвращает "координаты 0.0 0.0"
Log.w("es09", "coordinates are " + lon + " " + lat);
Мои фактические разрешения:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_GPS"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS"/>
Что не так?
Кажется, что 'onLocationChanged' еще не вызвал, потому что вы установили' minDistance' на 10 метров. Поэтому измените minDistance на 10 до 0 метров и измените местоположение устройства, чтобы вызвать onLocationChanged, т. Е. изменить как 'lm.requestLocationUpdates (LocationManager.GPS_PROVIDER, 2000, 0, locationListener);' –
Не помогает. onLocationChanged() не называется – Tony