การตรวจหาเขตเวลาของสถานที่พร้อมใช้งานใน Android 12 ขึ้นไป เป็นฟีเจอร์การตรวจหาเขตเวลาอัตโนมัติที่ไม่บังคับ ซึ่งช่วยให้อุปกรณ์ใช้ข้อมูลตำแหน่งและแผนที่เขตเวลาเพื่อระบุเขตเวลาได้
การตรวจหาเขตเวลาของสถานที่เป็นกลไกทางเลือกสำหรับการตรวจหาเขตเวลาของโทรศัพท์ เนื่องจากฟีเจอร์นี้ไม่จำเป็นต้องใช้โทรศัพท์ จึงอาจรองรับการใช้งานบนอุปกรณ์รูปแบบต่างๆ นอกเหนือจากอุปกรณ์โทรศัพท์เคลื่อนที่
ฟีเจอร์การตรวจหาเขตเวลาของสถานที่ประกอบด้วยคอมโพเนนต์ต่อไปนี้ในแพลตฟอร์ม AOSP
- ตรรกะการตรวจหาเขตเวลาในเซิร์ฟเวอร์ระบบ
ตัวเลือกที่ผู้ใช้เข้าถึงได้ในการตั้งค่า ซึ่งเปิดตัวใน Android 12 เพื่อให้ผู้ใช้เลือกระหว่างกลไกการตรวจหาเขตเวลาจากโทรศัพท์และตำแหน่ง
ระบบปลั๊กอินสําหรับคอมโพเนนต์ที่ทําการตรวจหาตําแหน่งและการกำหนดเขตเวลา ปลั๊กอินนี้เรียกว่าผู้ให้บริการเขตเวลาของตำแหน่ง (LTZP) และปลั๊กอินเหล่านี้มีได้สูงสุด 2 ประเภทในอุปกรณ์ 1 เครื่อง แพลตฟอร์มนี้มี 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 หรือ 2 รายการ
เมื่อไม่จําเป็นต้องตรวจหาเขตเวลาของสถานที่ ระบบจะไม่เริ่ม LTZP ซึ่งหมายความว่าระบบตรวจหาเขตเวลาของสถานที่จะไม่ขอให้ LTZP ติดตามตำแหน่งของอุปกรณ์ เว้นแต่จะมีคำสั่งให้ดำเนินการอย่างชัดเจน สาเหตุบางส่วนของลักษณะการทำงานนี้ ได้แก่
- ต่างจากสัญญาณโทรศัพท์ที่ได้รับแบบพาสซีฟซึ่งเป็นส่วนหนึ่งของการทํางานตามปกติของระบบโทรศัพท์ ตำแหน่งสามารถขอจากผู้ให้บริการตำแหน่งของ Android แบบแอ็กทีฟได้และอาจใช้พลังงานเพิ่มขึ้น
- การตั้งค่าตำแหน่งจะกำหนดขอบเขตระดับผู้ใช้ และ Android ต้องเป็นไปตามการตั้งค่าปัจจุบันของผู้ใช้
- การรับตำแหน่งของอุปกรณ์มีความละเอียดอ่อนด้านความเป็นส่วนตัว
นอกจากนี้ บริการ location_time_zone_manager
จะแสดงคำแนะนำที่ไม่แน่ใจ (หากจำเป็น) เมื่อผู้ใช้ปัจจุบันเปลี่ยนการตั้งค่าเพื่อหลีกเลี่ยงการแชร์ข้อมูลตำแหน่งระหว่างผู้ใช้
ตัวเลือกเหล่านี้จึงทําให้ระบบใช้เวลา 2-3 วินาทีหลังจากเปลี่ยนอัลกอริทึมปัจจุบันเป็นตําแหน่ง หรือหลังจากเปลี่ยนผู้ใช้ปัจจุบันก่อนที่จะตรวจหาเขตเวลาได้ การดำเนินการนี้ยังขึ้นอยู่กับการติดตั้งใช้งาน LTZP ที่ใช้ด้วย
การติดตั้งใช้งานการตรวจหาเขตเวลาของสถานที่ใน AOSP อนุญาตให้ใช้ LTZP ได้สูงสุด 2 รายการ ได้แก่ LTZP หลักและรองตามที่ระบุไว้ที่นี่
- LTZP หลัก
- ทำงานตลอดเวลาเมื่อผู้ใช้อนุญาตให้ฟีเจอร์การตรวจหาเขตเวลาของสถานที่ทำงาน
- LTZP รอง
- เรียกใช้หาก LTZP หลักรายงานว่าเขตเวลาไม่แน่นอน รายงานความล้มเหลวถาวร หรือหมดเวลาในระหว่างการเริ่มต้น หยุดหาก LTPZ หลักส่งคําแนะนําบางอย่าง
ดังที่แสดงในรูปที่ 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 จากบรรทัดคำสั่งเพื่อทดสอบได้ (ดูข้อมูลเพิ่มเติมได้ที่แก้ไขข้อบกพร่องและทดสอบ)
LTZP status API
ใน 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
) การอัปเดตข้อมูลอย่างใดอย่างหนึ่งโดยไม่อัปเดตอีกอย่างมีแนวโน้มที่จะทำให้เกิดปัญหาความคลาดเคลื่อนของเวอร์ชัน ดูข้อมูลเพิ่มเติมได้ที่ข้อควรพิจารณาในการนำฟีเจอร์มาใช้
การอ้างอิง AOSP LTZP
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