סקירת זמן

דף זה מתאר כיצד פועל זיהוי זמן ואזור זמן ב-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 מציין את אלגוריתם המיקום.

מידע היסטוריית ההצעות מציין אילו הצעות הועלו באמצעות הגדרות (ידני), ועל ידי אלגוריתמי הטלפוניה והמיקום.