זיהוי זמן אוטומטי מקבל הצעות זמן ממקורות שונים, בוחר את האפשרות הטובה ביותר ולאחר מכן מכוון את שעון המערכת באנדרואיד כך שיתאים. מהדורות קודמות של אנדרואיד סיפקו שתי דרכים להגדיר תאריך ושעה, או שהוגדרו ידנית לכל משתמש או על ידי זיהוי זמן אוטומטי, והוגדרו על ידי אחת מהאפשרויות הבאות:
-
telephony
משתמשת באותות טלפוניה ברשת זהות ואזור זמן (NITZ). -
network
משתמשת בשרתי זמן של Network Time Protocol (NTP).
כל אפשרות דורשת חיבורים לרשתות חיצוניות, שלא תמיד זמינות ב-Android Automotive. לדוגמה, במדינות מסוימות, ייתכן שלחלק מהמכוניות אין טלפוניה מובנית. לכן, זמן מערכות ניווט לווייניות גלובליות (GNSS) מסופק כמקור לזמן מערכת לשימושך כאשר קישוריות הרשת אינה זמינה.
מהדורת אנדרואיד קרובה זו מספקת שתי אפשרויות נוספות לזיהוי והגדרת זמן אוטומטית:
אפשר זיהוי זמן אוטומטי
כדי לאפשר זיהוי זמן אוטומטי, הקפד לבחור בהגדרות > תאריך ושעה > תאריך ושעה אוטומטיים :
איור 1. בחר תאריך ושעה אוטומטיים
הגדר מקורות זמן
כדי לציין אילו מקורות זמן לכלול בזיהוי זמן אוטומטי, ואת העדיפות שבה יש לקחת בחשבון את מקורות הזמן הללו, עליך לשנות את קובץ תצורת המשאבים של המכשיר, core/res/res/values/config.xml
:
<!-- 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>telephony</item> <item>network</item> </string-array>
בדוגמה זו, telephony
network
נחשבות בזיהוי זמן אוטומטי והצעות לזמן telephony
מתעדפות לפני הצעות זמן network
.
באופן כללי, הצעות ממקור בעדיפות גבוהה יותר מתעלמים אם ההצעה אינה חוקית או אם ההצעה ישנה מדי. כמו כן, אם ההצעה התקפה בעדיפות הגבוהה ביותר תואמת את זמן שעון המערכת הנוכחי של המכשיר בתוך מספר שניות (ערך ברירת המחדל הוא שתי (2) שניות), השעה לא תשתנה.
זמן תחתון
אנדרואיד 12 מספק זמן נמוך יותר לשימוש בעת אימות הצעות זמן. לפני תכונה זו, זיהוי זמן אוטומטי לא היה מאמת את זמן ה-UTC הנכנס המוצע. עם תכונה זו, זמנים שחולפים לפני הגבול התחתון נמחקים.
הערך התחתון נקבע מתאריך הנגזר מחותמת הזמן של הבנייה. זה עובד על העיקרון שזמן חוקי לא יכול להתרחש לפני שתמונת המערכת נבנתה. אנדרואיד לא אוכפת גבול עליון.
הצעות לזמן GNSS
מקור הזמן gnss
חדש באנדרואיד 12 והוא מסופק על ידי אותות GPS. זהו מקור אמין לזמן שבו telephony
network
אינם זמינים. אפשרות זו מתווספת ל- GnssTimeUpdateService
החדש ב-SystemServer שמאזין באופן פסיבי לעדכוני מיקום. כאשר מתקבל מיקום חוקי, GnssTimeUpdateService
מציע הצעה ל- TimeDetectorService
, אשר קובע אם יש לעדכן את שעון המערכת.
כברירת מחדל, מקור הזמן gnss
אינו מופעל ב-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>telephony</item> <item>network</item> <item>gnss</item> </string-array> <!-- Enables the GnssTimeUpdate service. This is the global switch for enabling Gnss time based suggestions to TimeDetector service. See also config_autoTimeSourcesPriority. --> <bool name="config_enableGnssTimeUpdateService">true</bool>
כדי להפעיל תכונה זו:
- עדכון
config_enableGnssTimeUpdateService
. הערך עבורconfig_enableGnssTimeUpdateService
חייב להיות מוגדר כ-true
. - עדכן
config_autoTimeSourcesPriority
. יש להוסיףgnss
לרשימת הפריטים עבורconfig_autoTimeSourcesPriority
. מיקומו שלgnss
ברשימת העדיפות קובע את העדיפות הניתנת להצעות GNSS, ביחס לערכים ממקורות אחרים.
השפעה על הכוח
GnssTimeUpdateService
מאזין באופן פסיבי לעדכוני מיקום, מה שאומר שהוא אף פעם לא מפעיל באופן אקטיבי את ה-GPS כדי לצרוך כוח נוסף. כתוצאה מכך, הכוח הנצרך כאשר מקור ה-GNSS מופעל הוא זניח. זה גם אומר שאם אפליקציה או שירות אחר במערכת מבקשת באופן פעיל עדכוני מיקום, GnssTimeUpdateService
לא מקבל עדכון מיקום ומציע שעת GNSS.
בדיקה
חבילת בדיקות תאימות (CTS)
בדיקת CTS מסופקת כדי לוודא שזמן מסופק על ידי GNSS זמין. לפרטים, ראה LocationShellCommand.java
.
בדיקות יחידה
ראה את בדיקות היחידה הבסיסיות בקובץ הבא:
atest frameworks/base/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java
בדיקות ידניות
כדי לבדוק תכונה זו, נוספו פקודות חדשות ל- LocationShellCommand.java
. השתמש בפקודות אלה כדי להוסיף ספקי בדיקה שאיתם תוכל לציין מיקום ואת זמן ה-GNSS המשויך. GnssTimeUpdateService
מקשיב לעדכוני מיקום אלה ומציע מעת לעת הצעות.
הערה: הממשק של פקודות אלה עשוי להשתנות בין מהדורות.
# Enable Master Location Switch in the foreground user (usually user 10 on automotive). # If you just flashed, this can be done through Setup Wizard. adb shell cmd location set-location-enabled true --user 10 # Add GPS test provider (this usually fails the first time and will throw a SecurityException # with "android from <some-uid> not allowed to perform MOCK_LOCATION".) adb shell cmd location providers add-test-provider gps # Enable mock location permissions for previous UID adb shell appops set <uid printed in previous error> android:mock_location allow # Add GPS test provider (Should work with no errors.) adb shell cmd location providers add-test-provider gps # Enable GPS test provider adb shell cmd location providers set-test-provider-enabled gps true # Set location with time (time can't be earlier than the limit set by the lower bound.) adb shell cmd location providers set-test-provider-location gps --location <LATITUDE>,<LONGITUDE> --time <TIME>
הצעות זמן חיצוני
הצעות זמן חיצוניות הן דרך נוספת לספק הצעות זמן אוטומטיות לאנדרואיד. האפשרויות החדשות הללו מאפשרות לך לספק הצעות זמן מותאמות לחלוטין לאנדרואיד, שיכולות לנבוע מ-ECU שונים, אשר בתורם יכולים להשתמש בשילוב של שעון זמן אמת, GNSS, NITZ או כל מקור זמן אחר.
ההצעות הבאות זמינות באנדרואיד 12 כדי לשקול אותן כהצעות זמן external
:
- מאפייני VHAL. מסופק מאפיין VHAL חדש בשם
EPOCH_TIME
. מאפיין זה מציין את מספר האלפיות השניות שחלפו מאז 1/1/1970 UTC. ניתן להעביר את הערך שלו ל-AndroidTimeManager
כדי להציע זמן מערכת חדש. יישום VHAL לדוגמה שמעדכן מאפיין זה מסופק ביישום ההפניה למטה. - ממשקי API של מערכת. שיטה חדשה בשם
suggestExternalTime()
זמינה ב-TimeManager כדי לספק למערכת הצעת זמן חיצונית. אם המערכת מוגדרת לקחת בחשבון הצעות זמן חיצוניות (באמצעותconfig_autoTimeSourcesPriority
בקובץ התצורה), חותמת הזמן המועברת לשיטה זו משמשת לקביעת זמן המערכת, אם אין הצעות זמינות לזמן עדיפות גבוהה יותר.
אתה יכול ליישם פתרון זמן חיצוני כמתואר להלן:
- עדכן את קובץ תצורת המשאב (
core/res/res/values/config.xml
) ולאחר מכן הוסף את הערךexternal
ל-config_autoTimeSourcesPriority
:<string-array name="config_autoTimeSourcesPriority> <item>external</item> <item>gnss</item> </string-array>
פעולה זו מורה לאנדרואיד לתת להצעות זמן חיצוניות את העדיפות הגבוהה ביותר בעת הגדרת שעון המערכת. חומרה על הרכב כותבת הצעת חותמת זמן למאפיין החדש
EPOCH_TIME
VHAL . - אפליקציה שסופקה על ידי הספק קוראת מאפיין זה וקוראת ל-
TimeManager.suggestExternal()
. לאחר מכן, אנדרואיד יכולה להשתמש בחותמת הזמן שסופקה כערך שעון המערכת החדש.