Работа с провайдером сети 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);
Другие вопросы по тегам