На Nexus 7 происходит сбой, но на Nexus 4 и 5 работает нормально
У меня есть приложение, которое определяет местоположение пользователей на карте. Это успешно работает на обоих Nexus 4 и 5, но больше не будет работать на моем Nexus 7.
Он работал на 7, но затем устройство отключилось во время выполнения, и теперь приложение больше не будет работать.
Я вернул устройство к заводским настройкам и запустил все обновления на нем.
Вот код из моего метода onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMyLocationEnabled(true);
Criteria criteria = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
double lat = location.getLatitude();
double lng = location.getLongitude();
LatLng coordinate = new LatLng(lat, lng);
CameraUpdate center = CameraUpdateFactory.newLatLng(coordinate);
CameraUpdate zoom=CameraUpdateFactory.zoomTo(16);
map.moveCamera(center);
map.animateCamera(zoom);
}
Это говорит о том, что я получаю исключение NullPointerException в ** ** double lat = location.getLatitude();
Я мог бы понять проблему, если бы это произошло на всех моих устройствах, но я не могу понять, почему именно это одно устройство (и особенно после того, как оно сработало ранее)?
2 ответа
Согласно документации getLastKnownLocation:
Если поставщик в настоящее время отключен, возвращается ноль.
как вы используете getBestProvider(criteria, false)
Вы говорите, что разрешаете провайдерам, которые не включены (вот что false
значит) - переключи на true
если вы хотите посмотреть только на включенных провайдеров (что гарантирует, что getLastKnownLocation не возвращает ноль).
Обратите внимание, что getLastKnownLocation
может быть очень устаревшим, и вы все еще можете искать обновления местоположения, если вам нужно получить недавнее местоположение.
Есть несколько вещей, которые следует иметь в виду, когда дело касается gsp или сетевого расположения.
* - Для получения данных на ваше устройство требуется время: да, для восстановления текущего местоположения устройства может потребоваться даже 1 минута. Вот почему вы должны использовать LocationListener
* -Может звучать безумно, но убедитесь, что ваш смартфон подключен к Интернету