تشخیص زمان خارجی

از اندروید 12، اندروید به صورت اختیاری می‌تواند از یک منبع زمانی خارجی برای پیشنهاد زمان‌های یونیکس به سرویس time_detector استفاده کند. این به طور پیش فرض در AOSP فعال نیست.

مبدا زمان خارجی به سازندگان دستگاه اجازه می دهد تا پیشنهادات زمان کاملاً سفارشی را به اندروید ارائه دهند. پس از دریافت پیشنهادات از مبدا زمان خارجی، سرویس time_detector تعیین می کند که آیا ساعت سیستم را با استفاده از قوانین اولویت بندی پیکربندی شده به روز کند یا خیر.

پیاده سازی

برای پشتیبانی از تشخیص زمان خارجی، سازندگان دستگاه باید مؤلفه‌ای را پیاده‌سازی کنند که پیشنهادات زمان خارجی را از طریق تماس API سیستم به سرویس time_detector ارسال کند.

برای پیکربندی منبع خارجی، از فایل پیکربندی سرور سیستم core/res/res/values/config.xml استفاده کنید. مقدار external به config_autoTimeSourcesPriority اضافه کنید.

مثال زیر به اندروید می‌گوید هنگام تنظیم ساعت سیستم، به پیشنهادات زمان خارجی بالاترین اولویت را بدهد. اگر پیشنهاد زمانی خارجی معتبری در دسترس نباشد، از مبدأ بعدی، gnss در این مورد استفاده می‌شود.

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

برای ارائه یک پیشنهاد زمان خارجی به سیستم، از متد suggestExternalTime() در TimeManager استفاده کنید. اگر مبدا خارجی با استفاده از config_autoTimeSourcesPriority در فایل پیکربندی پیکربندی شده باشد و هیچ پیشنهاد زمانی با اولویت بالاتر در دسترس نباشد، Android از مهر زمانی ارسال شده به این روش برای تنظیم زمان فعلی یونیکس استفاده می‌کند.