@ Иззи не имеет отношения. Вопрос, на который вы ссылаетесь, не имеет отношения к службам определения местоположения.
лорддев
1
@lorddev Нет, они явно не упоминаются. Но вы можете использовать тот же код, чтобы вызвать намерение для служб определения местоположения. Что меня немного смущает, так это формулировка моего комментария, который предлагает «прямое попадание» (и здесь вы оба правы: это не совсем то же самое). Трудно сказать, через полгода, что я имел в виду тогда ...
Иззи
Ответы:
12
Можно ли включить службы определения местоположения (GPS или Google NetworkLocation) через ADB или эмулятор терминала?
Команда:
adb shell settings put secure location_providers_allowed gps
где,
settingsбудет вносить изменения в settings.db(часть com.android.providers.settings)
Вышеуказанная команда не включит службу определения местоположения Google. Чтобы включить его, выполните команду:
adb shell settings put secure location_providers_allowed gps,network
Вам будет показано всплывающее окно, чтобы согласиться на услуги определения местоположения. В моем Android 4.2.1 я должен согласиться через графический интерфейс или input keyeventкаждый раз, когда я включаю сервис с нуля.
Тем не менее, в моем Android 5.0 я могу сохранить настройки в диалоговом окне, и выполнение команды сделает все идеально в следующий раз.
Некоторые устройства, такие как Lollipop, имеют три режима Locations, и соответствующие значения, которые должны быть переданы в вышеупомянутой команде:
Высокая точность: gps,wifi,networkили gps,network(если вы не хотите, чтобы Wi-Fi был включен)
Экономия батареи: wifi,networkили networkтолько
Только устройство: gps
Чтобы отключить режим местоположения
adb shell settings put secure location_providers_allowed ' '
Можно ли добиться того же, но с консоли устройства, а не через ADB внешнего компьютера?
Давид
1
Да, конечно. Хотя на устройстве вам понадобится доступ с правами root или беспроводной ADB. Взгляните на этот ответ в качестве примера. Вы бы поняли.
Повелитель огня
Раньше это работало на Android 5, но больше не работает на Android 6. С или без рута настройка не меняется и остается такой же, как настроена в системе. Вероятно, это как-то связано с отсутствием поддержки location_providers_allowed( developer.android.com/reference/android/provider/… ). Идеи?
gw0
Если вы просто хотите включить / выключить функцию GPS, вы можете перейти на страницу настроек Location, а затем нажать кнопку переключения. Эту операцию также можно выполнить командой:, adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSзатем нажмите кнопку переключения.
Эдди
13
Для Android 6.0
Чтобы включить использование:
Для GPS: adb shell settings put secure location_providers_allowed +gps
Для сети: adb shell settings put secure location_providers_allowed +network
Отключить :
GPS : adb shell settings put secure location_providers_allowed -gps
Для сети: adb shell settings put secure location_providers_allowed -network
Спасибо, это работает. Есть ли в любом случае мы можем включить / отключить GPS и сеть с помощью одной строки ADB команды. Мне это нужно для высокой точности определения местоположения. GPS + сеть = высокая точность
Субан Дьяко
4
Android Location Service поставляется с различными вариантами:
1) высокая точность:gps, network
Включить:adb shell settings put secure location_providers_allowed +gps,network
Отключить:adb shell settings put secure location_providers_allowed -gps,network
2) Только телефон:gps
Включить:adb shell settings put secure location_providers_allowed +gps
Отключить:adb shell settings put secure location_providers_allowed -gps
3) Экономия батареи:network
Включить:adb shell settings put secure location_providers_allowed +network
Отключить:adb shell settings put secure location_providers_allowed -network
location_providers_allowed больше не работает для Android 10 (уровень API 29).
Вместо этого вы можете установить location_modeзначение LOCATION_MODE_HIGH_ACCURACYсо значением 3:
adb shell settings put secure location_mode 3
ПРИМЕЧАНИЕ. Вероятно, не будет работать> v29, поскольку это уже устарело, поскольку в документации по режиму местоположения упоминается:
Эта константа устарела на уровне API 28. Предпочтительные методы для проверки режима местоположения и прослушивания изменений через LocationManager#isLocationEnabled()и LocationManager#MODE_CHANGED_ACTION.
Не знаю, каким будет программный способ сделать это через оболочку, когда эта константа исчезнет.
Ответы:
Команда:
где,
settings
будет вносить изменения вsettings.db
(частьcom.android.providers.settings
)put
обновить ключlocation_providers_allowed
со значениемgps
в таблицеsecure
.Вышеуказанная команда не включит службу определения местоположения Google. Чтобы включить его, выполните команду:
Вам будет показано всплывающее окно, чтобы согласиться на услуги определения местоположения. В моем Android 4.2.1 я должен согласиться через графический интерфейс или
input keyevent
каждый раз, когда я включаю сервис с нуля.Тем не менее, в моем Android 5.0 я могу сохранить настройки в диалоговом окне, и выполнение команды сделает все идеально в следующий раз.
Некоторые устройства, такие как Lollipop, имеют три режима Locations, и соответствующие значения, которые должны быть переданы в вышеупомянутой команде:
gps,wifi,network
илиgps,network
(если вы не хотите, чтобы Wi-Fi был включен)wifi,network
илиnetwork
толькоgps
Чтобы отключить режим местоположения
Видеть :
Но я уже дал большую идею, используя
settings put
.источник
location_providers_allowed
( developer.android.com/reference/android/provider/… ). Идеи?adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
затем нажмите кнопку переключения.Для Android 6.0
Чтобы включить использование:
Для GPS:
adb shell settings put secure location_providers_allowed +gps
Для сети:
adb shell settings put secure location_providers_allowed +network
Отключить :
GPS :
adb shell settings put secure location_providers_allowed -gps
Для сети:
adb shell settings put secure location_providers_allowed -network
источник
Android Location Service поставляется с различными вариантами:
1) высокая точность:
gps, network
Включить:
adb shell settings put secure location_providers_allowed +gps,network
Отключить:
adb shell settings put secure location_providers_allowed -gps,network
2) Только телефон:
gps
Включить:
adb shell settings put secure location_providers_allowed +gps
Отключить:
adb shell settings put secure location_providers_allowed -gps
3) Экономия батареи:
network
Включить:
adb shell settings put secure location_providers_allowed +network
Отключить:
adb shell settings put secure location_providers_allowed -network
источник
location_providers_allowed
больше не работает для Android 10 (уровень API 29).Вместо этого вы можете установить
location_mode
значениеLOCATION_MODE_HIGH_ACCURACY
со значением 3:ПРИМЕЧАНИЕ. Вероятно, не будет работать> v29, поскольку это уже устарело, поскольку в документации по режиму местоположения упоминается:
Не знаю, каким будет программный способ сделать это через оболочку, когда эта константа исчезнет.
источник