Có thể bật Dịch vụ vị trí qua Shell không?


14

Có thể bật Dịch vụ vị trí (GPS hoặc Google NetworkLocation) thông qua ADB hoặc Trình mô phỏng đầu cuối không? Tôi đang sử dụng điện thoại đã được root.

Điểm bổ sung: Cũng có thể thay đổi các cài đặt liên quan đến hệ thống khác?



2
@Izzy Tôi không nghĩ đó là một bản sao hoàn toàn.
Matthew Đọc

2
@Izzy không liên quan. Câu hỏi bạn liên kết đến không liên quan gì đến dịch vụ định vị.
lorddev

1
@lorddev Không, chúng không được đề cập rõ ràng. Nhưng bạn có thể sử dụng cùng một mã để gọi ý định cho dịch vụ định vị. Điều khiến tôi bối rối một chút là cụm từ nhận xét của tôi, gợi ý "cú đánh trực tiếp" (và ở đây cả hai bạn đều đúng: nó không hoàn toàn giống nhau). Thật khó để nói, nửa năm sau, những gì tôi đã nghĩ trong đầu hồi đó ...
Izzy

Câu trả lời:


12

Có thể bật Dịch vụ vị trí (GPS hoặc Google NetworkLocation) thông qua ADB hoặc Trình mô phỏng đầu cuối không?

Lệnh là:

adb shell settings put secure location_providers_allowed gps

Ở đâu,

  • settingssẽ thay đổi thành settings.db(một phần của com.android.providers.settings)
  • putlà để cập nhật khóa location_providers_allowedvới giá trị gpstrong bảng secure.

Lệnh nói trên sẽ không kích hoạt Dịch vụ vị trí của Google. Để kích hoạt nó, hãy ra lệnh:

adb shell settings put secure location_providers_allowed gps,network

Bạn sẽ được hiển thị một cửa sổ bật lên để đồng ý cho Dịch vụ vị trí. Trong Android 4.2.1, tôi phải đồng ý thông qua GUI hoặc input keyeventmỗi lần tôi kích hoạt dịch vụ từ đầu.

                                                                    IMG: 4.2.1

Tuy nhiên, trong Android 5.0 của tôi, tôi có thể lưu các cài đặt trong hộp thoại và thực thi lệnh giúp mọi việc được thực hiện hoàn hảo từ lần tiếp theo.

                                                                    IMG: 5.0

Một số thiết bị như Lollipop có ba chế độ Vị trí và các giá trị có liên quan được truyền trong lệnh nói trên sẽ là:

  • Độ chính xác cao: gps,wifi,networkhoặc gps,network(nếu bạn không muốn bật Wi-Fi)
  • Tiết kiệm pin: wifi,networkhoặc networkchỉ
  • Chỉ thiết bị: gps

Để tắt chế độ Vị trí

adb shell settings put secure location_providers_allowed ' '

Cũng có thể thay đổi các cài đặt liên quan đến hệ thống khác?

Xem :

Nhưng tôi đã đưa ra một ý tưởng lớn bằng cách sử dụng settings put.


Có thể đạt được điều tương tự, nhưng từ bảng điều khiển của thiết bị, không phải thông qua ADB của máy tính bên ngoài?
davide

1
Phải, chắc chắn rồi. Bạn sẽ cần quyền truy cập root hoặc ADB không dây chạy trên thiết bị. Hãy xem câu trả lời này là một ví dụ. Bạn sẽ có một ý tưởng.
Firelord

Điều này được sử dụng để hoạt động trên Android 5, nhưng nó không còn hoạt động trên Android 6. Dù có hay không root, cài đặt sẽ không thay đổi và giữ nguyên như được định cấu hình trên hệ thống. Nó có thể có liên quan đến việc không location_providers_allowedđược dùng nữa ( developer.android.com/reference/android/provider/ mẹo ). Ý tưởng?
gw0

Nếu bạn chỉ muốn bật / tắt chức năng GPS, bạn có thể truy cập trang Cài đặt vị trí, sau đó nhấp vào nút chuyển đổi. Thao tác này cũng có thể đạt được bằng lệnh : adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS, sau đó nhấp vào nút chuyển đổi.
Eddy

13

Dành cho Android 6.0

Để cho phép sử dụng:

Đối với GPS: adb shell settings put secure location_providers_allowed +gps

Đối với mạng: adb shell settings put secure location_providers_allowed +network

Để vô hiệu hóa:

GPS: adb shell settings put secure location_providers_allowed -gps

Đối với mạng: adb shell settings put secure location_providers_allowed -network


Điều này làm việc cho tôi, không phải là câu trả lời được chấp nhận.
Matt D

Cảm ơn, nó hoạt động. Có dù sao chúng ta có thể bật / tắt gps và mạng bằng lệnh adb một dòng. Tôi cần nó cho locaton độ chính xác cao. gps + mạng = độ chính xác cao
Suban Dhyako

4

Dịch vụ định vị Android đi kèm với các tùy chọn khác nhau:

1) Độ chính xác cao: gps, network

Cho phép: adb shell settings put secure location_providers_allowed +gps,network

Vô hiệu hóa: adb shell settings put secure location_providers_allowed -gps,network

2) Chỉ điện thoại: gps

Cho phép: adb shell settings put secure location_providers_allowed +gps

Vô hiệu hóa: adb shell settings put secure location_providers_allowed -gps

3) Tiết kiệm pin: network

Cho phép: adb shell settings put secure location_providers_allowed +network

Vô hiệu hóa: adb shell settings put secure location_providers_allowed -network


0

location_providers_allowed không còn hoạt động cho Android 10 (API cấp 29).

Thay vào đó, bạn có thể thiết lập location_modeđể LOCATION_MODE_HIGH_ACCURACYvới giá trị là 3:

adb shell settings put secure location_mode 3

LƯU Ý: Có thể sẽ không hoạt động> v29 vì điều này đã bị phản đối vì các tài liệu trên Chế độ vị trí đề cập:

Hằng số này không được chấp nhận ở cấp độ API 28. Các phương pháp ưa thích để kiểm tra chế độ vị trí và lắng nghe các thay đổi là thông qua LocationManager#isLocationEnabled()LocationManager#MODE_CHANGED_ACTION.

Không biết một cách lập trình để làm điều này thông qua vỏ sẽ là gì khi hằng số này biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.