זיהוי אזור הזמן של המיקום

זיהוי אזור הזמן של המיקום, זמין ב-Android 12 היא תכונה אופציונלית לזיהוי אוטומטי של אזור הזמן, שמאפשרת מכשירים כדי לקבוע את אזור הזמן באמצעות נתוני המיקום ומפת אזור הזמן שלהם.

זיהוי אזור הזמן של המיקום הוא מנגנון חלופי לאזור הזמן של הטלפוניה זיהוי. כי זה לא נדרשת טלפוניה. אפשר להשתמש בתכונה הזו במכשירים באמצעי צורה שונים, בנוסף למכשירי טלפוניה ניידים.

התכונה זיהוי אזור זמן של המיקום מורכבת מהרכיבים הבאים פלטפורמת AOSP:

  • לוגיקה של זיהוי אזור זמן בשרת המערכת.
  • אפשרות נגישה למשתמש ב'הגדרות', שהושקה ב- Android 12, כדי לאפשר למשתמשים לבחור מבין של שירותי טלפוניה ושל אזור הזמן במיקום.

  • מערכת פלאגין לרכיבים שמבצעים את זיהוי המיקום מיפוי של אזורי זמן. פלאגין נקרא ספק אזור זמן מיקום. (LTZP) ויכול להיות שיהיו עד שניים מהם במכשיר. הפלטפורמה מספקת ממשקי API של המערכת שבהם צריך להשתמש כדי להטמיע LTZP.

  • הטמעת LTZP.

  • כלים למארחים ליצירת מערך נתוני עזר נתוני OpenStreetMap שאפשר להשתמש בו עם ההטמעה של קובץ העזר.

פרטיות המשתמשים

זיהוי אזור הזמן של המיקום כולל את התכונות הבאות לשמירה על פרטיות המשתמשים:

  • כשיש מתג לבחירת אלגוריתם המיקום, המשתמשים יכולים להשבית את התכונה את אלגוריתם המיקום.

  • הצעות לאזורי זמן הנגזרות ממיקום לא משותפות בין משתמשים במכשיר.

  • המשתמשים יכולים לשלוט בזיהוי המיקום לצורך זיהוי של אזור הזמן ישירות במסך ההגדרות של תאריך ושעה. למשתמשים אין כדי להעניק הרשאה באופן מפורש באמצעות תיבת דו-שיח של הרשאה.

  • פרטי המיקום של המכשיר לא מועברים לשירותי הפלטפורמה של Android. במקום זאת:

    • שירותים לזיהוי אזור זמן נשלחים רק מזהי אזורי זמן לפי ה-LTZP, לא לפי מיקום המכשיר. זהו ה-API המינימלי שנדרש כדי לתמוך בזיהוי אזור הזמן של המיקום.
    • הפעולה של LTZPs בודדים נשארת למטמיעי המערכת להחליט. הטמעות של LTZP יכולות להשתמש בנתוני מפה של אזור זמן בהחזקה לגמרי במכשיר Android, להשתמש בשרתים או להשתמש .

התנהגות התכונה

שירות time_zone_detector קובע מתי לשנות את ההגדרה הנוכחית של המכשיר אזור הזמן על סמך ההצעות שהוא מקבל מאלגוריתמים של זיהוי.

השירות location_time_zone_manager אחראי ליצירת הצעות לאלגוריתם המיקום של time_zone_detector. השירות location_time_zone_manager פועל בתהליך שרת המערכת.

השירות location_time_zone_manager לא מכיל זיהוי של אזור זמן בלוגיקה. אחראי לניהול מחזור החיים של פלאגין אחד או שניים שנקראים ספקי אזורי זמן של מיקום (LTZP).

כשאין צורך בזיהוי אזור הזמן של המיקום, מקורות ה-LTZP לא מופעלים. הזה המשמעות היא שמערכת זיהוי אזור הזמן של המיקום לא מבקשת מכלי ה-LTZP לעקוב אחר את מיקום המכשיר, אלא אם כן נדרש לעשות זאת במפורש. חלק מ יכולות להיות לכך מספר סיבות:

  • בשונה מאותות טלפוניה שמתקבלים באופן פסיבי כחלק בטלפוניה רגילה, ניתן לבקש מיקום באופן פעיל ספקי מיקום של Android שעשויים לצרוך חשמל נוסף.
  • הגדרות המיקום הן ברמת המשתמש ו-Android חייב לפעול בהתאם להגדרות הנוכחיות הגדרות המשתמש.
  • קבלת פרטי המיקום של המכשיר רגישה לפרטיות.

בנוסף, השירות location_time_zone_manager מציע הצעה לא ודאית (אם כאשר המשתמש הנוכחי משתנה כדי להימנע משיתוף המיקום. מידע בין משתמשים.

כתוצאה מאפשרויות אלה, בדרך כלל חולפת מספר שניות לאחר שינוי את האלגוריתם הנוכחי למיקום, או אחרי החלפת המשתמש הנוכחי, לפני יכול לזהות את אזור הזמן. הדבר תלוי גם בהטמעות של ערוצי ה-LTZP שבו משתמשים.

ההטמעה של זיהוי אזור הזמן של מיקום AOSP מאפשרת עד שני מודולים של 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 אחד חייב להיות מופעלת או מוגדרת כדי שהתכונה תהיה זמינה למשתמשים.

אם מגדירים את הערך כ-False, התכונה מושבתת לגמרי בזיכרון קטן מתבצעת שמירה.
config_enablePrimaryLocationTimeZoneProvider false זה מפעיל את ה-LTZP הראשי.
config_primaryLocationTimeZoneProviderPackageName מגדירים את הערך הזה לשם החבילה של האפליקציה שבה השירות של הספק הראשי .
config_enableSecondaryLocationTimeZoneProvider false זה מפעיל את ה-LTZP המשני.
config_secondaryLocationTimeZoneProviderPackageName מגדירים את הערך הזה לשם החבילה של האפליקציה שבה הספק המשני ניתן למצוא את השירות.

כברירת מחדל, הגדרות ה-AOSP כוללות את המפתח config_enableGeolocationTimeZoneDetection מוגדר ל-true, מפעיל את התמיכה לתכונה 'זיהוי אזור הזמן' של המיקום. התכונה לא גלויה ל- בהתחלה כי AOSP לא כולל הגדרת LTZP כברירת מחדל. עם זאת, באמצעות הגדרות ברירת המחדל האלה, יצרני המכשירים יכולים להפעיל הדמיה של LTZP משורת הפקודה לצורך בדיקה. (מידע נוסף זמין במאמר הבא: ניפוי באגים ובדיקה).

ממשקי API לסטטוס LTZP

ב-Android 14, ממשקי ה-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 הטמעת קובץ העזר הזה מתבססת על ממשקי API של AOSP כדי לקבוע את מיקום המכשיר ומשתמש בקובץ נתונים ששמורים במכשיר כדי למפות את המיקום לקבוצה של מזהי אזור זמן.

מערך נתוני עזר שנגזר מפרויקטים אחרים של קוד פתוח נכלל יחד עם בקוד המקור. פרטים נוספים זמינים במאמר 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 יכולות גם לספק תמיכה משלהן בניפוי באגים או בבדיקות. לדוגמה, אפשר להשתמש בפקודה הבאה כדי לנפות באגים בהפניה של AOSP ל-LTZP כאשר הוא רשום בתהליך שרת המערכת.

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