การตรวจหาเขตเวลาของสถานที่

การตรวจหาเขตเวลาของสถานที่พร้อมใช้งานใน 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