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

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

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

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

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

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

  • יישום LTZP הפניה.

  • כלי מארח ליצירת מערך נתוני התייחסות מנתוני OpenStreetMap שניתן להשתמש בהם עם יישום ההפניה.

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

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

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

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

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

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

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

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

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

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

שירות location_time_zone_manager אינו מכיל שום לוגיקה לזיהוי אזור זמן. היא אחראית לניהול מחזור החיים של תוסף אחד או שניים הנקראים Location Time Zone Providers (LTZP).

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

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

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

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

יישום זיהוי אזור הזמן של מיקום AOSP מאפשר עד שני LTZPs, LTZP ראשי ומשני כפי שמוגדר כאן:

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

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

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

איור 1. זרימת מידע על זיהוי אזור זמן של מיקום.

דרישות תצורת המכשיר

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

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

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

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

למידע נוסף על הסטטוסים שעליהם ה-LTZP יכול לדווח, ראה TimeZoneProviderStatus .

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

בעת הגדרת LTZP, קרא את ההוראות בקוד המקור עבור frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java . הערות Javadoc מספקות פרטים על השירות, ההרשאות הנדרשות ותצורה אחרת.

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

במכשירים עם רכיבי מערכת מודולריים (מודולים), שקול את האינטראקציה בין הנתונים הגיאוגרפיים המשמשים את ה-LTZP לבין כללי אזור הזמן (tzdb) הנישאים במודול נתוני אזור הזמן ( com.android.tzdata ). עדכונים לאחד ללא עדכונים לשני עשויים לגרום לבעיות הטיית גרסה. למידע נוסף, ראה שיקולי אימוץ תכונות .

התייחסות AOSP LTZP

AOSP מכיל יישומון LTZP תחת packages/modules/GeoTZ . יישום התייחסות זה משתמש בממשקי API של AOSP כדי לקבוע את מיקום המכשיר ומשתמש בקובץ נתונים במכשיר כדי למפות את המיקום לקבוצה של מזהי אזור זמן.

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

איתור באגים ובדוק

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

אינטראקציה עם שירות location_time_zone_manager

כאשר אלגוריתם המיקום נתמך במכשיר עם אנדרואיד 12 ומעלה, אנדרואיד מפעיל את שירות 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