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

การตรวจหาเขตเวลาของสถานที่พร้อมใช้งานใน Android 12 ขึ้นไป เป็นฟีเจอร์การตรวจหาเขตเวลาอัตโนมัติที่ไม่บังคับ ซึ่งช่วยให้อุปกรณ์ใช้ข้อมูลตำแหน่งและแผนที่เขตเวลาเพื่อระบุเขตเวลาได้

การตรวจหาเขตเวลาของสถานที่เป็นกลไกทางเลือกสำหรับการตรวจหาเขตเวลาของโทรศัพท์ เนื่องจากฟีเจอร์นี้ไม่จำเป็นต้องใช้โทรศัพท์ อุปกรณ์รูปแบบต่างๆ จึงรองรับฟีเจอร์นี้ได้นอกเหนือจากอุปกรณ์โทรศัพท์มือถือ

ฟีเจอร์การตรวจหาเขตเวลาของสถานที่ประกอบด้วยคอมโพเนนต์ต่อไปนี้ในแพลตฟอร์ม AOSP

  • ตรรกะการตรวจหาเขตเวลาในเซิร์ฟเวอร์ระบบ
  • ตัวเลือกที่ผู้ใช้เข้าถึงได้ในการตั้งค่า ซึ่งเปิดตัวใน Android 12 เพื่อให้ผู้ใช้เลือกระหว่างกลไกการตรวจหาเขตเวลาจากโทรศัพท์และตำแหน่ง

  • ระบบปลั๊กอินสําหรับคอมโพเนนต์ที่ทําการตรวจหาตําแหน่งและการกำหนดเขตเวลา ปลั๊กอินนี้เรียกว่าผู้ให้บริการเขตเวลาของตำแหน่ง (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 หรือ 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) การอัปเดตข้อมูลอย่างใดอย่างหนึ่งโดยไม่อัปเดตอีกอย่างมีแนวโน้มที่จะทำให้เกิดปัญหาความคลาดเคลื่อนของเวอร์ชัน ดูข้อมูลเพิ่มเติมได้ที่ข้อควรพิจารณาในการนำฟีเจอร์มาใช้

ข้อมูลอ้างอิง 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