У меня проблемы с системами определения местоположения.
У меня есть сервис, который реализует Locationlistener.
Я хочу получить лучшее местоположение, используя сеть, когда это возможно, GPS, если сеть недостаточно точна (точность выше 300 м).
Проблема в этом. Мне нужно местоположение (если возможно, точное, иначе неточное) каждые 5 минут.
Я начинаю с:
LocationManager lm=(LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
String provider=lm.getBestProvider(criteria, true);
if(provider!=null){
lm.requestLocationUpdates( provider,5*60*1000,0,this);
В "onLocationChanged" я слушаю местоположения, и когда я получаю местоположение с точностью более 300 м, я хочу перейти на систему определения местоположения GPS.
Если я удаляю allupdates и затем запрашиваю обновления gps, как это:
lm.removeUpdates((android.location.LocationListener) this);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
String provider=lm.getBestProvider(criteria, true);
if(provider!=null){
lm.requestLocationUpdates( provider,5*60*1000,0,this);
}
система перестает ждать gpsupdate, и если я нахожусь в закрытой комнате, она может часами оставаться без обновлений местоположения, игнорируя показания timeupdate.
Есть ли способ сказать locationprovider для переключения на сеть, если GPS не дает местоположение в «х» секунд? или как понять когда gps не локализуется?
или, если я запрашиваю обновление обновлений у 2 провайдеров одновременно (сеть и gps), может быть проблема?
Есть предложения?