การตรวจจับโซนเวลาของสถานที่

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

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

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

  • ตรรกะการตรวจหาเขตเวลาในเซิร์ฟเวอร์ระบบ
  • ตัวเลือกที่ผู้ใช้สามารถเข้าถึงได้ในการตั้งค่า ซึ่งเปิดตัวใน Android 12 เพื่อให้ผู้ใช้สามารถเลือกระหว่างกลไกการตรวจจับเขตเวลาของโทรศัพท์และตำแหน่งได้
  • ระบบปลั๊กอินสำหรับส่วนประกอบที่ทำการตรวจจับตำแหน่งและการทำแผนที่โซนเวลา ปลั๊กอินเรียกว่า Location Time Zone Provider (LTZP) และสามารถมีได้ถึงสองปลั๊กอินในอุปกรณ์
  • การใช้งาน LTZP อ้างอิง
  • โฮสต์เครื่องมือเพื่อสร้างชุดข้อมูลอ้างอิงจาก ข้อมูล OpenStreetMap ที่สามารถใช้กับการใช้งานอ้างอิง

ความเป็นส่วนตัวของผู้ใช้

การตรวจจับโซนเวลาของสถานที่ประกอบด้วยคุณสมบัติความเป็นส่วนตัวของผู้ใช้ดังต่อไปนี้:

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

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

ลักษณะการทำงาน

บริการ time_zone_detector กำหนดว่าเมื่อใดควรเปลี่ยนเขตเวลาปัจจุบันของอุปกรณ์ตามคำแนะนำที่ได้รับจาก แหล่งกำเนิด การตรวจจับ

บริการ location_time_zone_manager มีหน้าที่สร้างคำแนะนำสำหรับตำแหน่งต้นทางของ time_zone_detector บริการ location_time_zone_manager ทำงานในกระบวนการเซิร์ฟเวอร์ระบบ

บริการ location_time_zone_manager ไม่มีตรรกะในการตรวจหาเขตเวลา รับผิดชอบในการจัดการวงจรชีวิตของปลั๊กอินหนึ่งหรือสองปลั๊กอินที่เรียกว่า Location Time Zone Providers (LTZP)

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

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

นอกจากนี้ บริการ location_time_zone_manager ยังให้คำแนะนำที่ไม่แน่นอน (หากจำเป็น) เมื่อผู้ใช้ปัจจุบันเปลี่ยนแปลงเพื่อหลีกเลี่ยงการแชร์ข้อมูลตำแหน่งระหว่างผู้ใช้

จากตัวเลือกเหล่านี้ โดยปกติจะใช้เวลาสองสามวินาทีหลังจากเปลี่ยนต้นทางปัจจุบันไปยังตำแหน่ง หรือหลังจากเปลี่ยนผู้ใช้ปัจจุบัน ก่อนที่จะสามารถตรวจจับเขตเวลาได้ นอกจากนี้ยังขึ้นอยู่กับการใช้งานของ LTZP ที่ใช้ด้วย

การนำการตรวจจับเขตเวลาของตำแหน่ง AOSP ไปใช้ช่วยให้ LTZP สูงสุดสอง LTZP หลักและรอง LTZP ตามที่กำหนดไว้ที่นี่:

LTZP หลัก
ทำงานตลอดเวลาเมื่อผู้ใช้อนุญาตให้คุณลักษณะการตรวจหาเขตเวลาของสถานที่ทำงาน
LTZP รอง
ทำงานหาก LTZP หลักรายงานว่าเขตเวลา ไม่แน่นอน รายงานความล้มเหลวอย่างถาวร หรือหมดเวลาในระหว่างการเริ่มต้น หยุดถ้า LTZP หลักส่งข้อเสนอแนะ บางอย่าง

ดังที่แสดงในรูปที่ 1 บริการ time_zone_detector จะได้รับคำแนะนำโซนเวลาจากต้นทางของโทรศัพท์หรือตำแหน่ง ต้นทางของตำแหน่งได้รับคำแนะนำจาก LTZP หลักหรือรอง

โฟลว์ข้อมูลการตรวจจับโซนเวลาของสถานที่

รูปที่ 1 โฟลว์ข้อมูลการตรวจหาโซนเวลาของสถานที่

ข้อกำหนดการกำหนดค่าอุปกรณ์

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

การกำหนดค่าอุปกรณ์

ส่วนนี้อธิบายวิธีที่ผู้ผลิตอุปกรณ์สามารถกำหนดค่าอุปกรณ์เพื่อรองรับการตรวจหาเขตเวลาของตำแหน่ง

การกำหนดค่า AOSP พื้นฐานอยู่ที่ frameworks/base/core/res/res/values/config.xml :

คีย์การกำหนดค่า ค่า AOSP คำอธิบาย
config_enableGeolocationTimeZoneDetection true นี่คือการควบคุมหลักสำหรับคุณลักษณะการตรวจหาเขตเวลาของสถานที่

คุณลักษณะนี้ได้รับการสนับสนุนโดยค่าเริ่มต้นใน AOSP ต้องเปิดใช้งานหรือกำหนดค่า LTZP อย่างน้อยหนึ่งรายการเพื่อให้คุณลักษณะพร้อมใช้งานสำหรับผู้ใช้

การตั้งค่าเป็นเท็จจะปิดใช้งานคุณลักษณะนี้ทั้งหมดสำหรับการบันทึกหน่วยความจำขนาดเล็ก
config_enablePrimaryLocationTimeZoneProvider false สิ่งนี้จะเปิดใช้งาน LTZP หลัก
config_primaryLocationTimeZoneProviderPackageName ตั้งค่านี้เป็นชื่อแพ็คเกจของแอพที่สามารถค้นหาบริการของผู้ให้บริการหลักได้
config_enableSecondaryLocationTimeZoneProvider false สิ่งนี้จะเปิดใช้งาน LTZP รอง
config_secondaryLocationTimeZoneProviderPackageName ตั้งค่านี้เป็นชื่อแพ็คเกจของแอพที่สามารถค้นหาบริการของผู้ให้บริการสำรองได้

โดยค่าเริ่มต้น การกำหนดค่า AOSP มีคีย์ config_enableGeolocationTimeZoneDetection ที่ตั้งค่า true ทำให้รองรับคุณลักษณะการตรวจหาเขตเวลาของตำแหน่ง คุณลักษณะนี้ไม่ปรากฏแก่ผู้ใช้ในขั้นต้น เนื่องจาก AOSP ไม่มีการกำหนดค่า LTZP โดยค่าเริ่มต้น อย่างไรก็ตาม การใช้การกำหนดค่าเริ่มต้นนี้ ผู้ผลิตอุปกรณ์สามารถเปิดใช้งานและจำลอง LTZP จากบรรทัดคำสั่งสำหรับการทดสอบได้ (สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การดีบักและการทดสอบ )

ที่ตั้ง การกำหนดค่าและปรับใช้ผู้ให้บริการโซนเวลา

เมื่อกำหนดค่า LTZP โปรดอ่านคำแนะนำในซอร์สโค้ดสำหรับ frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java ความคิดเห็น Javadoc ให้รายละเอียดเกี่ยวกับบริการ สิทธิ์ที่จำเป็น และการกำหนดค่าอื่นๆ

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

บนอุปกรณ์ที่มี ส่วนประกอบของระบบแบบแยกส่วน (โมดูล) ให้พิจารณาการทำงานร่วมกันระหว่างข้อมูลทางภูมิศาสตร์ที่ใช้โดย LTZP และกฎเขตเวลา (tzdb) ที่ใช้ใน โมดูลข้อมูลเขตเวลา ( com.android.tzdata ) การอัปเดตเป็นอันหนึ่งโดยไม่มีการอัปเดตอีกอันมีแนวโน้มที่จะทำให้เกิดปัญหาเวอร์ชันเอียง สำหรับข้อมูลเพิ่มเติม โปรดดู ข้อควรพิจารณาในการปรับใช้คุณลักษณะ

ผู้ให้บริการโซนเวลาอ้างอิงตำแหน่ง AOSP

AOSP มีการใช้งานผู้ให้บริการโซนเวลาอ้างอิงภายใต้ packages/modules/GeoTZ การใช้งานอ้างอิงนี้ใช้ AOSP API เพื่อกำหนดตำแหน่งของอุปกรณ์และใช้ไฟล์ข้อมูลในอุปกรณ์เพื่อจับคู่ตำแหน่งกับชุดของ ID เขตเวลา

ชุดข้อมูลอ้างอิงที่ได้มาจากโครงการโอเพนซอร์สอื่นๆ จะรวมอยู่ในซอร์สโค้ด สำหรับรายละเอียดเพิ่มเติม โปรดดู ที่ 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