Вот сценарий. Мне нужно уделить первоочередное внимание получению GPS со спутника. Однако, если в помещении, новых местоположений не будет. Что я сделал, так это то, что если через 2 минуты не будет получено новое местоположение, я переключусь на сетевой GPS. Однако, что если пользователь выйдет на улицу, приложение не узнает, потому что оно уже прослушивает сетевой GPS и больше не будет получать данные о местоположении со спутника.
поэтому было бы лучше, если бы я мог слушать новые обновления местоположения, погоду со спутника или из сети. хотя лучше, если я смогу расставить приоритеты со спутника.
Я нашел этот вопрос, и выбранный ответ действительно очень помог: Android LocationListener Switching from GPS в сеть
Но была только одна часть, которая меня смутила. Он сказал: Вы настраиваете один и тот же LocationListener для обоих провайдеров. Чтобы определить, откуда вы получаете местоположение, вам нужно проверить его следующим образом:
public void onLocationChanged(Location fix) {
if(fix.getProvider().equals(LocationManager.GPS_PROVIDER)){
//here Gps
} else if(fix.getProvider().equals(LocationManager.NETWORK_PROVIDER)){
//here Network
}
}
так что если это так, как мне отключить получение обновлений только от сетевого провайдера? потому что, если я использую один прослушиватель, который прослушивает и GPS, и сеть, то, когда я делаю removeUpdates(thatListener)
, этот прослушиватель больше не будет получать обновления GPS (спутниковые или сетевые).
но если он говорит, что я сделаю 2 прослушивателя, которые абсолютно одинаковы (кроме одного для спутника, один для сети), то мне не нужно будет проверять, какой провайдер дал местоположение, потому что у каждого слушателя будет свой onLocationChanged
метод. Я что-то упускаю? У меня недостаточно репутации, поэтому я не могу комментировать его ответ напрямую.
Кроме того, сколько времени обычно требуется спутниковому GPS, прежде чем он сможет получать обновления местоположения?
Большое тебе спасибо! :)