זיהוי אזור זמן של מיקום, זמין ב-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