דף זה מתאר כיצד פועל זיהוי זמן ואזור זמן ב-Android. זה כולל איך אנדרואיד מזהה אוטומטית אזורי זמן ואזורי זמן, אפשרויות תצורה עבור יצרני מכשירים ומידע בדיקה.
סקירה כללית של זמן ואזורי זמן
כדי לקבוע את השעה המקומית של משתמש לתצוגה במיקומים כגון שורת המצב, אנדרואיד עוקב אחר שני מצבים קשורים אך עצמאיים:
- זמן עידן יוניקס הנוכחי
- אזור הזמן הנוכחי
זמן עידן יוניקס ואזור הזמן הנוכחי הם מצבים רחבי מכשיר, כלומר הם משותפים לכל המשתמשים במכשיר.
זמן עידן יוניקס הנוכחי אינו ערך קבוע. זה מתעדכן אוטומטית כדי לשקף את חלוף הזמן. מלבד חלוף הזמן הרגיל, זמן עידן יוניקס הנוכחי של מכשיר מותאם אם הוא מתגלה כשגוי, למשל, לאחר שהמכשיר מאבד את החשמל.
אזור הזמן הנוכחי קובע את ההתאמה שיש לבצע כדי להמיר את זמן עידן יוניקס הנוכחי לזמן מקומי. לדוגמה, במהלך הקיץ בלוס אנג'לס, המכשיר מוריד 7 שעות מזמן עידן יוניקס הנוכחי, ובחורף הוא מוריד 8 שעות.
כדי לתמוך בחישובי זמן מקומיים אלה, לכל מכשירי האנדרואיד יש מסד נתונים של כל כללי אזור הזמן הגלובליים . למידע נוסף על חוקי אזור זמן, ראה כללי אזור זמן .
כאשר משתמש נוסע למיקום חדש שמשתמש באזור זמן אחר, אין צורך להתאים את זמן עידן יוניקס הנוכחי, אך המשתמש בדרך כלל רוצה לראות את השעה המקומית ולא את השעה במיקום הקודם שלו. שינוי אזור הזמן הנוכחי מבטיח שההיסט הנכון יוחל על זמן עידן יוניקס הנוכחי כדי להציג את השעה המקומית הנכונה עבור המיקום החדש.
AOSP מאפשר למשתמשים לשלוט באופן עצמאי אם הזמן ואזור הזמן מוגדרים עבורם באופן אוטומטי באמצעות המנגנונים הבאים.
- זיהוי זמן אוטומטי: מבטיח שלמכשיר יש את זמן עידן Unix הנוכחי הנכון.
- זיהוי אוטומטי של אזור זמן: מבטיח שלמכשיר יש את אזור הזמן הנוכחי הנכון.
זיהוי זמן אוטומטי
סעיף זה מספק סקירה כללית של שירות time_detector
המנהל זיהוי זמן אוטומטי, בקרות משתמש, אפשרויות תצורה ופרטי בדיקה.
שירות_גלאי הזמן
שירות time_detector
, הקיים במכשירים עם אנדרואיד 10 ומעלה, מנהל זיהוי זמן אוטומטי. הוא מתאים את זמן עידן ה-Unix הנוכחי של המכשיר לפי הצורך כאשר זיהוי זמן אוטומטי מופעל.
שירות time_detector
נמצא תמיד באחד משני מצבים: לא ודאי או בטוח . מצבו הוודאי או הלא וודאי של השירות נקבע על פי הצעות זמן שהוא מקבל ממקורות שונים.
כאשר שירות time_detector
בטוח, כלומר הוא קיבל הצעה עם מידע על זמן יוניקס, הוא עוקף את זמן עידן יוניקס הנוכחי אם הצעת הזמן שונה מזמן עידן יוניקס הנוכחי.
כאשר time_detector
אינו ודאי, הוא אינו מחליף את השעה הנוכחית. המצב הלא בטוח אומר בדרך כלל ששירות time_detector
לא קיבל הצעות זמן. שירות time_detector
הופך גם לא בטוח אם הצעות שקיבל נחשבות ישנות מדי לשימוש. עידן ההצעות נחשב מכיוון שההתאמות באמצעות הצעות זמן עתיקות של יוניקס מסתמכות על שעון זמן אמת שחלף במכשיר, אשר מניחים שהוא אינו מדויק לאורך תקופות ארוכות.
כדי לקבוע את זמן עידן יוניקס הנוכחי באופן אוטומטי, למכשיר יש מקורות שונים שהוא יכול להשתמש בו. אלה נקראים מקורות במסמך זה. שירות time_detector
מתייחס לרצפי הצעות כמובדלים על סמך מקורם.
שירות time_detector
הוא stateful, מה שאומר שהוא שומר תיעוד של ההצעה האחרונה שנעשתה על ידי כל מקור. הצעות חדשות מוצעות ל- time_detector
אם למקור יש מידע עדכני יותר של תקופת יוניקס זמינה. שירות time_detector
מעריך מחדש הצעות חדשות וקיימות ומעדכן את מצב המכשיר כאשר מתקבלות הצעות.
למרות שזמן UTC מוסכם בעולם, ישנן סיבות שונות לכך שהקמת זמן עידן יוניקס הנוכחי לא תמיד פשוטה עבור מכשיר אנדרואיד:
- זמן יוניקס הוא מערכת שמירת זמן שונה בתכלית מזמן UTC. המרה בין השניים דורשת ידע מתי מתרחשות שניות קפיצות וכיצד הן מטופלות לפי המקורות.
- מקורים עשויים להיות זמינים רק בזמנים מסוימים או בנסיבות מסוימות. לדוגמה, אם המקור דורש קישוריות רשת, ייתכן שהוא זמין רק כשהמכשיר מחובר לאינטרנט.
- המקורות עשויים להיות לא מדויקים או לא מדויקים, או שיש בהם שגיאות. לדוגמה, אם מגדל סלולרי טלפוניה אינו עוקב כראוי אחר "זמן אוניברסלי", מקור הטלפוניה עשוי לספק הצעות זמן לא מדויקות.
- ייתכן שיהיו אי דיוקים בעת קבלת זמן עידן יוניקס. לדוגמה, עיכוב רשת, חציצה או תזמון תהליכים עלולים לגרום לזמן עידן Unix להיות לא מדויק.
- שעון ההתייחסות המשמש להתאמת הצעה לזמן שחלף מאז קבלת ההצעה עשוי להיות לא מדויק.
ישנם שני מקורות זיהוי זמן עיקריים המוגדרים לשימוש כברירת מחדל ב-AOSP:
- רשת : משתמש בשרתי זמן של פרוטוקול זמן רשת (NTP).
- טלפוניה: משתמשת באותות טלפוניה ברשת זהות ואזור זמן (NITZ).
גם מקורות הטלפוניה וגם הרשת דורשים קישוריות לרשתות חיצוניות, שאינן תמיד זמינות.
החל מאנדרואיד 12, אנדרואיד תומך גם במקורות הבאים, שאינם מוגדרים לשימוש כברירת מחדל:
- GNSS : משתמש בספק מיקום ה-GPS כדי לקבל זמן ממקור GNSS.
- חיצוני : מקור גנרי המאפשר ליצרני מכשירים לשלב מקור משלהם לתקופת יוניקס.
הגדרות זמן
משתמשים יכולים להפעיל זיהוי זמן אוטומטי במערכת > תאריך ושעה באפליקציית הגדרות AOSP.
איור 1. זיהוי זמן אוטומטי בהגדרות.
הטבלה הבאה מתארת את בקרות המשתמש לזיהוי זמן באפליקציית הגדרות AOSP.
*ב-Android 11 ומטה, הגדרה זו מסומנת בתווית השתמש בזמן מסופק ברשת | |||
מיקום הגדרות AOSP | שם הגדרות AOSP | תְחוּם | התנהגות |
---|---|---|---|
מערכת > תאריך ושעה | קבע זמן אוטומטי* | כל המשתמשים | מתג. כאשר מופעל , המכשיר אחראי על זיהוי זמן עידן יוניקס הנוכחי. כאשר כבוי , משתמשים מסופקים עם פקדים להגדרת זמן המכשיר באופן ידני. |
כאשר המשתמש מזין את הזמן באופן ידני, הוא מזין את הזמן המקומי שלו, לא את זמן יוניקס. זמן עידן יוניקס הנוכחי מחושב על ידי שימוש באזור הזמן הנוכחי כדי לגזור זמן עידן יוניקס.
תְצוּרָה
יצרני התקנים יכולים להגדיר את שירות time_detector
בדרכים שונות, כגון באילו מקורות להשתמש וכיצד לתעדף את האותות מהם.
תעדוף מקור
מ-Android 12, יצרני מכשירים יכולים לשנות את קובץ התצורה core/res/res/values/config.xml
כדי לציין אילו מקורות זמן לכלול בזיהוי זמן אוטומטי, ואת העדיפות שבה time_detector
מחשיב את המקורות הללו.
עבור מכשירים עם אנדרואיד 11 ומטה, עדיפות המקור מקודדת ל ["telephony", "network"]
, כלומר, הצעות טלפוניה מתעדפות מעל הצעות רשת.
תצורת ברירת המחדל של AOSP היא כדלקמן:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
ב-Android 12, הצעות רשת וטלפוניה מוגדרות כמקורות לשימוש כברירת מחדל. הצעות לזמן רשת נמצאות בראש סדר העדיפויות מעל הצעות לזמן טלפוניה. יצרני מכשירים יכולים לשנות את סדר המקורות כדי לחזור להתנהגות באנדרואיד 11 ומטה, שם ניתנת לטלפוניה עדיפות גבוהה יותר.
כברירת מחדל, אם ההצעה התקפה בעדיפות הגבוהה ביותר תואמת את זמן שעון המערכת הנוכחי של המכשיר בתוך כמה שניות, זמן המכשיר לא ישתנה. זאת כדי להימנע מיצירת עבודה עבור אפליקציות מותקנות שמאזינות לכוונת ACTION_TIME_CHANGED
.
ערכי המקור המותרים הם:
גבולות הזמן המותרים
אנדרואיד 14 מציגה זמן עליון להצעות זמן שהתקבלו על ידי שירות time_detector
. אם המכשיר תומך בתהליכים של 32 סיביות, המסגרת מגדירה זמן עליון כדי למנוע מהמכשיר להשתמש בהצעת זמן שעלולה להפעיל את בעיית Y2038.
אנדרואיד 12 הציגה מגבלת זמן נמוכה יותר המשמשת לאימות הצעות זמן שהתקבלו בשירות time_detector
. הערך התחתון מגבול הזמן המשמש להצעות אוטומטיות נקבע מחותמת הזמן של הבנייה. זה עובד על העיקרון שזמן חוקי לא יכול להיות לפני שתמונת המערכת של המכשיר נבנתה. אם הצעת זמן היא לפני תחום הזמן התחתון, שירות time_detector
מבטל את ההצעה מכיוון שהיא לא יכולה להיות חוקית אם חותמת הזמן של הבנייה נכונה.
עבור מכשירים עם אנדרואיד 11 ומטה, שירות time_detector
אינו מאמת הצעות נכנסות לתקופת יוניקס.
זמן איתור באגים ובדיקות
סעיף זה מספק מידע על איך לבצע ניפוי באגים ולבדוק את ההתנהגות של שירות time_detector
ורכיבים אחרים המשותפים לכל המקורות.
אינטראקציה עם שירות זמן_גלאי
כדי להציג את התצורה של שירות time_detector
ואת המצב של שירות time_detector
, השתמש ב:
adb shell cmd time_detector dump
כדי לראות פקודות נוספות לאיתור באגים ובדיקת אזור זמן, השתמש ב:
adb shell cmd time_detector help
פלט העזרה מתאר גם את מאפייני השירות device_config שניתן להשתמש בהם כדי להשפיע על ההתנהגות של time_detector
לבדיקה או בייצור. לפרטים, ראה הגדרת מכשיר באמצעות שירות device_config .
כדי לאמת את זיהוי הזמן האוטומטי, הבודקים חייבים להיות מודעים באילו מקורות משתמש שירות time_detector
. להלן דוגמה לפלט מפקודת ה- adb shell cmd time_detector dump
, עם המידע על המקור הנוכחי ומצב השירות מודגש:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
ניתן לפרש את המידע באופן הבא:
מַפְתֵחַ | ערך |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() | האם זיהוי זמן אוטומטי מופעל. |
mEnvironment.autoTimeLowerBound() | הגבול התחתון הנוכחי משמש לאימות הצעות זמן. |
mEnvironment.autoOriginPriorities() | המקורות בשימוש וסדר העדיפות. |
יומן שינויי הזמן מציין מקרים שבהם שירות time_detector
שינה את זמן עידן Unix הנוכחי של המכשיר.
מידע היסטוריית ההצעות מציין אילו הצעות הועלו על ידי כל מקור.
זיהוי אזור זמן אוטומטי
סעיף זה מספק סקירה כללית של שירות time_zone_detector
המנהל זיהוי אוטומטי של אזור זמן, בקרות משתמש בהגדרות, זיהוי אזורי זמן טלפוניה ומיקום ופרטי בדיקה.
שירות_זמן_אזור_גלאי
שירות time_zone_detector
, הקיים במכשירים עם אנדרואיד 11 ומעלה, מנהל זיהוי אוטומטי של אזור זמן. זה מתאים את אזור הזמן הנוכחי של המכשיר לפי הצורך כאשר זיהוי אזור זמן אוטומטי מופעל.
כאשר זיהוי אזור זמן אוטומטי מופעל, time_zone_detector
יכול להיות באחד משני מצבים: לא ודאי ווודאי .
כאשר שירות time_zone_detector
נמצא במצב מסוים, פירוש הדבר ששירות time_zone_detector
קיבל מידע חזק על אזור זמן, מה שעלול לגרום לו לעקוף את אזור הזמן הנוכחי. כאשר זה לא בטוח, זה אומר שהוא לא קיבל מידע או רק מידע בעל ביטחון נמוך, מה שאומר שהוא לא יעקוף את אזור הזמן הנוכחי.
מצבים מסוימים של שירות time_zone_detector
יכולים לכלול מצבים שבהם time_zone_detector
אין מידע על אזור זמן לשימוש, או שבהם יש לו מספר אזורי זמן לבחירה. מדינות אלה הן כדלקמן:
- מצב מסוים עם אפס אזורי זמן נכנס כאשר המכשיר נמצא במקום ללא אזור זמן, כגון במים בינלאומיים או באזור שנוי במחלוקת. מצב זה דומה למצב לא ודאי, אך מציין ש-
time_zone_detector
אינו צריך לנקוט בפעולה נוספת כדי לנסות לקבוע את אזור הזמן. - נכנסים למצב מסוים עם מספר אזורי זמן כאשר יש אי בהירות או תנאי גבול. במצב זה, אם אזור הזמן הנוכחי הוא אחד מאזורי הזמן
time_zone_detector
בטוח לגביהם, אזור הזמן הנוכחי נשאר כפי שהוא. אחרת, נעשה שימוש באחד מאזורי הזמן הזמינים. זה נותןtime_zone_detector
אלמנט של דביקות אם המשתמש בחר ידנית את אזור הזמן שלו בעבר או כשהמכשיר מתקרב לגבול.
המצב הוודאי או הלא וודאי של שירות time_zone_detector
נקבע על ידי הצעות אזור זמן שנשלחות על ידי אלגוריתם .
בדרך כלל, הצעות מגיעות בשני סוגים התואמים באופן הדוק את המצבים האפשריים של time_zone_detector
: ודאי ולא ודאי . להלן דוגמאות לסוגי הצעות:
type =
uncertain
,zoneIds = []
- האלגוריתם אינו יודע מהו אזור הזמן.
type =
certain
,zoneIds = ["Europe/London"]
- האלגוריתם בטוח שהאזור הוא אירופה/לונדון.
סוג =
certain
,zoneIds = []
`- האלגוריתם בטוח, אבל אין מזהה אזור המשויך למיקום הנוכחי.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- האלגוריתם בטוח שהתשובה היא אחד משני אזורים, אבל לא יכול לבחור בין "אמריקה/דנבר" ו"אמריקה/פניקס".
שירות time_zone_detector
מתייחס לרצפים של הצעות בצורה מובחנת בהתבסס על האלגוריתם שלהם. בהתאם לאלגוריתם, הצעות עשויות להכיל גם מטא נתונים המציינים עד כמה האלגוריתם בטוח.
שירות time_zone_detector
הוא stateful, מה שאומר שהוא שומר תיעוד של ההצעה האחרונה שהועלתה על ידי כל אלגוריתם. הצעות חדשות נשלחות לשירות time_zone_detector
אם הצעה קודמת כבר לא נכונה; כלומר, אם לאלגוריתם יש כעת הצעה אחרת, או אם הוא איבד את היכולת לזהות את אזור הזמן. שירות time_zone_detector
מעריך מחדש הצעות חדשות וקיימות ומעדכן את מצב המכשיר כאשר מתקבלות הצעות.
אנדרואיד תומך בשני אלגוריתמים לזיהוי אזור זמן:
- טלפוניה
- מקום
שירות time_zone_detector
משתמש בדרך כלל באלגוריתם יחיד כדי לקבוע את אזור הזמן. כאשר אלגוריתם המיקום נתמך במכשיר, האלגוריתם שבו המכשיר משתמש נקבע על סמך הגדרות אזור הזמן שהוגדרו על ידי המשתמש. כאשר האלגוריתם שנמצא בשימוש הופך לא בטוח לגבי אזור הזמן, time_zone_detector
אינו משתמש בדרך כלל בהצעות מאלגוריתם אחר. הצעות הקשורות לאלגוריתמים שאינם בשימוש יכולים להישמר בזיכרון על ידי time_zone_detector
, אך לא נעשה בהם שימוש אלא אם כן האלגוריתם משתנה. כאשר המשתמש משנה את ההגדרות לזיהוי אזור זמן אוטומטי והאלגוריתם משתנה, נעשה שימוש בהצעה העדכנית ביותר הזמינה עבור האלגוריתם החדש.
לפרטים על המצב שבו נעשה שימוש במספר אלגוריתמים לקביעת אזור הזמן, ראה מצב נפילה של טלפוניה .
מצב נפילה של טלפוניה
במכשירים שבהם פועל אנדרואיד 13 ומעלה, שירות time_zone_detector
תומך במצב החזרה של טלפוניה . מצב זה מאפשר לאנדרואיד להשתמש בהצעות לזיהוי טלפוניה באופן זמני במצבים שבהם זיהוי המיקום אינו מסוגל לזהות את אזור הזמן או שבהם זיהוי המיקום לוקח יותר זמן לזהות את אזור הזמן מאשר זיהוי טלפוניה.
מצב החזרה של טלפוניה חל על מכשירים שבהם נתמכים גם טלפוניה וגם זיהוי מיקום, ושבו המשתמש הפעיל השתמש במיקום כדי להגדיר אזור זמן בהגדרות אזור זמן . המצב מופעל באופן אוטומטי כאשר מכשיר מופעל מחדש, וכאשר מצב טיסה מושבת.
ב-Android 14 ואילך, ניתן להפעיל את החזרה של טלפוניה באמצעות ממשקי ה-API של דיווח המצב של LTZP , כלומר, אם LTZP מדווח על חוסר וודאות והיכולת שלו לזהות מיקום או אזור זמן מושפלת על ידי הסביבה שלו, מופעל מצב החזרה של טלפוניה.
במצב ניצול טלפוניה, שירות time_zone_detector
משתמש בהצעות טלפוניה כאילו זיהוי מיקום מושבת עד שאלגוריתם המיקום מציע הצעה מסוימת. לאחר קבלת הצעה מסוימת, מצב החלפת הטלפוניה מושבת ונעשה שימוש בלעדי בהצעות מיקום.
לפרטי תצורה עבור מצב חילופי טלפוניה, ראה תצורת זיהוי אזור זמן .
הגדרות אזור זמן
משתמשים יכולים להפעיל ולהגדיר את ההגדרות לזיהוי אזור זמן אוטומטי באפליקציית הגדרות AOSP.
איור 2. זיהוי אזור זמן אוטומטי בהגדרות.
הטבלה הבאה מתארת את בקרות המשתמש לזיהוי אזור זמן באפליקציית הגדרות AOSP.
*ב-Android 11 ומטה, הגדרה זו מסומנת בשם השתמש באזור זמן מסופק ברשת | |||
מיקום הגדרות AOSP | שם הגדרות AOSP | תְחוּם | התנהגות |
---|---|---|---|
מערכת > תאריך ושעה | הגדר אזור זמן באופן אוטומטי* | כל המשתמשים | מתג. כאשר פועל , המכשיר אחראי על זיהוי אזור הזמן הנוכחי. כאשר כבוי , משתמשים מסופקים עם פקדים להגדרה ידנית של אזור הזמן של המכשיר. |
מערכת > תאריך ושעה | השתמש במיקום כדי להגדיר אזור זמן | משתמש נוכחי | מתג. זמין מאנדרואיד 12. החלפת מצב זה מוצגת רק כאשר זיהוי אזור זמן מיקום נתמך במכשיר. לשינויים שהוצגו ב-14, ראה התקנים התומכים רק בזיהוי אזור זמן של מיקום . |
מקום | השתמש במיקום | משתמש נוכחי | מתג. מאפשר או מונע שימוש במיקום המכשיר באופן כללי. הערך רלוונטי אם זיהוי אזור זמן מיקום נתמך במכשיר. |
להלן סקירה כללית של התנהגות המכשיר לזיהוי אזור זמן בהתחשב בהגדרות שנבחרו על ידי המשתמש:
[תאריך ושעה] הגדר את אזור הזמן באופן אוטומטי: כבוי
- על המשתמש לבחור באופן ידני את אזור הזמן.
[תאריך ושעה] הגדר את אזור הזמן באופן אוטומטי: מופעל
[מיקום] השתמש במיקום: כבוי
- אותות טלפוניה משמשים לזיהוי אזור הזמן.
[מיקום] השתמש במיקום: מופעל
[תאריך ושעה] השתמש במיקום כדי להגדיר אזור זמן: מופעל
- המיקום משמש לזיהוי אזור הזמן.
[תאריך ושעה] השתמש במיקום כדי להגדיר אזור זמן: כבוי
- אותות טלפוניה משמשים לזיהוי אזור הזמן.
מכשירי משתמשים מרובים
מכיוון שכמה מההגדרות המעורבות מיועדות למשתמש הנוכחי, התנהגות זיהוי אזור הזמן של מכשיר יכולה להשתנות כאשר המשתמש הנוכחי משתנה במכשיר אנדרואיד מרובה משתמשים.
הלחצן 'שימוש במיקום להגדרת אזור זמן' מיועד למשתמש הנוכחי ואינו מוגבל על ידי מדיניות המכשיר, כלומר המשתמשים יכולים תמיד לשנות את הערך שלו, גם כאשר הלחצן 'הגדר אזור זמן אוטומטי' כבוי או אם בקרי זמן או אזור זמן אחרים מוגבלים על ידי בקר מדיניות ההתקנים.
מכשירים התומכים רק באלגוריתם זיהוי אזור הזמן של המיקום
סעיף זה מתאר את ההתנהגות של מכשירים התומכים רק באלגוריתם המיקום.
אנדרואיד 14 ומעלה
- האפשרות השתמש במיקום לא מוצגת למשתמשים באפליקציית הגדרות AOSP והמכשיר מתנהג כאילו האפשרות השתמש במיקום מופעלת.
- המערכת מתעלמת מהערך של הגדרת
SettingsProvider
בהיקף המשתמשlocation_time_zone_detection_enabled
. ערך זה מתעד את העדפת המשתמש בסוגים אחרים של מכשירים.
אנדרואיד 12 או אנדרואיד 13
- האפשרות השתמש במיקום גלויה למשתמשים באפליקציית הגדרות AOSP ומשתמשים יכולים להשבית את האפשרות. אם האפשרות מושבתת, המכשיר לא יזהה את אזור הזמן באופן אוטומטי.
התנהגות בעת שינוי לזיהוי אוטומטי וממנו
כאשר המשתמש מחליף את זיהוי אזור הזמן מידני לאוטומטי , ייתכן ש- time_zone_detector
כבר בטוח באיזור הזמן הנוכחי. אם כן, מכיוון שהמשתמש מאפשר זיהוי אוטומטי, ייתכן שאזור הזמן של המכשיר ישתנה בו-זמנית כדי להתאים לדעה של שירות time_zone_detector
.
באופן דומה, כאשר המשתמש מבצע שינוי ב-Settings שמביא לשינוי באלגוריתם הנוכחי של שירות time_zone_detector
, ייתכן שכבר קיבל הצעות לאלגוריתם החדש, ולכן הזמן time_zone_detector
המכשיר עשוי להשתנות כך שיתאים מיד לדעה של שירות time_zone_detector
.
זיהוי אזור זמן טלפוניה
זיהוי אזור זמן טלפוניה משתמש באותות טלפוניה כדי לקבוע את אזור הזמן הנוכחי. למידע נוסף, ראה זיהוי אזור זמן טלפוני .
זיהוי אזור זמן של מיקום
זיהוי אזור זמן מיקום זמין ב-Android 12 ומעלה. זוהי תכונה אופציונלית לזיהוי אזור זמן אוטומטי המאפשרת למכשירים להשתמש במיקומם כדי לקבוע את אזור הזמן הנוכחי.
שירות location_time_zone_manager
, שהוצג באנדרואיד 12, פועל בשרת המערכת ומכיל את הקוד שאחראי על הגשת הצעות אלגוריתמי מיקום לשירות time_zone_detector
. למידע נוסף, ראה זיהוי אזור זמן מיקום .
שיקולי אימוץ תכונות
סעיף זה מתאר היבטים של תכונת זיהוי אזור זמן מיקום כדי לעזור ליצרן מכשיר לקבוע אם לאמץ את התכונה במכשיר.
השוואת טלפוניה וזיהוי מיקום
הטבלה הבאה מספקת השוואה בין היתרונות והחסרונות של שימוש באותות מיקום ולא טלפוניה לזיהוי אזור זמן.
זיהוי טלפוניה | זיהוי מיקום | |
---|---|---|
נְכוֹנוּת | משתנה לפי מדינה. תלוי בתקינות ובזמינות של MCC, NITZ. | תלוי בתצורת התכונה או ברכיבי הפלאגין. תקינות בדרך כלל משתנה לפי:
|
יכולת עדכון | זיהוי טלפוניה מסתמך על קבצים הכלולים במודול נתוני אזור הזמן הניתן לעדכון (com.android.tzdata APEX). | תלוי בתצורת התכונה או ברכיבי הפלאגין. יכולת העדכון תלויה בדרך כלל אם המכשיר משתמש בנתוני מפה של אזור זמן של שרת או לקוח. הערה: נתוני המפה של אזור הזמן אינם כלולים במודול נתוני אזור הזמן המשמש לעדכון העותק של Android של TZDB ומידע אחר על אזור זמן. יצרני המכשיר חייבים גם לשקול את עקביות הגרסה בין כללי אזור הזמן ונתוני המפה של אזור הזמן. |
צריכת חשמל | אין או צריכת חשמל נמוכה | תלוי בהגדרות מיקום המשתמש, התוספים שבהם נעשה שימוש, ובדרך כלל אילו אפליקציות אחרות מבקשות מיקום. |
זמינות | מכשירי טלפוניה בלבד. בדרך כלל צריך סים עובד. | זיהוי המיקום תלוי בספקי המיקום הזמינים. |
פרטיות המשתמש
אזור הזמן המועדף על משתמש נקבע בדרך כלל על פי מיקומו הגיאוגרפי. המיקום הוא נתונים רגישים. משתמשים עשויים להיות מודאגים מכך שהידע על המיקום שלהם משותף כחלק מזיהוי אזור זמן. ללא קשר לזיהוי אזור זמן, כל האפליקציות הפועלות במכשיר יכולות לקרוא את אזור הזמן הנוכחי של המכשיר ללא צורך בהרשאת אנדרואיד, ואפליקציות יכולות להסיק מושג לא מדויק לגבי מיקום המכשיר ממידע זה.
ליתר דיוק, זיהוי אזור זמן יכול לפעול באמצעים פסיביים או אקטיביים:
- פסיבי: משהו בסביבת המכשיר אומר למכשיר את אזור הזמן לשימוש בסביבה זו.
- פעיל: המכשיר צריך לחשב לעצמו את אזור הזמן ובהתאם להגדרות הפרטיות של המשתמשים ולהסכמתם, משיג את מיקום המכשיר כדי לעשות זאת. לאחר מכן הוא יכול לשתף את מיקומו עם שירותים חיצוניים. ראה דיון למטה לפרטים על פרטיות המשתמש והסכמה.
לזיהוי פסיבי, כמו עם אלגוריתם הטלפוניה, אין השלכות פרטיות נוספות על המשתמשים.
זיהוי פעיל, כמו עם אלגוריתם המיקום, כרוך בקביעת מיקום המכשיר, שאולי המשתמשים לא ירצו להסכים לו, והמיקום יכול להישלח דרך רשת על מנת לקבוע את מזהה אזור הזמן.
הגישה של אנדרואיד לפרטיות המשתמש לזיהוי אזור זמן מעניקה למשתמש את היכולת להשבית בנפרד אלגוריתמים שצפויים להיות פעילים. בנוסף, קוד פלטפורמת AOSP אינו עוסק ישירות במיקום עצמו: זיהוי מיקום ומיפוי מיקום למזהי אזור זמן נותרים לרכיבי פלאג-אין המוגדרים על ידי יצרני המכשירים.
לפרטים נוספים על תכונות פרטיות המשתמש, ראה זיהוי אזור זמן מיקום .
תְצוּרָה
יצרני התקנים יכולים להגדיר את שירות time_zone_detector
לשנות את ההתנהגות שלו. סעיף זה מתאר אפשרויות תצורה עבור ההתנהגות הכללית של שירות time_zone_detector
. לפרטי תצורה עבור אלגוריתמי זיהוי טלפוניה ואזור זמן, ראה זיהוי אזור זמן טלפוניה וזיהוי אזור זמן מיקום .
תצורת ה-AOSP הבסיסית נמצאת ב- frameworks/base/core/res/res/values/config.xml
.
מפתח תצורה | ערך AOSP | תיאור |
---|---|---|
config_supportTelephonyTimeZoneFallback | true | כאשר true , time_zone_detector משתמש במצב נפילה של טלפוניה. זה זמין עבור אנדרואיד 13 ומעלה. |
שינוי התנהגות ברירת המחדל של המכשיר
ב-AOSP, זיהוי אזור זמן אוטומטי מופעל כברירת מחדל כאשר ההגדרה auto_time_zone
מוגדרת כ- true
. כדי להשבית את זיהוי הזמן האוטומטי כברירת מחדל, הגדר את הערך של def_auto_time_zone
המוגדר ב- frameworks/base/packages/SettingsProvider/res/values/defaults.xml
ל- false
.
בעת שחזור גיבוי ממכשיר אחר, המסגרת מעדכנת את הערך של הגדרת auto_time_zone
כברירת מחדל. אם ברצונך להבטיח שהגדרה זו לא תשוחזר מגיבוי, כלול את auto_time_zone
במערך restore_blocked_global_settings
המוגדר ב- frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
איתור באגים ובדיקה של אזור זמן
סעיף זה מספק מידע על איך לבצע ניפוי באגים ולבדוק את ההתנהגות של שירות time_zone_detector
ורכיבים אחרים המשותפים לכל האלגוריתמים.
הגדרת מכשיר באמצעות שירות device_config
שירות device_config
הוא מנגנון המשמש ב-Android כדי להגדיר התנהגות הניתנת לשינוי באמצעות ערכים שנשלפים בדרך כלל משרת מרוחק על ידי קוד קנייני (שאיננו AOSP). בעת שימוש בערכי device_config
לבדיקה, במיוחד במהלך בדיקות ידניות ארוכות, המכשיר עשוי לסנכרן את הדגלים, דבר שיאפס את הדגלים וינקה את הערכים שהוגדרו לבדיקה.
באנדרואיד 12 ומעלה, כדי למנוע זמנית סנכרון דגלים, השתמש ב:
adb shell cmd device_config set_sync_disabled_for_tests persistent
כדי לשחזר סנכרון דגל לאחר בדיקות, השתמש ב:
adb shell cmd device_config set_sync_disabled_for_tests none
לאחר שחזור סנכרון הדגל, הפעל מחדש את המכשיר.
למידע נוסף, השתמש ב- $ adb shell cmd device_config help
.
אינטראקציה עם שירות time_zone_detector
כדי להציג את תצורת time_zone_detector
ואת המצב של שירות time_zone_detector
, השתמש ב:
adb shell cmd time_zone_detector dump
כדי לראות פקודות נוספות לאיתור באגים ובדיקת אזור זמן, השתמש ב:
adb shell cmd time_zone_detector help
פלט העזרה מתאר גם את מאפייני השירות device_config
שניתן להשתמש בהם כדי להשפיע על ההתנהגות של שירות time_zone_detector
לבדיקה או בייצור. לפרטים, ראה הגדרת מכשיר באמצעות שירות device_config .
כדי לאמת את זיהוי אזור הזמן, הבודקים חייבים להיות מודעים לאיזה אלגוריתם משתמש time_zone_detector
. כדי להבין ולהשפיע על האלגוריתם הנוכחי של time_zone_detector
, השתמש באחת מהאפשרויות הבאות:
- בדוק חזותית דרך ממשק המשתמש של ההגדרות. למידע נוסף, ראה הגדרות אזור זמן .
השתמש בשורת הפקודה דרך adb:
- כדי להוריד את מצב
time_zone_detector
, השתמשadb shell cmd time_zone_detector dump
- כדי לשנות את הגדרות המכשיר, השתמש בפקודות אחרות
time_zone_detector
. למידע נוסף, השתמש ב-adb shell cmd time_zone_detector help
.
- כדי להוריד את מצב
להלן דוגמה לפלט מפקודת ה- adb shell cmd time_zone_detector dump
, עם המידע על האלגוריתם הנוכחי ומצב השירות מודגש:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
ניתן לפרש את המידע באופן הבא:
מַפְתֵחַ | ערך |
---|---|
mUserConfigAllowed | האם מנוע מהמשתמש לשלוט בהגדרות התאריך והשעה על ידי בקר Device Policy . |
mTelephonyDetectionSupported | האם למכשיר יש זיהוי אזור זמן טלפונית. |
mGeoDetectionSupported | האם המכשיר תומך בזיהוי אזור זמן של מיקום. זהו המצב האפקטיבי המבוסס על תצורה ונוכחות של LTZP אחד לפחות. |
mAutoDetectionEnabled | האם זיהוי אזור זמן אוטומטי מופעל. |
mLocationEnabled | החלפת המיקום הראשית. |
mGeoDetectionEnabled | מתג האלגוריתם: false מציין את אלגוריתם הטלפוניה, ו- true מציין את אלגוריתם המיקום. |
מידע היסטוריית ההצעות מציין אילו הצעות הועלו באמצעות הגדרות (ידני), ועל ידי אלגוריתמי הטלפוניה והמיקום.