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