זיהוי זמן חיצוני

החל מ-Android 12, מערכת Android יכולה להשתמש באופן אופציונלי במקור זמן חיצוני כדי להציע זמנים של ראשית זמן יוניקס (Unix epoch) לשירות time_detector. האפשרות הזו לא מופעלת כברירת מחדל ב-AOSP.

מקור הזמן החיצוני מאפשר ליצרני מכשירים לספק ל-Android הצעות זמן מותאמות אישית לחלוטין. אחרי קבלת ההצעות ממקור הזמן החיצוני, שירות time_detector קובע אם לעדכן את שעון המערכת באמצעות כללי התעדוף שהוגדרו.

הטמעה

כדי לתמוך בזיהוי זמן חיצוני, יצרני מכשירים צריכים להטמיע רכיב ששולח הצעות לזמן חיצוני לשירות time_detector באמצעות קריאה למערכת API.

כדי להגדיר את המקור החיצוני, משתמשים בקובץ התצורה של שרת המערכת core/res/res/values/config.xml. מוסיפים את הערך external אל config_autoTimeSourcesPriority.

בדוגמה הבאה, מערכת Android מקבלת הוראה לתת הצעות חיצוניות לגבי השעה את העדיפות הגבוהה ביותר כשמגדירים את השעון של המערכת. אם אין הצעה תקפה לזמן חיצוני, המערכת משתמשת במקור הבא, gnss במקרה הזה.

<string-array name="config_autoTimeSourcesPriority">
        <item>external</item>
        <item>gnss</item>
</string-array>

כדי לספק למערכת הצעה לזמן חיצוני, משתמשים ב-method ‏suggestExternalTime() ב-TimeManager. אם המקור החיצוני מוגדר באמצעות config_autoTimeSourcesPriority בקובץ ההגדרות ולא זמינות הצעות זמן בעדיפות גבוהה יותר, מערכת Android משתמשת בחותמת הזמן שמועברת לשיטה הזו כדי להגדיר את הזמן הנוכחי של ראשית זמן UNIX.