#android
#Android
Вопрос:
Итак, этот код работал в пятницу:
public void requestLocationUpdate() {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
Intent updateIntent = new Intent(SINGLE_LOCATION_UPDATE_ACTION);
PendingIntent singleUpdatePI = PendingIntent.getBroadcast(_context, 0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
IntentFilter locIntentFilter = new IntentFilter(SINGLE_LOCATION_UPDATE_ACTION);
SingleUpdateReceiver receiver = new SingleUpdateReceiver();
getApplicationContext().registerReceiver(receiver, locIntentFilter);
locationManager.requestSingleUpdate(criteria, singleUpdatePI);
}
class SingleUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// ... never invoked
}
}
Сегодня onReceive()
просто не будет вызван. Есть ли какая-либо причина, по которой это не должно работать сегодня? Единственное, что изменилось, это то, что теперь я на другом маршрутизаторе WiFi.
Я вижу пару подозрительных строк в LogCat:
06-23 15:10:36.540 709-7716/? D/LocationManagerService﹕ request 430483d8 fused Request[ACCURACY_BLOCK fused requested= 10m0s0ms fastest= 10m0s0ms num=1] from com.nilzor.app(10195)
06-23 15:10:36.540 709-7716/? D/LocationManagerService﹕ provider request: fused ProviderRequest[ON interval= 10m0s0ms]
… не знаю, актуально ли это?
Документация requestSingleUpdate
указывает мне на requestLocationUpdates, что снова говорит мне, что для получения первого обновления может потребоваться некоторое время. Это верно и для requestSingleUpdate
? В пятницу обратный вызов был выполнен в течение секунды после запроса. Сегодня я пробовал более 10 раз, и он не сработал ни разу. 5 минут, считая с момента публикации.
Ответ №1:
Когда вы подключаетесь к wi-fi, вы получаете координаты от своего маршрутизатора. Не имеет значения, где вы находитесь, в вашей зоне / месте Wi-Fi используйте реальный gps или gps-спойлер.