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

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

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

คุณลักษณะการตรวจหาเขตเวลาของตำแหน่งมีองค์ประกอบต่อไปนี้ใน แพลตฟอร์ม AOSP:

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

  • ระบบปลั๊กอินสำหรับคอมโพเนนต์ที่ตรวจหาตำแหน่งและ การแมปเขตเวลา ปลั๊กอินที่เรียกว่าผู้ให้บริการเขตเวลาของตำแหน่ง (LTZP) และสามารถมีได้ไม่เกิน 2 อย่างในอุปกรณ์ 1 เครื่อง แพลตฟอร์ม ให้ API ของระบบที่ต้องใช้งาน LTZP

  • การใช้ LTZP อ้างอิง

  • เครื่องมือโฮสต์เพื่อสร้างชุดข้อมูลอ้างอิงจาก ข้อมูล OpenStreetMap ที่สามารถใช้ร่วมกับการติดตั้งข้อมูลอ้างอิงได้

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

การตรวจหาเขตเวลาของสถานที่จะมีฟีเจอร์ความเป็นส่วนตัวของผู้ใช้ดังต่อไปนี้

  • เมื่อมีการเปิด/ปิดเพื่อเลือกอัลกอริทึมตำแหน่ง ผู้ใช้จะปิดได้ อัลกอริทึมตำแหน่งได้ทุกเมื่อ

  • จะไม่มีการแชร์คำแนะนำเขตเวลาที่มาจากตำแหน่งระหว่างผู้ใช้ใน อุปกรณ์

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

  • ระบบจะไม่ส่งข้อมูลตำแหน่งของอุปกรณ์ไปยังบริการของแพลตฟอร์ม Android แต่จะเกิดเหตุการณ์ต่อไปนี้แทน

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

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

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

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

บริการ location_time_zone_manager ไม่มีการตรวจหาเขตเวลาใดๆ มีหน้าที่จัดการวงจรของปลั๊กอิน 1 หรือ 2 รายการที่เรียกว่า ผู้ให้บริการเขตเวลาของสถานที่ตั้ง (LTZP)

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

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

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

API สถานะ LTZP

ใน Android 14 LTZP API รองรับ 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 และไฟล์ใบอนุญาตต่างๆ

แก้ไขข้อบกพร่องและทดสอบ

ส่วนต่อไปนี้จะอธิบายคำสั่ง Shell สำหรับการแก้ไขข้อบกพร่องและทดสอบ ของตำแหน่งในการตรวจหาเขตเวลา

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

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService