1

я сделал простую услугу определения местоположения с помощью Fused location, я проверить с реальным устройством и андроида виртуального устройства Genymotion в.Genymotion в определение местоположения запроса местоположения слишком быстро

iterval для получения информации о местонахождении 5 секунд.

На реальном устройстве он работает хорошо, интервал почти ровно 5 секунд, журнал регистрации: (onLC для OnLocationChanged)

03-17 11:59:27.115: I/Locationing_GpsService_Test(27147): onLC:Now! 
03-17 11:59:32.189: I/Locationing_GpsService_Test(27147): onLC:Now! 
03-17 11:59:37.259: I/Locationing_GpsService_Test(27147): onLC:Now! 
03-17 11:59:42.171: I/Locationing_GpsService_Test(27147): onLC:Now! 
03-17 11:59:47.215: I/Locationing_GpsService_Test(27147): onLC:Now! 
03-17 11:59:52.240: I/Locationing_GpsService_Test(27147): onLC:Now! 

На Виртуальное устройство Genymotions Интервал как 1 секунда:

03-17 12:10:20.280: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:21.270: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:22.269: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:23.271: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:24.273: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:25.273: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:26.275: I/Locationing_GpsService_Test(2616): onLC:Now! 
03-17 12:10:27.273: I/Locationing_GpsService_Test(2616): onLC:Now! 

Код для initalizing запросов местоположения:

mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(5000); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

Может кто-нибудь помочь мне, Что здесь происходит?

ответ

1

Просто добавив mLocationRequest.setFastestInterval(5000); сделал трюк, теперь виртуальное устройство Genymotion также запрашивает обновления местоположения за 5 секунд.

1

Вы ожидаете, что Fused location будет работать на эмуляторе? Fused location - все о подключении мобильных/wifi/gps сигналов - ожидаете ли вы Genymotion mocks mobile/wifi/gps, чтобы он вносил некоторые значимые данные в Fused location? Я так не думаю.

В любом случае, если вы посмотрите на setInterval вы увидите:

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

Таким образом, установка mLocationRequest.setInterval(5000); фактически ничего не значит.

+0

Что вы подразумеваете под «Вы ожидаете, что плавное местоположение будет работать на эмуляторе?» Это эмулятор, он должен хотя бы подражать. Я получаю места, я также могу использовать небольшую карту, чтобы выбрать места для тестирования, вопрос был не в этом. –

+0

Так в чем ваш вопрос? Потому что это непонятно. –

1

Genymotion мгновенно получает информацию о местоположении и передает его в приложение, поэтому ему не нужно ждать, как на реальном устройстве. Он не эмулирует (или моделирует) процесс поиска спутников GPS, как в реальном GPS-датчике, а также, используя скорость вашего ПК в Интернете, вместо мобильного GPRS или общедоступного Wi-Fi, поэтому он также получает ваше местоположение от него почти сразу же. То же самое делает эмулятор ADB. Вы должны использовать реальное устройство для тестирования служб определения местоположения.