Android: Как сохранить GPS активным, пока более точное местоположение не обеспечивается?

Я использую requestLocationUpdates менеджера местоположения () метод для получения намерения к моему бытовому радиоприемнику периодически. Система правильно запускает намерение в мой получатель, и я смог использовать его правильно. Единственная проблема состоит в том, что поставщик местоположения GPS только остается активен в течение нескольких секунд после начального приобретения местоположения, и мне нужно оно для оставлений немного дольше так, чтобы оценки местоположения были более точными.

Мой вопрос состоит в том, как заставить поставщика местоположения GPS оставаться активным для каждого периодического запроса, который прибывает из LocationManager requestLocationUpdates. Кто-либо знает, как сделать это?

6
задан Doughy 2 January 2010 в 22:22
поделиться

2 ответа

Попробуй что-нибудь вроде этого. Я думаю, что это правильный подход

private void createGpsListner()
{
    gpsListener = new LocationListener(){
        public void onLocationChanged(Location location)
        {
           curLocation = location;

           // check if locations has accuracy data
           if(curLocation.hasAccuracy())
           {
               // Accuracy is in rage of 20 meters, stop listening we have a fix
               if(curLocation.getAccuracy() < 20)
               {
                   stopGpsListner();
               }
           }
        }
        public void onProviderDisabled(String provider){}
        public void onProviderEnabled(String provider){}
        public void onStatusChanged(String provider, int status, Bundle extras){}
    };
}

private void startGpsListener()
{

    if(myLocationManager != null)
        // hit location update in intervals of 5sec and after 10meters offset
        myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, gpsListener);   
}

private void stopGpsListner()
{
    if(myLocationManager != null)
        myLocationManager.removeUpdates(gpsListener);
}
9
ответ дан 10 December 2019 в 02:48
поделиться

если вы держите LocationListener активным, он должен продолжать получать обновления к onLocationChanged(), если точность исправления сужается. и действительно location.getAccuracy() скажет вам текущую точность

может установить minTime и minDistance оба на 0, чтобы получать обновления с большей частотой? будет использовать больше батареи, но это более точно.

.
0
ответ дан 10 December 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: