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

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