У меня есть Android приложение, которое получает местоположение:Android приложение не может получить доступ к местоположению на эмуляторе, используя FusedLocationApi
private LocationRequest createLocationRequest() {
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(120000);
mLocationRequest.setFastestInterval(60000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
return mLocationRequest;
}
private GoogleApiClient getLocationApiClient(){
return new GoogleApiClient.Builder(App.instance)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
...
apiClient = getLocationApiClient();
apiClient.connect();
@Override
public void onConnected(@Nullable Bundle bundle) {
...
LocationRequest locationRequest = createLocationRequest();
LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, locationRequest, new LocationListener() {
@Override
public void onLocationChanged(Location newLocation) {
//***THIS IS NEVER CALLED ON EMULATOR***
}
});
}
При работе на устройстве (Galaxy S3, Android 4.4.4) не существует никаких проблем. При работе на эмуляторе (Android Studio по умолчанию qemu, Android 7.1, x86-64) я не получаю местоположение в своем приложении. onConnected
, я даже могу прочитать последнее место, хотя я не буду получать никаких обновлений местоположения (requestLocationUpdates
завершение никогда не вызывается).
Я:
- Добавлено
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
проявляться (в дополнение к грубой и тонкой месте). - Попытался изменить настройки местоположения Google на эмуляторе (высокая точность, экономия заряда батареи, только устройство)
- Пробовал настройку местоположения из графического интерфейса эмулятора.
- Включить и выключить опцию «Использовать обнаруженное местоположение ADB» эмулятора.
- Пробовал
adb -s emulator-5555 emu geo fix 12.34 56.78
(команда работает, продолжайте чтение, чтобы увидеть, почему)
Я до сих пор не могу получить мое приложение, чтобы получить обновление местоположения. Я пробовал встроенные карты Google эмулятора, и он прекрасно обновляет местоположение, я вижу, что текущая позиция на карте сразу изменяется, когда я отправляю разные координаты с помощью geo fix.
Но мое приложение полностью не знает о местоположении обновлений. Я пробовал ждать не менее 2 минут (мой интервал запроса местоположения) перед отправкой другой координаты. Что я делаю не так?
проверьте, есть ли у вас игровая служба google в вашем эмуляторе. если у вас есть, то обновите его. –
@jiteshmohite он подключается к сервису без ошибок, поэтому я думаю, он имеет его –
Любые обновления по этому вопросу? Наблюдение за тем же поведением на всех эмуляторах, которые я использую. –