Shell을 통해 위치 서비스를 활성화 할 수 있습니까?


14

ADB 또는 터미널 에뮬레이터를 통해 위치 서비스 (GPS 또는 Google NetworkLocation)를 활성화 할 수 있습니까? 나는 뿌리 전화에 있습니다.

추가 사항 : 다른 시스템 관련 설정을 변경할 수도 있습니까?



2
@Izzy 나는 그것이 완전히 복제 된 것이라고 생각하지 않습니다.
Matthew 읽기

2
@Izzy는 관련이 없습니다. 연결 한 질문은 위치 서비스와 관련이 없습니다.
lorddev

1
@lorddev 아니요, 명시 적으로 언급되지 않았습니다. 그러나 동일한 코드를 사용하여 위치 서비스 의도를 호출 할 수 있습니다. 저를 조금 혼란스럽게 만드는 것은 "직접 적중"을 제안하는 내 의견의 표현입니다. 반년이 지난 지금, 내가 생각했던 것을 말하기가 어렵습니다 ...
Izzy

답변:


12

ADB 또는 터미널 에뮬레이터를 통해 위치 서비스 (GPS 또는 Google NetworkLocation)를 활성화 할 수 있습니까?

명령은 다음과 같습니다.

adb shell settings put secure location_providers_allowed gps

어디,

  • settingssettings.db(의 일부로 변경 com.android.providers.settings)
  • puttable의 location_providers_allowedgps으로 키를 업데이트하는 것 secure입니다.

위의 명령으로 Google의 위치 서비스를 사용할 수 없습니다. 이를 활성화하려면 다음 명령을 실행하십시오.

adb shell settings put secure location_providers_allowed gps,network

위치 서비스에 동의하는 팝업이 표시됩니다. 내 안드로이드 4.2.1에서 GUI를 통해 또는 input keyevent서비스를 처음부터 활성화 할 때마다 동의해야합니다 .

                                                                    IMG : 4.2.1

그러나 내 안드로이드 5.0에서 대화 상자에 설정을 저장할 수 있으며 명령 실행으로 다음에 완벽하게 수행됩니다.

                                                                    IMG : 5.0

Lollipop 장치와 같은 일부 장치에는 세 가지 위치 모드가 있으며 위 명령에서 전달할 관련 값은 다음과 같습니다.

  • 높은 정확도 : gps,wifi,network또는 gps,network(Wi-Fi를 사용하지 않으려는 경우)
  • 배터리 절약 : wifi,network또는 network
  • 기기 만 : gps

위치 모드를 비활성화하려면

adb shell settings put secure location_providers_allowed ' '

다른 시스템 관련 설정을 변경할 수도 있습니까?

보다 :

그러나 나는 이미을 사용하여 큰 아이디어를 주었다 settings put.


외부 컴퓨터의 ADB를 통하지 않고 장치의 콘솔에서 동일하게 달성 할 수 있습니까?
davide

1
네 그럼요. 그러나 장치에서 루트 액세스 또는 ADB 무선을 실행해야합니다. 한 번 봐 가지고 이 대답 예로을. 당신은 아이디어를 얻을 것입니다.
Firelord

이것은 Android 5에서 작동했지만 더 이상 Android 6에서는 작동하지 않습니다. 루트를 사용하거나 사용하지 않으면 설정이 변경되지 않고 시스템에 구성된 것과 동일하게 유지됩니다. location_providers_allowed더 이상 사용되지 않을 가능성이 있습니다 ( developer.android.com/reference/android/provider/… ). 아이디어?
gw0

GPS 기능 만 켜고 끄려면 설정 위치 페이지로 이동 한 다음 전환 버튼을 클릭하면됩니다. 이 작업은 adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS다음 명령으로도 수행 할 수 있습니다 : . 스위치 버튼을 클릭하십시오.
Eddy

13

안드로이드 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


이것은 받아 들인 대답이 아니라 나를 위해 일했습니다.
TheMonkeyKing

고마워요. 어쨌든 우리는 한 줄의 adb 명령으로 gps와 네트워크를 활성화 / 비활성화 할 수 있습니까? 고 정확도 위치에 필요합니다. gps + network = 높은 정확성
Suban Dhyako

4

Android 위치 서비스에는 다양한 옵션이 제공됩니다.

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


0

location_providers_allowed 더 이상 Android 10 (API 레벨 29)에서 작동하지 않습니다.

대신를 설정할 수 있습니다 location_modeLOCATION_MODE_HIGH_ACCURACY3의 값 :

adb shell settings put secure location_mode 3

참고 : 위치 모드 언급에 대한 문서로 이미 사용되지 않으므로 v29 이상 작동하지 않을 수 있습니다 .

이 API는 일정한 레벨 (28)의 위치를 확인하고 모드 변경을 통해 청취되어위한 바람직한 방법에서 중단 하였다 LocationManager#isLocationEnabled()하고 LocationManager#MODE_CHANGED_ACTION.

이 상수가 사라지면 쉘을 통해이를 수행하는 프로그래밍 방식이 무엇인지 모릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.