Подтвердить что ты не робот

Тестирование геообстановки с помощью Google Play Services 6.5. +

Я тестировал api geofencing api, доступный в последних сервисах Google Play, используя официальный образец, доступный здесь: https://github.com/googlesamples/android-Geofencing/ И, конечно же, после учебного курса: http://developer.android.com/training/location/geofencing.html

Образец отображает уведомление, когда вы приближаетесь к двум зданиям Google в Сан-Франциско, поэтому я изменил его, чтобы он срабатывал, когда я приближаюсь к дому или месту работы.

Если я использую реальное устройство, оно работает. Уведомления запускаются должным образом. Но когда я использую симулятор и меняю местоположение с помощью telnet или ddms, ничего не происходит. Я также пробовал с Genymotion, с установленными Gapps и тем же материалом: ничего.

У кого-нибудь есть указатель на то, как проверить геозонность, без фактического перемещения моего приклада? Потому что на улице нет способа отлаживать код...

4b9b3361

Ответ 1

У меня была такая же проблема, если у вас есть устройство, вы можете легко подделать местоположение, включив насмешливое местоположение в настройках

Настройки- > Параметры разработчика- > Разрешить макет местоположения

И вы также должны добавить это в манифест:

 <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 

Я никогда не пробовал эмулятор, но пытаюсь открыть эмулятор и то же самое (перейти к настройкам и включить макет местоположений), удачи!

Ответ 2

Вот что вам нужно сделать:

  • Настройки → Параметры разработчика → Разрешить макет местоположения

  • Добавьте следующее разрешение:

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

  1. Убедитесь, что ваша служба определения местоположения GPS включена (высокая точность) не Расположение сети

  2. Загрузите приложение под названием Fake GPS (у него есть желтый счастливый факт с пультом дистанционного управления) из магазина приложений. Вы можете установить свой поддельный GPS с помощью этого приложения

Надеюсь, это ответит на ваш вопрос:)

Ответ 3

Приложение Lockito помогает моделировать маршрут для тестирования Geofencing. https://play.google.com/store/apps/details?id=fr.dvilleneuve.lockito

Вам нужно включить макетные местоположения Настройки- > Параметры разработчика- > Разрешить макет местоположения

Я обнаружил, что вы можете установить среднюю скорость по маршруту, чтобы ускорить симуляцию, однако, если скорость слишком быстрая, тогда вход и выход Geofencing не могут срабатывать или срабатывать намного позже, чем они должны. Я также установил радиус Geofence не менее 40 метров, чтобы убедиться, что триггеры произошли.

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

Ответ 4

Я обнаружил, что самый простой способ установить макет местоположения в эмуляторе Android - это небольшое приложение, предназначенное для этой цели.

При тестировании приложений с функциями определения местоположения я использую Fake Location GPS.

Вы можете загрузить apk из зеркала (поиск в google для com.lexa.fakegps.apk), а затем установить его на эмулятор с помощью:

abd install com.lexa.fakegps.apk

Это работает как шарм. Никогда не было проблем с настройкой фальшивого местоположения, например, с помощью telnet или DDMS, и это намного проще, поскольку вместо команд терминала вы можете использовать простой графический интерфейс!

EDIT: Если вам нужно автоматически установить местоположение в модульных тестах, вы можете использовать эти цели:

Intent startIntent = new Intent();
startIntent.setAction("com.lexa.fakegps.START");
startIntent.putExtra("lat", 56.1234);
startIntent.putExtra("long", 44.0011);
startService(startIntent);

Intent stopIntent = new Intent();
stopIntent.setAction("com.lexa.fakegps.STOP");
startService(stopIntent);

Хорошее тестирование!

Маттиа

Ответ 5

Мне было 2 дня, пытаясь выяснить, как проверить мое приложение geofence на Android Studio Emulator и, наконец, это сделать. У устройства были стандартные сервисы воспроизведения (я имею в виду, что я создал с ним виртуальное устройство).

Я решил, что это будет "Настройки Google" > "Местоположение" > "Режим"

И изменив его с "Только устройство" на "Высокая точность".

Таким образом мое приложение наконец-то сработало. Надеюсь, что это поможет.