בדף הזה מוסבר איך פועל זיהוי השעה ואזור הזמן ב-Android. הזה כולל האופן שבו Android מזהה באופן אוטומטי אזורי זמן ואזורי זמן, הגדרות אישיות אפשרויות ליצרני מכשירים ומידע על בדיקות.
סקירה כללית של הזמן ואזורי הזמן
כדי לקבוע את הזמן המקומי של משתמש להצגה במיקומים כמו הסטטוס מערכת Android עוקבת אחר שני מצבים קשורים אך עצמאיים:
- הזמן הנוכחי של יוניקס (Unix epoch)
- אזור הזמן הנוכחי
השעה הנוכחית ב-Unix epoch ואזור הזמן הנוכחי הם מצבים בכל המכשיר, כלומר, הם משותפים לכל המשתמשים במכשיר.
הזמן הנוכחי של Unix epoch אינו ערך קבוע. הסטטוס מתעדכן באופן אוטומטי ל: לשקף את הזמן שחלף. מלבד פרק הזמן הרגיל, השיטה הנוכחית נקודת זמן יוניקס (Unix epoch) של מכשיר מותאמת אם יתברר שהוא שגוי, לדוגמה, אחרי שסוללת המכשיר מתרוקנת.
אזור הזמן הנוכחי קובע את ההתאמה שיש לבצע כדי להמיר את הזמן הנוכחי של יוניקס (Unix epoch) בזמן מקומי. למשל, במהלך הקיץ בלוס אנג'לס אנג'לס, המכשיר מחסיר 7 שעות מהזמן הנוכחי של יוניקס (Unix epoch) בחורף יורד 8 שעות.
כדי לתמוך בחישובים האלה של הזמן המקומי, בכל מכשירי Android יש מסד הנתונים של כל כללי אזור הזמן הגלובליים. למידע נוסף על כללים של אזור זמן, אפשר לעיין במאמר כללים לאזורי זמן.
כשמשתמש נוסע למיקום חדש שמוגדר בו אזור זמן אחר, המאפיין אין צורך לשנות את הזמן הנוכחי של Unix, אבל המשתמשים בדרך כלל רוצים כדי לראות את הזמן המקומי ולא את השעה במיקום הקודם. משתנה אזור הזמן הנוכחי מבטיח שההיסט הנכון יחול על זמן מערכת של Unix כדי להציג את הזמן המקומי הנכון של המיקום החדש.
AOSP מאפשר למשתמשים לקבוע באופן עצמאי אם השעה ואזור הזמן יוגדר עבורם באופן אוטומטי באמצעות המנגנונים הבאים.
- זיהוי זמן אוטומטי: מבטיח שבמכשיר יש את הזמן הנוכחי של יוניקס (Unix epoch)
- זיהוי אוטומטי של אזור הזמן: מוודאים שהמכשיר מוגדר נכון אזור הזמן הנוכחי.
זיהוי זמן אוטומטי
בקטע הזה מוצגת סקירה כללית של שירות time_detector
שמנהל
זיהוי זמן אוטומטי, בקרות משתמש, אפשרויות הגדרה ובדיקה
פרטים.
שירות גלאי זמן
time_detector
שירות, שנמצא במכשירים עם Android מגרסה 10 ואילך, מנהל זמן אוטומטי
גילוי נאות. הוא מתאים את זמן ה-Unix epoch הנוכחי של המכשיר לפי הצורך,
זיהוי הזמן האוטומטי מופעל.
השירות time_detector
תמיד נמצא באחד משני מצבים: לא ודאי או
מסוים. נקבע מצב מסוים או לא ודאי של השירות
לפי הצעות זמן שהוא מקבל ממקורות שונים.
כאשר השירות time_detector
בטוח, כלומר הוא קיבל
הצעה עם פרטי זמן של מערכת Unix epoch, היא מבטלת את התקופה הנוכחית של יוניקס (Unix epoch)
אם הזמן המוצע שונה מתקופת יוניקס (Unix epoch) הנוכחית.
כשהערך של time_detector
לא ודאי, הוא לא מבטל את השעה הנוכחית.
בדרך כלל המשמעות של מצב לא ודאי היא שהשירות time_detector
לא קיבל זמן
הצעות. גם השירות time_detector
לא בטוח אם יש הצעות
שהוא קיבל נחשב כמיושן מדי, שלא ניתן להשתמש בו. גיל ההצעות הוא
כי התאמות שנעשה בהן שימוש בהצעות זמן ישנות של יוניקס מסתמכות על
הזמן שחלף בזמן אמת במכשיר, וההנחה היא שהוא לא מדויק
על תקופות ארוכות.
כדי ליצור את הזמן הנוכחי של יוניקס (Unix epoch) באופן אוטומטי, למכשיר יש
מקורות שבהם הם יכולים להשתמש. המקורות האלה נקראים מקורות במסמך הזה.
שירות time_detector
מתייחס לרצפים של הצעות כהצעות נפרדות על סמך
המקור שלהם.
השירות time_detector
שומר מצב, כלומר נשמר תיעוד של
ההצעה העדכנית ביותר של כל מקור. מוצגות הצעות חדשות עבור
time_detector
אם למקור יש מידע עדכני יותר על נקודת הזמן הקודמת של יוניקס (Unix epoch)
זמינים. השירות time_detector
מעריך מחדש הצעות חדשות וקיימות
ומעדכן את מצב המכשיר כשמתקבלות הצעות.
למרות ששעון UTC מוסכם באופן בינלאומי, יש סיבות שונות לכך יצירת הזמן הנוכחי של יוניקס (Unix epoch) לא תמיד פשוטה מכשיר Android:
- שיטת יוניקס (Unix epoch) שונה מעט משעון UTC. כדי להמיר בין שני המצבים האלה צריך לדעת מתי מתרחשות שניות קפיציות. האופן שבו המקורות מטופלים.
- המקורות עשויים להיות זמינים רק בזמנים מסוימים או מתחת לתאריכים מסוימים בנסיבות השונות. לדוגמה, אם המקור דורש קישוריות רשת, ייתכן שהיא זמינה רק כשהמכשיר מחובר לאינטרנט.
- המקורות יכולים להיות לא מדויקים או לא מדויקים, או שיש בהם שגיאות. עבור למשל, אם מגדל תקשורת בטלפון לא עוקב אחרי 'זמן אוניברסלי' נכון, יכול להיות שמקור הטלפוניה יציג הצעות זמן לא מדויקות.
- יכול להיות שיהיו אי-דיוקים במהלך תחילת התקופה של יוניקס (Unix epoch). לדוגמה, עיכוב ברשת, אגירת נתונים או תזמון תהליכים עלולים לגרום מתחילת הרבעון ועד היום, כדי לא להיות מדויקים.
- שעון ההפניה משמש להתאמת הצעה של הזמן שחלף מאז ייתכן שההצעה התקבלה לא מדויקת.
יש שני מקורות זיהוי עיקריים של זמן שהוגדרו לשימוש כברירת מחדל ב- AOSP:
- רשת: משתמשת ברשת שרתי זמן של Time Protocol (NTP).
- טלפוניה: נעשה שימוש בטלפוניה 'זהות רשת' ו'אזור זמן' (NITZ). .
גם מקורות הטלפוניה וגם מקורות הרשת זקוקים לקישוריות לרשתות חיצוניות, שלא תמיד זמינות.
החל מ-Android 12, מערכת Android תומכת גם המקורות הבאים, שאינם מוגדרים לשימוש כברירת מחדל:
- GNSS: נעשה שימוש ב-GPS ספק מיקום כדי לקבל זמן ממקור GNSS.
- חיצוני: גנרי שמאפשר ליצרני מכשירים לשלב את מקור הנתונים שלהם תקופה של יוניקס (Unix epoch)
הגדרות זמן
המשתמשים יכולים להפעיל זיהוי זמן אוטומטי דרך מערכת > תאריך ושעה ב אפליקציית ההגדרות של AOSP.
איור 1. זיהוי אוטומטי של הזמן בהגדרות.
בטבלה הבאה מתוארים אמצעי הבקרה למשתמשים לזיהוי זמן ב-AOSP אפליקציית ההגדרות.
*ב-Android מגרסה 11 ומטה, ההגדרה הזו נקראת שימוש השעה שמספקת הרשת |
|||
מיקום הגדרות AOSP | השם של הגדרות AOSP | היקף | התנהגות |
---|---|---|---|
מערכת > תאריך ושעה | הגדרת הזמן באופן אוטומטי* | כל המשתמשים | מתג. כאשר המכשיר מופעל, הוא אחראי לזהות את חיבור ה-Unix הנוכחי בזמן שחלף. כשהאפשרות מושבתת, המשתמשים מקבלים גישה לאמצעי בקרה את הזמן של המכשיר באופן ידני. |
כאשר המשתמש מזין את הזמן באופן ידני, הוא מזינים את הזמן המקומי שלו, ולא את הזמן המקומי במועד יוניקס (Unix epoch) בזמן האימון. הזמן הנוכחי של מערכת יוניקס (Unix epoch) מחושב לפי אזור הזמן הנוכחי כדי להסיק תקופה של יוניקס (Unix epoch).
הגדרות אישיות
יצרני מכשירים יכולים להגדיר את שירות time_detector
בדרכים שונות,
למשל, באילו מקורות להשתמש ואיך לתעדף את האותות שמתקבלים מהם.
תעדוף המקורות
החל מ-Android 12, יצרני המכשירים יכולים לשנות את
קובץ תצורה של core/res/res/values/config.xml
שמציין באיזו שעה
מקורות שייכללו בזיהוי הזמן האוטומטי, והעדיפות שבה
המקורות האלה נלקחים בחשבון על ידי time_detector
.
במכשירים עם Android מגרסה 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, הצעות לרשתות טלפוניה מוגדרים כמקורות לשימוש כברירת מחדל. ההצעות לזמן רשת הן מתועדפות מעל הצעות לזמן טלפוניה. יצרני המכשירים יכולים לשנות את ההגדרה סדר המקורות שחוזרים להתנהגות ב-Android 11 ומטה, שבהם הטלפוניה מקבלת עדיפות גבוהה יותר.
כברירת מחדל, אם ההצעה החוקית עם העדיפות הגבוהה ביותר תואמת
השעה הנוכחית בשעון המערכת תוך מספר שניות, הזמן שמוגדר במכשיר לא
שונה. זאת כדי למנוע יצירת עבודות עבור אפליקציות מותקנות שמאזינים
Intent מסוג ACTION_TIME_CHANGED
.
ערכי המקור המותרים הם:
גבולות זמן מותרים
ב-Android 14 יש גבול זמן עליון
הצעות שהתקבלו בשירות time_detector
. אם המכשיר תומך
תהליכי 32 ביט, ה-framework מגדיר גבול זמן עליון כדי למנוע מהמכשיר
משימוש בהצעת זמן שעשויה לגרום לבעיה ב-Y2038.
ב-Android 12 הוצגה מגבלת זמן נמוכה יותר שמשמשת
אימות ההצעות למועדים שהתקבלו בשירות time_detector
. נמוכה יותר
ערך מוגבל בזמן המשמש להצעות אוטומטיות מוגדר מחותמת הזמן של ה-build.
העיקרון הזה הוא ששעה חוקית לא יכולה להיות לפני
את קובץ האימג' של המערכת). אם הצעה לזמן היא לפני מגבלת הזמן התחתונה,
ההצעה בשירות time_detector
נמחקת כי הוא לא תקף אם
חותמת הזמן של ה-build נכונה.
במכשירים עם Android מגרסה 11 ומטה, השירות time_detector
לא פועל
אימות הצעות נכנסות לזמן Unix epoch.
ניפוי באגים ובדיקה של זמן
בקטע הזה מוסבר איך לנפות באגים ולבדוק את ההתנהגות של
השירות 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 epoch של המכשיר.
המידע על היסטוריית ההצעות מציין את ההצעות שהציעו כל מקור.
זיהוי אוטומטי של אזור הזמן
בקטע הזה מוצגת סקירה כללית של השירות time_zone_detector
.
מנהל את הזיהוי האוטומטי של אזור הזמן, פקדי המשתמשים בהגדרות, בטלפוניה
זיהוי אזור הזמן של המיקום ופרטי הבדיקה.
השירות time_zone_detector
time_zone_detector
שירות, שקיים במכשירים עם Android מגרסה 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
: ודאות ולא ודאית. אלו הם
דוגמאות לסוגי הצעות:
סוג =
uncertain
,zoneIds = []
- האלגוריתם לא יודע מהו אזור הזמן.
סוג =
certain
,zoneIds = ["Europe/London"]
- האלגוריתם בטוח שהאזור הוא אירופה/לונדון.
סוג =
certain
,zoneIds = []
- האלגוריתם הוא בטוח, אבל לא משויך מזהה אזור ולציין את המיקום הנוכחי.
סוג =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- האלגוריתם בטוח שהתשובה היא אחת משני אזורים, אבל לא יכול לבחור בין 'אמריקה/דנוור' ו-"America/Phoenix".
שירות time_zone_detector
מתייחס לרצפים של הצעות כייחודיות
על סמך האלגוריתם שלהם. בהתאם לאלגוריתם, ההצעות עשויות גם
מטא-נתונים שמציינים את רמת הוודאות של האלגוריתם.
השירות time_zone_detector
שומר מצב, כלומר נשמר תיעוד
של ההצעה העדכנית ביותר שכל אלגוריתם מציע. הצעות חדשות נשלחות
לשירות time_zone_detector
אם ההצעה הקודמת כבר לא קיימת
נכון; כלומר, אם לאלגוריתם יש עכשיו הצעה אחרת, או
הם איבדו את היכולת לזהות את אזור הזמן. השירות time_zone_detector
בדיקה מחדש של הצעות חדשות וקיימות ועדכון מצב המכשיר
מתקבלות הצעות.
ב-Android יש תמיכה בשני אלגוריתמים לזיהוי של אזורי זמן:
- טלפוניה
- מיקום
השירות time_zone_detector
בדרך כלל משתמש באלגוריתם יחיד כדי
לקבוע את אזור הזמן. כשיש תמיכה באלגוריתם המיקום במכשיר,
האלגוריתם שבו המכשיר משתמש נקבע על סמך
הגדרות אזור הזמן שנקבעו על ידי המשתמש. כאשר
באלגוריתם שבו נעשה שימוש הופך לבלתי ודאי לגבי אזור הזמן, time_zone_detector
בדרך כלל לא משתמש בהצעות מאלגוריתם אחר. הצעות
שמשויכים לאלגוריתמים שלא נמצאים בשימוש, יכולים להישמר בזיכרון על ידי
time_zone_detector
, אבל לא נעשה בהם שימוש אלא אם האלגוריתם
שינויים. כשהמשתמש משנה את ההגדרות לזיהוי אוטומטי של אזור הזמן
והאלגוריתם משתנה, ההצעה העדכנית ביותר שזמינה
נעשה שימוש באלגוריתם חדש.
לקבלת פרטים על המצב שבו נעשה שימוש באלגוריתמים מרובים כדי לקבוע אזור הזמן, אפשר לראות מצב חלופי של טלפוניה.
מצב חלופי של טלפוניה
במכשירים עם Android מגרסה 13 ואילך,
השירות time_zone_detector
תומך במצב חלופי של טלפוניה. המצב הזה
מאפשרת ל-Android להשתמש בהצעות לזיהוי טלפוניה באופן זמני במצבים שבהם
זיהוי המיקום לא יכול לזהות את אזור הזמן או את המקום שבו זיהוי המיקום
זיהוי אזור הזמן ארוך יותר מזיהוי הטלפוניה.
מצב ברירת המחדל של הטלפוניה חל על מכשירים שבהם גם שירותי הטלפוניה וגם מיקום זיהוי נתמכות, וכשהמשתמש הפעיל את האפשרות השתמש במיקום כדי להגדיר אזור הזמן בהגדרות אזור הזמן. המצב מופעל באופן אוטומטי כשהמכשיר מופעל מחדש וכשמצב טיסה מושבת.
ב-Android מגרסה 14 ואילך, גיבוי הטלפוניה יכול להיות מופעלת באמצעות ממשקי API לדיווח על סטטוס LTZP, כלומר, אם דיווח של ערוץ LTZP הוא לא בטוח וגם היכולת שלו לזהות את המיקום או אזור הזמן יפחת על ידי הסביבה שלו, מצב ברירת המחדל של הטלפוניה הוא מופעל.
במצב חלופה לטלפוניה, השירות time_zone_detector
משתמש בטלפוניה
הצעות כאילו שזיהוי המיקום מושבת עד שאלגוריתם המיקום
מעלה הצעה מסוימת. לאחר קבלת הצעה מסוימת, תכונת הטלפוניה
מצב הגיבוי החלופי מושבת והמערכת משתמשת רק בהצעות למיקום.
לפרטי הגדרה של מצב החלופה של הטלפוניה: הגדרות זיהוי אזור זמן.
הגדרות אזור הזמן
המשתמשים יכולים להפעיל ולקבוע את ההגדרות לזיהוי אוטומטי של אזור הזמן אפליקציית ההגדרות AOSP.
איור 2. זיהוי אוטומטי של אזור הזמן בהגדרות.
הטבלה הבאה מתארת את פקדי המשתמשים לזיהוי אזורי זמן אפליקציית ההגדרות של AOSP.
*ב-Android מגרסה 11 ומטה, ההגדרה הזו מסומנת לפי אזור הזמן שמספקת הרשת |
|||
מיקום הגדרות AOSP | השם של הגדרות AOSP | היקף | התנהגות |
---|---|---|---|
מערכת > תאריך ושעה | הגדרת אזור הזמן באופן אוטומטי* | כל המשתמשים | מתג. כשהאפשרות מופעלת, המכשיר אחראי לזהות את השעה הנוכחית תחום. כשהאפשרות מושבתת, המשתמשים מקבלים פקדים להגדרת אזור הזמן באופן ידני. |
מערכת > תאריך ושעה | שימוש במיקום להגדרת אזור הזמן | המשתמש הנוכחי | מתג. זמין ב-Android מגרסה 12. המתג הזה הוא מוצגים רק כאשר במכשיר יש תמיכה בזיהוי אזור הזמן של המיקום. מידע על השינויים שהושקו ב-Android 14 זמין במאמר מכשירים שתומכים רק בזיהוי אזור הזמן של המיקום. |
מיקום | שימוש במיקום | המשתמש הנוכחי | מתג. מאפשרת או מונעת שימוש במיקום המכשיר באופן כללי. הערך הוא רלוונטי אם במכשיר יש תמיכה בזיהוי אזור הזמן של המיקום. |
בהמשך מוצגת סקירה כללית של התנהגות המכשיר לפי אזור הזמן זיהוי בהינתן ההגדרות שנבחרו על ידי המשתמש:
[תאריך ושעה] הגדרה אוטומטית של אזור הזמן: כבוי
- המשתמש צריך לבחור את אזור הזמן באופן ידני.
[תאריך ושעה] הגדרה אוטומטית של אזור הזמן: מופעל
[מיקום] שימוש במיקום: מושבת
- אותות טלפוניים משמשים לזיהוי אזור הזמן.
[מיקום] שימוש במיקום: מופעל
[תאריך ושעה] שימוש במיקום כדי להגדיר את אזור הזמן: מופעל
- המיקום משמש לזיהוי אזור הזמן.
[תאריך ושעה] שימוש במיקום כדי להגדיר את אזור הזמן: כבוי
- אותות טלפוניים משמשים לזיהוי השעה תחום.
מכשירים של משתמשים מרובים
מכיוון שחלק מההגדרות המעורבות חלות על המשתמש הנוכחי, ההתנהגות של זיהוי אזור הזמן במכשיר יכולה להשתנות כשהמשתמש הנוכחי במכשיר Android מרובה משתמשים.
המתג שימוש במיקום להגדרת אזור זמן מוגבל למשתמש הנוכחי וגם לא מוגבל על ידי מדיניות המכשיר, כלומר המשתמשים תמיד יכולים לשנות את גם כשהמתג הגדרת אזור הזמן באופן אוטומטי במצב מושבת או אם הפקדים של אזור הזמן או השעה מוגבלים על ידי הבקר לניהול מדיניות המכשירים (DPC).
מכשירים שתומכים רק באלגוריתם של זיהוי אזור הזמן של המיקום
בקטע הזה מתוארת ההתנהגות במכשירים שתומכים רק במיקום באלגוריתם כלשהו.
Android מגרסה 14 ואילך
- האפשרות שימוש במיקום לא מוצגת למשתמשים בהגדרות AOSP האפליקציה והמכשיר פועלים כאילו האפשרות שימוש במיקום מופעלת.
- הערך של ההגדרה
SettingsProvider
ברמת המשתמש המערכת מתעלמת מ-location_time_zone_detection_enabled
. הערך הזה מתעד את ההעדפה של המשתמש בסוגים אחרים של מכשירים.
Android 12 או Android 13
- האפשרות שימוש במיקום מוצגת למשתמשים באפליקציית ההגדרות של AOSP. המשתמשים יכולים להשבית את האפשרות. אם האפשרות מושבתת, המכשיר לא יזהה את אזור הזמן באופן אוטומטי.
התנהגות בזמן מעבר לזיהוי אוטומטי ובחזרה ממנו
כשהמשתמש מעביר את זיהוי אזור הזמן מידני לאוטומטי,
יכול להיות שהשדה time_zone_detector
כבר מוגדר לאזור הזמן הנוכחי. אם כן,
מאחר שהמשתמש מפעיל זיהוי אוטומטי, אזור הזמן של המכשיר עשוי להשתנות
בו-זמנית כדי להתאים לדעת השירות של time_zone_detector
.
באופן דומה, כשהמשתמש מבצע שינוי בהגדרות שמוביל לשינוי
האלגוריתם הנוכחי של השירות time_zone_detector
, time_zone_detector
עשוי
כבר קיבלת הצעות לגבי האלגוריתם החדש,
ולכן משך הזמן של המכשיר
עשויים להשתנות בהתאם לדעה של שירות time_zone_detector
באופן מיידי.
זיהוי אזור הזמן של הטלפוניה
בזיהוי אזור הזמן של הטלפוניה נעשה שימוש באותות טלפוניה כדי לקבוע את אזור זמן. למידע נוסף, אפשר לעיין באזור הזמן של הטלפוניה זיהוי.
זיהוי אזור הזמן של המיקום
זיהוי אזור הזמן של המיקום זמין ב-Android 12 ומעלה. זוהי תכונה אופציונלית לזיהוי אוטומטי של אזור הזמן שמאפשרת מכשירים כדי לקבוע את אזור הזמן הנוכחי שלהם במיקום שלהם.
השירות location_time_zone_manager
, שהושק ב-
מערכת Android 12 פועלת
שרת המערכת, ומכיל את הקוד שאחראי לשליחת המיקום
הצעות האלגוריתם לשירות time_zone_detector
.
מידע נוסף זמין במאמר הבא:
זיהוי אזור הזמן של המיקום.
שיקולים לשימוש בתכונות
בקטע הזה מתוארים היבטים של תכונת זיהוי אזור הזמן של המיקום, כדי לעזור ליצרן המכשיר לקבוע אם ליישם את התכונה במכשיר.
השוואה בין זיהוי טלפוניה ומיקום
הטבלה הבאה מציגה השוואה של היתרונות והחסרונות של באמצעות מיקום במקום אותות טלפוניה לזיהוי אזור זמן.
זיהוי טלפוניה | זיהוי מיקום | |
---|---|---|
תיקון | משתנה בהתאם למדינה. תלוי בחשבון הניהול (MCC), בנכונות ובזמינות של NITZ. |
תלוי בתצורת התכונה או ברכיבי הפלאגין. בדרך כלל מידת הנכונות משתנה לפי:
|
אפשרות לקבל עדכונים | זיהוי הטלפוניה מסתמך על קבצים שנכללים בזמן שניתן לעדכון Zone DataModule (com.android.tzdata APEX). | תלוי בתצורת התכונה או ברכיבי הפלאגין. בדרך כלל, האפשרות לקבל עדכונים תלויה בשאלה אם המכשיר משתמש בשרת או בלקוח בנתוני המפה של אזור הזמן. הערה: נתוני המפה של אזור הזמן לא נכללים בפונקציה זמן המודול 'נתוני אזור' משמש לעדכון עותק ה-TZDB ב-Android וזמן אחר. מידע על התחום. יצרני המכשירים חייבים גם להביא בחשבון את עקביות הגרסאות בין כללי אזור הזמן ונתוני המפה של אזור הזמן. |
צריכת חשמל | ללא צריכת חשמל או צריכת חשמל נמוכה | תלויה בהגדרות המיקום של המשתמש, ביישומי הפלאגין שבהם נעשה שימוש ובדרך כלל אילו אפליקציות אחרות מבקשות את המיקום. |
זמינות | מכשירי טלפוניה בלבד. בדרך כלל נדרש כרטיס SIM פעיל. | זיהוי המיקום תלוי בספקי המיקום הזמינים. |
פרטיות המשתמשים
אזור הזמן המועדף על המשתמש נקבע בדרך כלל לפי המיקום הגיאוגרפי שלו המיקום. המיקום הוא מידע אישי רגיש. המשתמשים עשויים להיות חוששים על המיקום שלהם משותף במסגרת זיהוי אזורי הזמן. ללא קשר לזיהוי אזור הזמן, כל האפליקציות שפועלות במכשיר יכולות לקרוא את אזור הזמן הנוכחי של המכשיר בלי צורך בהרשאה של Android, וגם אפליקציות יכולות להסיק מושג לא מדויק לגבי מיקום המכשיר על סמך המידע הזה.
באופן ספציפי, זיהוי אזור הזמן יכול לפעול במצב פסיבי או פעיל היא:
- פסיבי: משהו בסביבת המכשיר שולח למכשיר את ההודעה אזור הזמן שבו רוצים להשתמש בסביבה הזו.
- פעיל: המכשיר צריך לחשב את אזור הזמן בעצמו בהתאם למשתמשים הגדרות הפרטיות וההסכמה שלהן, המיקום של המכשיר כדי לעשות זאת. לאחר מכן הוא יכול לשתף את המיקום שלו עם גורמים חיצוניים שירותים שונים. בדיון שלמטה מופיעים פרטים על פרטיות המשתמשים והסכמתם.
לזיהוי פסיבי, כמו באמצעות אלגוריתם הטלפוניה, אין צורך ההשלכות על פרטיות המשתמשים.
זיהוי פעיל, למשל באמצעות אלגוריתם המיקום, כרוך בקביעת את המיקום של המכשיר, שהמשתמשים לא ירצו להסכים לו, והמיקום עשוי להישלח דרך רשת כדי לקבוע את מזהה אזור הזמן.
הגישה של Android לפרטיות המשתמש לזיהוי אזור הזמן נותנת למשתמש יכולת להשבית בנפרד אלגוריתמים שצפויים להיות פעילים. כמו כן, קוד פלטפורמת AOSP לא מתייחס ישירות למיקום עצמו: את זיהוי המיקום ומיפוי המיקום למזהי אזורי זמן נשארים בפלאגין רכיבים שהוגדרו על ידי יצרני המכשירים.
לפרטים נוספים על תכונות לשמירה על פרטיות המשתמשים, ראו אזור זמן של מיקום זיהוי.
הגדרות אישיות
יצרני המכשירים יכולים להגדיר את השירות time_zone_detector
לשינוי
על ההתנהגות שלו. בקטע הזה מתוארות אפשרויות תצורה
ההתנהגות של השירות time_zone_detector
. לפרטי הגדרה של
האלגוריתמים לזיהוי טלפוניה ואזור זמן,
זיהוי אזור הזמן של הטלפוניה
וגם
זיהוי אזור הזמן של המיקום.
הגדרת ה-AOSP הבסיסית היא
frameworks/base/core/res/res/values/config.xml
מפתח ההגדרה | ערך AOSP | תיאור |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
כאשר true , time_zone_detector משתמש בטלפוניה
מצב חלופי. האפשרות הזו זמינה ב-Android 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
לבדיקה,
במיוחד במהלך בדיקות ידניות ממושכות, המכשיר עשוי לסנכרן את
הדגלים, שיאפסו את הדגלים ותמחקו את הערכים שהוגדרו לבדיקה.
ב-Android מגרסה 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 Controller. |
mTelephonyDetectionSupported |
האם במכשיר יש זיהוי של אזור הזמן בטלפון. |
mGeoDetectionSupported |
האם המכשיר תומך בזיהוי אזור הזמן של המיקום. כאן על המצב אפקטיבי על סמך ההגדרות והנוכחות אונליין של LTZP אחד לפחות. |
mAutoDetectionEnabled |
האם זיהוי אוטומטי של אזור הזמן מופעל. |
mLocationEnabled |
מתג המיקום הראשי. |
mGeoDetectionEnabled |
מתג האלגוריתם: false מציין את אלגוריתם הטלפוניה,
ו-true מציין את אלגוריתם המיקום. |
המידע על היסטוריית ההצעות מציין אילו הצעות הוצעו באמצעות הגדרות (ידניות) ובאמצעות האלגוריתמים של הטלפוניה והמיקום.