เป็นไปได้หรือไม่ที่จะเปิดใช้งานบริการตำแหน่งผ่านเชลล์


14

เป็นไปได้หรือไม่ที่จะเปิดใช้งานบริการตำแหน่ง (GPS หรือ Google ตำแหน่งเครือข่าย) ผ่าน ADB หรือ Terminal Emulator? ฉันใช้โทรศัพท์รูท

คะแนนพิเศษ: สามารถเปลี่ยนการตั้งค่าอื่น ๆ ที่เกี่ยวข้องกับระบบได้หรือไม่



2
@ อิซซี่ฉันไม่คิดว่ามันจะซ้ำกันทั้งหมด
แมทธิวอ่าน

2
@ Izzy ไม่เกี่ยวข้อง คำถามที่คุณเชื่อมโยงนั้นไม่มีส่วนเกี่ยวข้องกับบริการระบุตำแหน่ง
lorddev

1
@lorddev ไม่พวกเขาไม่ได้กล่าวถึงอย่างชัดเจน แต่คุณสามารถใช้รหัสเดียวกันนี้เพื่อเรียกจุดประสงค์สำหรับบริการระบุตำแหน่ง สิ่งที่ทำให้ฉันสับสนเล็กน้อยคือถ้อยคำของความคิดเห็นของฉันซึ่งแสดงให้เห็นว่า "การตีโดยตรง" (และที่นี่คุณทั้งคู่ถูกต้อง: มันไม่เหมือนกันทุกประการ) ยากที่จะบอกว่าอีกครึ่งปีต่อมาสิ่งที่ฉันมีอยู่ในใจในตอนนั้น ...
อิซซี่

คำตอบ:


12

เป็นไปได้หรือไม่ที่จะเปิดใช้งานบริการตำแหน่ง (GPS หรือ Google ตำแหน่งเครือข่าย) ผ่าน ADB หรือ Terminal Emulator?

คำสั่งคือ:

adb shell settings put secure location_providers_allowed gps

ที่ไหน

  • settingsหากว่าทำให้เกิดการเปลี่ยนแปลงเข้าsettings.db(ส่วนหนึ่งของcom.android.providers.settings)
  • putคือการปรับปรุงที่สำคัญlocation_providers_allowedที่มีค่าในตารางgpssecure

คำสั่งดังกล่าวจะไม่เปิดใช้งานบริการตำแหน่งของ Google ในการเปิดใช้งานให้ใช้คำสั่ง:

adb shell settings put secure location_providers_allowed gps,network

คุณจะเห็นป๊อปอัปเพื่อยอมรับบริการตำแหน่ง ใน Android 4.2.1 ของฉันฉันต้องยอมรับผ่าน GUI หรือinput keyeventทุกครั้งที่เปิดใช้บริการตั้งแต่เริ่มต้น

                                                                    IMG: 4.2.1

อย่างไรก็ตามใน Android 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

สำหรับ Android 6.0

วิธีเปิดใช้งาน:

สำหรับ GPS: adb shell settings put secure location_providers_allowed +gps

สำหรับเครือข่าย: adb shell settings put secure location_providers_allowed +network

วิธีปิดใช้งาน:

จีพีเอส : adb shell settings put secure location_providers_allowed -gps

สำหรับเครือข่าย: adb shell settings put secure location_providers_allowed -network


สิ่งนี้ใช้ได้กับฉันไม่ใช่คำตอบที่ยอมรับได้
TheMonkeyKing

ขอบคุณมันใช้งานได้ มีอยู่แล้วเราสามารถเปิด / ปิดการใช้งาน gps และเครือข่ายด้วยคำสั่ง adb บรรทัดเดียว ฉันต้องการมันเพื่อให้ได้ตำแหน่งที่แม่นยำสูง 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_modeที่จะLOCATION_MODE_HIGH_ACCURACYมีมูลค่า 3:

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.