Я использую requestLocationUpdates менеджера местоположения () метод для получения намерения к моему бытовому радиоприемнику периодически. Система правильно запускает намерение в мой получатель, и я смог использовать его правильно. Единственная проблема состоит в том, что поставщик местоположения GPS только остается активен в течение нескольких секунд после начального приобретения местоположения, и мне нужно оно для оставлений немного дольше так, чтобы оценки местоположения были более точными.
Мой вопрос состоит в том, как заставить поставщика местоположения GPS оставаться активным для каждого периодического запроса, который прибывает из LocationManager requestLocationUpdates. Кто-либо знает, как сделать это?
Попробуй что-нибудь вроде этого. Я думаю, что это правильный подход
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);
}
если вы держите LocationListener активным, он должен продолжать получать обновления к onLocationChanged(), если точность исправления сужается. и действительно location.getAccuracy() скажет вам текущую точность
может установить minTime и minDistance оба на 0, чтобы получать обновления с большей частотой? будет использовать больше батареи, но это более точно.
.