การตรวจหาเขตเวลาของสถานที่ ซึ่งพร้อมใช้งานใน Android 12 ขึ้นไป เป็นฟีเจอร์การตรวจหาเขตเวลาอัตโนมัติที่ไม่บังคับ ซึ่งช่วยให้อุปกรณ์ใช้ข้อมูลตำแหน่งและ แผนที่เขตเวลาเพื่อกำหนดเขตเวลาได้
การตรวจหาเขตเวลาของสถานที่เป็นกลไกทางเลือกแทนการตรวจหาเขตเวลาของโทรศัพท์ เนื่องจากฟีเจอร์นี้ไม่จำเป็นต้องใช้โทรศัพท์ จึงรองรับในอุปกรณ์ที่มีรูปแบบต่างๆ นอกเหนือจากอุปกรณ์โทรศัพท์มือถือ
ฟีเจอร์การตรวจหาเขตเวลาของสถานที่ประกอบด้วยคอมโพเนนต์ต่อไปนี้ในแพลตฟอร์ม AOSP
- ตรรกะการตรวจหาเขตเวลาในเซิร์ฟเวอร์ของระบบ
ตัวเลือกที่ผู้ใช้เข้าถึงได้ในการตั้งค่า ซึ่งเปิดตัวใน Android 12 เพื่อให้ผู้ใช้เลือกได้ระหว่างกลไกการตรวจหาเขตเวลาของโทรศัพท์และตำแหน่ง
ระบบปลั๊กอินสำหรับคอมโพเนนต์ที่ตรวจหาตำแหน่งและแมปเขตเวลา ปลั๊กอินนี้เรียกว่า Location Time Zone Provider (LTZP) และอุปกรณ์จะมีได้สูงสุด 2 รายการ แพลตฟอร์มนี้มี API ของระบบ ที่ต้องใช้เพื่อติดตั้งใช้งาน LTZP
การใช้งาน LTZP อ้างอิง
เครื่องมือโฮสต์เพื่อสร้างชุดข้อมูลอ้างอิงจากข้อมูล Open Street Map (OSM) ที่ใช้กับการติดตั้งใช้งานอ้างอิงได้
ความเป็นส่วนตัวของผู้ใช้
การตรวจหาเขตเวลาของสถานที่ประกอบด้วยฟีเจอร์ความเป็นส่วนตัวของผู้ใช้ต่อไปนี้
เมื่อมีปุ่มเปิด/ปิดเพื่อเลือกอัลกอริทึมตำแหน่ง ผู้ใช้จะปิดอัลกอริทึมตำแหน่งได้ทุกเมื่อ
ระบบจะไม่แชร์คำแนะนำเขตเวลาที่ได้จากตำแหน่งระหว่างผู้ใช้ใน อุปกรณ์
ผู้ใช้สามารถควบคุมการตรวจหาตำแหน่งสำหรับการตรวจหาเขตเวลาได้อย่างชัดเจน ผ่านหน้าจอการตั้งค่าวันที่และเวลา ผู้ใช้ไม่จำเป็นต้อง ให้สิทธิ์อย่างชัดแจ้งผ่านกล่องโต้ตอบสิทธิ์
ระบบจะไม่ส่งต่อข้อมูลตำแหน่งของอุปกรณ์ไปยังบริการแพลตฟอร์ม Android แต่จะเกิดสิ่งต่อไปนี้แทน
- บริการตรวจหาเขตเวลาจะได้รับรหัสเขตเวลาจาก LTZP ไม่ใช่ตำแหน่งของอุปกรณ์ นี่คือ API ขั้นต่ำที่จำเป็นต่อการรองรับการตรวจหาเขตเวลาของสถานที่
- ผู้ติดตั้งระบบจะควบคุมการทำงานของ LTZP แต่ละรายการ การติดตั้งใช้งาน LTZP สามารถใช้ข้อมูลแผนที่เขตเวลาที่จัดเก็บไว้ในอุปกรณ์ Android ทั้งหมด ใช้เซิร์ฟเวอร์ หรือใช้แนวทางแบบผสม
ลักษณะการทำงาน
บริการ time_zone_detector
จะพิจารณาเวลาที่จะเปลี่ยนเขตเวลาปัจจุบันของอุปกรณ์ตามคำแนะนำที่ได้รับจากอัลกอริทึมการตรวจหา
location_time_zone_manager
บริการมีหน้าที่สร้าง
คำแนะนำสำหรับอัลกอริทึมตำแหน่งของ time_zone_detector
location_time_zone_manager
บริการจะทำงานในกระบวนการเซิร์ฟเวอร์ของระบบ
location_time_zone_manager
ไม่มีตรรกะการตรวจหาเขตเวลา
บริการนี้มีหน้าที่รับผิดชอบในการจัดการวงจรของปลั๊กอิน LTZP อย่างน้อย 1 รายการ
เมื่อไม่จำเป็นต้องใช้การตรวจหาเขตเวลาของสถานที่ ระบบจะไม่เริ่ม LTZP ซึ่งหมายความว่าระบบตรวจหาเขตเวลาของสถานที่ตั้งจะไม่ขอให้ LTZP ติดตามตำแหน่งของอุปกรณ์ เว้นแต่จะจำเป็นอย่างยิ่ง สาเหตุบางส่วน ของการทำงานนี้มีดังนี้
- ตำแหน่งต่างจากสัญญาณโทรศัพท์ที่ได้รับแบบพาสซีฟซึ่งเป็นส่วนหนึ่งของการดำเนินการโทรศัพท์ตามปกติ โดยสามารถขอตำแหน่งจากผู้ให้บริการตำแหน่งของ Android ได้อย่างกระตือรือร้นและอาจใช้พลังงานเพิ่มเติม
- การตั้งค่าตำแหน่งมีขอบเขตเป็นผู้ใช้ และ Android ต้องเป็นไปตามการตั้งค่าปัจจุบันของผู้ใช้
- การขอตำแหน่งของอุปกรณ์เป็นเรื่องที่เกี่ยวข้องกับความเป็นส่วนตัว
นอกจากนี้ บริการ location_time_zone_manager
ยังให้คำแนะนำที่ไม่แน่นอน (หากจำเป็น) เมื่อผู้ใช้ปัจจุบันเปลี่ยนการตั้งค่าเพื่อหลีกเลี่ยงการแชร์ข้อมูลตำแหน่งระหว่างผู้ใช้
ด้วยเหตุนี้ ระบบจึงต้องใช้เวลา 2-3 วินาทีหลังจากเปลี่ยนอัลกอริทึมปัจจุบันเป็นอัลกอริทึมตามตำแหน่ง หรือหลังจากเปลี่ยนผู้ใช้ปัจจุบัน ก่อนที่จะตรวจหาเขตเวลาได้ นอกจากนี้ ยังขึ้นอยู่กับการติดตั้งใช้งาน LTZP ที่ใช้ด้วย
การติดตั้งใช้งานการตรวจหาเขตเวลาของสถานที่ใน AOSP อนุญาตให้ใช้ LTZP ได้สูงสุด 2 รายการ ได้แก่ LTZP หลักและ LTZP รองตามที่กำหนดไว้ที่นี่
- LTZP หลัก
- ทำงานตลอดเวลาเมื่อผู้ใช้ได้อนุญาตให้ฟีเจอร์การตรวจหาเขตเวลาตามตำแหน่งทำงาน
- LTZP รอง
- ทำงานหาก LTZP หลักรายงานว่าเขตเวลาไม่แน่นอน รายงานว่าล้มเหลวอย่างถาวร หรือหมดเวลาในระหว่างการเริ่มต้น หยุดหาก LTZP หลักส่งคำแนะนำบางอย่าง
ดังที่แสดงในรูปที่ 1 time_zone_detector
บริการจะได้รับคำแนะนำเกี่ยวกับเขตเวลา
จากอัลกอริทึมโทรศัพท์หรือตำแหน่ง อัลกอริทึมตำแหน่ง
จะรับคำแนะนำจาก LTZP หลักหรือรอง
รูปที่ 1 ขั้นตอนการไหลของข้อมูลการตรวจหาเขตเวลาของสถานที่
ข้อกำหนดในการกำหนดค่าอุปกรณ์
หากต้องการรองรับฟีเจอร์เขตเวลาตามตำแหน่ง อุปกรณ์ต้องได้รับการกำหนดค่าด้วย LTZP ที่อุปกรณ์ใช้ได้ อุปกรณ์ต้องเปิดใช้และกำหนดค่า LTZP อย่างน้อย 1 รายการเพื่อให้การตรวจหาเขตเวลาตามตำแหน่งทำงานได้และผู้ใช้มองเห็นได้ในการตั้งค่า
การกำหนดค่าอุปกรณ์
ส่วนนี้จะอธิบายวิธีที่ผู้ผลิตอุปกรณ์สามารถกำหนดค่าอุปกรณ์ให้รองรับ การตรวจหาเขตเวลาตามตำแหน่ง
การกำหนดค่า AOSP พื้นฐานอยู่ที่
frameworks/base/core/res/res/values/config.xml
คีย์การกำหนดค่า | ค่า AOSP | คำอธิบาย |
---|---|---|
config_enableGeolocationTimeZoneDetection |
true |
นี่คือการควบคุมหลักสำหรับฟีเจอร์การตรวจหาเขตเวลาของสถานที่
ฟีเจอร์นี้รองรับโดยค่าเริ่มต้นใน AOSP ต้องเปิดใช้หรือกำหนดค่า LTZP อย่างน้อย 1 รายการเพื่อให้ผู้ใช้ใช้ฟีเจอร์นี้ได้ การตั้งค่าเป็น false จะปิดใช้ฟีเจอร์นี้ทั้งหมดเพื่อ
ประหยัดหน่วยความจำเล็กน้อย |
config_enablePrimaryLocationTimeZoneProvider |
false |
ซึ่งจะเป็นการเปิดใช้ LTZP หลัก |
config_primaryLocationTimeZoneProviderPackageName |
ตั้งค่านี้เป็นชื่อแพ็กเกจของแอปที่พบบริการของผู้ให้บริการรายหลัก | |
config_enableSecondaryLocationTimeZoneProvider |
false |
ซึ่งจะเปิดใช้ LTZP รอง |
config_secondaryLocationTimeZoneProviderPackageName |
ตั้งค่านี้เป็นชื่อแพ็กเกจของแอปที่พบ บริการของผู้ให้บริการรอง |
โดยค่าเริ่มต้น การกำหนดค่า AOSP จะมีคีย์
config_enableGeolocationTimeZoneDetection
ตั้งค่าเป็น true
ซึ่งเปิดใช้การรองรับ
ฟีเจอร์การตรวจหาเขตเวลาของสถานที่ ผู้ใช้จะไม่เห็นฟีเจอร์นี้ในตอนแรกเนื่องจาก AOSP ไม่ได้รวมการกำหนดค่า LTZP ไว้โดยค่าเริ่มต้น
อย่างไรก็ตาม การใช้การกำหนดค่าเริ่มต้นนี้จะช่วยให้ผู้ผลิตอุปกรณ์เปิดใช้และ
จำลอง LTZP จากบรรทัดคำสั่งเพื่อทำการทดสอบได้ (ดูข้อมูลเพิ่มเติมได้ที่แก้ไขข้อบกพร่องและทดสอบ)
API สถานะ LTZP
ใน Android 14 นั้น LTZP API รองรับข้อมูลสถานะการรายงาน LTZP ซึ่งจะช่วยให้ LTZP รายงานปัญหาที่แพลตฟอร์มอาจตรวจไม่พบได้ด้วยตนเอง เนื่องจากคอมโพเนนต์การตรวจหาเขตเวลาของแพลตฟอร์มไม่ได้เกี่ยวข้องโดยตรงกับการตรวจหาตำแหน่งหรือเขตเวลาในอัลกอริทึมตำแหน่ง
ความสามารถในการรายงานว่าพฤติกรรมของ LTZP ลดลงเนื่องจากสภาพแวดล้อมของอุปกรณ์มีประโยชน์เมื่อรองรับโหมดสำรองโทรศัพท์ ตัวอย่างเช่น หาก LTZP ของบุคคลที่สามที่ต้องอาศัยการตั้งค่าหรือสิทธิ์ที่กำหนดเองเพื่อให้การตรวจหาตำแหน่งทำงานได้กำลังทำงานในโหมดที่ประสิทธิภาพลดลงหรือถูกปิดใช้โดยการตั้งค่าอุปกรณ์ปัจจุบัน LTZP จะรายงานข้อมูลสถานะนี้ไปยังคอมโพเนนต์แพลตฟอร์มภายใน เช่น แอปการตั้งค่า ผ่านเมธอด reportSuggestion
จากนั้นแอปการตั้งค่าจะแจ้งเตือนผู้ใช้ผ่านสตริงที่ปรับแต่งได้หรือ
การปรับแต่งว่ามีการตั้งค่าที่ต้องเปลี่ยนเพื่อให้
อัลกอริทึมตำแหน่งทำงานได้ดีหรือทำงานได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับสถานะที่ LTZP รายงานได้ที่
TimeZoneProviderStatus
การกำหนดค่าและการติดตั้งใช้งาน LTZP
เมื่อกำหนดค่า LTZP ให้อ่านวิธีการในซอร์สโค้ดสำหรับ
frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java
ความคิดเห็น Javadoc จะให้รายละเอียดเกี่ยวกับบริการ สิทธิ์ที่จำเป็น และ
การกำหนดค่าอื่นๆ
หากต้องการกำหนดค่า LTZP ผู้ผลิตอุปกรณ์ต้องเลือกกระบวนการของแอปเพื่อโฮสต์ บริการของ LTZP การมีกระบวนการเฉพาะสำหรับ LTZP เป็นค่าใช้จ่ายที่สูง ในอุดมคติ กระบวนการของแอปที่เลือกควรเป็นกระบวนการที่ทำงานตลอดเวลา เช่น เซิร์ฟเวอร์ระบบ
ในอุปกรณ์ที่มีคอมโพเนนต์ระบบแบบแยกส่วน (โมดูล) ให้พิจารณา
การโต้ตอบระหว่างข้อมูลทางภูมิศาสตร์ที่ LTZP ใช้กับกฎเขตเวลา (tzdb)
ที่อยู่ในโมดูลข้อมูลเขตเวลา (com.android.tzdata
) การอัปเดตโมดูลหนึ่ง
โดยไม่อัปเดตอีกโมดูลหนึ่งอาจทำให้เกิดปัญหาความคลาดเคลื่อนของเวอร์ชัน ดูข้อมูลเพิ่มเติมได้ที่ข้อควรพิจารณาในการนำฟีเจอร์มาใช้
LTZP อ้างอิงของ AOSP
AOSP มีการติดตั้งใช้งาน LTZP อ้างอิงภายใต้
packages/modules/GeoTZ
การใช้งานอ้างอิงนี้ใช้ AOSP API เพื่อ
ระบุตำแหน่งของอุปกรณ์ และใช้ไฟล์ข้อมูลในอุปกรณ์เพื่อแมป
ตำแหน่งกับชุดรหัสเขตเวลา
ชุดข้อมูลอ้างอิงที่ได้จากโปรเจ็กต์โอเพนซอร์สอื่นๆ จะรวมอยู่ในซอร์สโค้ดด้วย ดูรายละเอียดเพิ่มเติมได้ที่ README.md และไฟล์ LICENSE ต่างๆ
แก้ไขข้อบกพร่องและทดสอบ
ส่วนต่อไปนี้จะอธิบายคำสั่งเชลล์สำหรับการแก้ไขข้อบกพร่องและการทดสอบฟีเจอร์ การตรวจหาเขตเวลาของสถานที่ตั้ง
โต้ตอบกับบริการ location_time_zone_manager
เมื่ออุปกรณ์ที่ใช้ Android 12 ขึ้นไปรองรับอัลกอริทึมตำแหน่ง Android จะสร้างอินสแตนซ์ของlocation_time_zone_manager
บริการเมื่อบูต
หากต้องการส่งออกสถานะปัจจุบันของ location_time_zone_manager
ให้ใช้คำสั่งต่อไปนี้
adb shell cmd location_time_zone_manager dump
หากต้องการดูชุดตัวเลือกบรรทัดคำสั่งแบบละเอียดเพื่อช่วยในการทดสอบ ให้ใช้คำสั่งต่อไปนี้
adb shell cmd location_time_zone_manager help
เอาต์พุตความช่วยเหลือยังอธิบายdevice_config
พร็อพเพอร์ตี้บริการที่ใช้
เพื่อส่งผลต่อลักษณะการทำงานของ time_zone_detector
สำหรับการทดสอบหรือใน
การผลิตได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่หัวข้อกำหนดค่าอุปกรณ์โดยใช้บริการ
device_config
การติดตั้งใช้งาน LTZP สามารถให้การสนับสนุนการแก้ไขข้อบกพร่องหรือการทดสอบของตนเองได้ เช่น คุณใช้คำสั่งต่อไปนี้เพื่อแก้ไขข้อบกพร่องของ LTZP อ้างอิงของ AOSP ได้เมื่อ ลงทะเบียนในกระบวนการเซิร์ฟเวอร์ระบบ
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService