Работа с провайдером сети Android и провайдером GPS
Я сделал этот код, где я прошу обновления на месте. Я хочу знать, правильно ли я его реализовал. Как только страница открыта, я запрашиваю обновления (предпочтение сети через gps)... и я отображаю местоположение в функции onlocationchanged. Я хочу спросить, возможно ли внутри onlocationchange я получаю нулевое местоположение, подобное, когда я делаю getlastknownlocation? я перестал использовать ghetlastknownlocation, так как он иногда возвращает nulll и неправильные значения.
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean isNetworkEnabled = lm .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { ProgressBar progress = (ProgressBar)findViewById(R.id.progress); progress.setVisibility(View.INVISIBLE); Utilities.showAlertDialog2(RegionalStoresMeActivity.this, "", ""+getResources().getString(R.string.nothing_enabled), false); } else if(isNetworkEnabled){ // lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this); } else if(isGPSEnabled ) { lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,0, this); }
1 ответ
Метод onLocationChanged() вызывается только тогда, когда это обновление местоположения с соответствующими широтой и долготой. Это может быть маловероятно, но я никогда не испытывал это.
Вы сделали это правильно, но я хотел бы сделать предложение. Рассмотрим сценарий
Сетевой поставщик включен, и вы запросили обновления местоположения. Но по какой-то причине он не возвращает обновление местоположения (во многих случаях поставщик местоположения не возвращает обновление местоположения, и не обязательно возвращать обновления местоположения.)
Теперь, согласно вашему коду, он не будет проверять провайдера GPS, потому что он находится в "else if( isGPSEnabled)". Поэтому я предлагаю вам реализовать это только в выражении "если", как показано ниже.
if( isNetworkEnabled )
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this);
if( isGPSEnabled )
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,0, this);