Apakah mungkin untuk mengaktifkan Layanan Lokasi melalui Shell?

14

Apakah mungkin untuk mengaktifkan Layanan Lokasi (GPS atau Google NetworkLocation) melalui ADB atau Terminal Emulator? Saya di Telepon yang di-root.

Poin Tambahan: Apakah mungkin untuk mengubah pengaturan terkait sistem lainnya?

minicookie
sumber
2
@Izzy Saya tidak berpikir itu sepenuhnya duplikat.
Matius Baca
2
@ Izzy tidak terkait. Pertanyaan yang Anda tautkan tidak ada hubungannya dengan layanan lokasi.
lorddev
1
@ Lorddev Tidak, mereka tidak disebutkan secara eksplisit. Tetapi Anda dapat menggunakan kode yang sama untuk memanggil maksud untuk layanan lokasi. Yang sedikit membingungkan saya adalah ungkapan komentar saya, yang menunjukkan "pukulan langsung" (dan di sini Anda berdua benar: itu tidak persis sama). Sulit dikatakan, setengah tahun kemudian, apa yang ada dalam pikiran saya saat itu ...
Izzy

Jawaban:

12

Apakah mungkin untuk mengaktifkan Layanan Lokasi (GPS atau Google NetworkLocation) melalui ADB atau Terminal Emulator?

Perintahnya adalah:

adb shell settings put secure location_providers_allowed gps

dimana,

  • settingsakan membuat perubahan menjadi settings.db(bagian dari com.android.providers.settings)
  • putadalah memperbarui kunci location_providers_alloweddengan nilai gpsdalam tabel secure.

Perintah di atas tidak akan mengaktifkan Layanan Lokasi Google. Untuk mengaktifkannya juga, berikan perintah:

adb shell settings put secure location_providers_allowed gps,network

Anda akan ditampilkan sembulan untuk menyetujui Layanan Lokasi. Di Android 4.2.1 saya, saya harus setuju melalui GUI atau input keyeventsetiap kali saya mengaktifkan layanan dari awal.

                                                                    IMG: 4.2.1

Namun, di Android 5.0 saya, saya dapat menyimpan pengaturan di dialog dan eksekusi perintah membuat hal-hal dilakukan dengan sempurna dari waktu berikutnya.

                                                                    IMG: 5.0

Beberapa perangkat seperti yang Lollipop memiliki tiga mode Lokasi, dan nilai yang relevan untuk diteruskan dalam perintah di atas adalah:

  • Akurasi tinggi: gps,wifi,networkatau gps,network(jika Anda tidak ingin Wi-Fi diaktifkan)
  • Hemat baterai: wifi,networkatau networkhanya
  • Hanya perangkat: gps

Untuk menonaktifkan mode Lokasi

adb shell settings put secure location_providers_allowed ' '

Apakah mungkin untuk mengubah pengaturan terkait sistem lainnya?

Lihat :

Tapi saya sudah memberikan ide besar menggunakan settings put.

Firelord
sumber
Apakah mungkin untuk mencapai hal yang sama, tetapi dari konsol perangkat, bukan melalui ADB komputer eksternal?
davide
1
Ya, tentu saja. Anda akan memerlukan akses root atau ADB nirkabel yang berjalan pada perangkat. Lihatlah jawaban ini sebagai contoh. Anda akan mendapat ide.
Firelord
Ini digunakan untuk Android 5, tetapi tidak lagi di Android 6. Dengan atau tanpa root, pengaturan tidak berubah dan tetap sama seperti yang dikonfigurasi pada sistem. Mungkin ada hubungannya dengan location_providers_allowedmenjadi usang ( developer.android.com/reference/android/provider/… ). Ide ide?
gw0
Jika Anda hanya ingin mengaktifkan / menonaktifkan fungsi GPS, Anda dapat pergi ke halaman pengaturan Lokasi, lalu klik tombol sakelar. Operasi ini juga dapat dicapai dengan perintah:, adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSlalu klik tombol sakelar.
Eddy
13

Untuk Android 6.0

Untuk Mengaktifkan penggunaan:

Untuk GPS: adb shell settings put secure location_providers_allowed +gps

Untuk Jaringan: adb shell settings put secure location_providers_allowed +network

Untuk Menonaktifkan:

GPS: adb shell settings put secure location_providers_allowed -gps

Untuk Jaringan: adb shell settings put secure location_providers_allowed -network

Aditya S
sumber
Ini bekerja untuk saya, bukan jawaban yang diterima.
TheMonkeyKing
Terima kasih, ini berhasil. Adakah di sana kita dapat mengaktifkan / menonaktifkan gps dan jaringan dengan satu perintah adb baris. Saya membutuhkannya untuk locaton dengan akurasi tinggi. gps + network = akurasi tinggi
Suban Dhyako
4

Layanan Lokasi Android hadir dengan berbagai opsi:

1) Akurasi Tinggi: gps, network

Memungkinkan: adb shell settings put secure location_providers_allowed +gps,network

Nonaktifkan: adb shell settings put secure location_providers_allowed -gps,network

2) Hanya Telepon: gps

Memungkinkan: adb shell settings put secure location_providers_allowed +gps

Nonaktifkan: adb shell settings put secure location_providers_allowed -gps

3) Hemat Baterai: network

Memungkinkan: adb shell settings put secure location_providers_allowed +network

Nonaktifkan: adb shell settings put secure location_providers_allowed -network

Parth Naik
sumber
0

location_providers_allowed tidak lagi berfungsi untuk Android 10 (API level 29).

Sebagai gantinya, Anda dapat mengatur location_modeke LOCATION_MODE_HIGH_ACCURACYdengan nilai 3:

adb shell settings put secure location_mode 3

CATATAN: Mungkin tidak akan berfungsi> v29 karena ini sudah usang karena dokumen pada Mode Lokasi menyebutkan:

Konstanta ini sudah tidak digunakan lagi di API level 28. Metode yang disukai untuk memeriksa mode lokasi dan mendengarkan perubahan adalah melalui LocationManager#isLocationEnabled()dan LocationManager#MODE_CHANGED_ACTION.

Tidak tahu apa cara terprogram untuk melakukan ini melalui shell akan begitu konstanta ini menghilang.

yang lain
sumber