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

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

مبدا زمان خارجی به شما امکان می دهد پیشنهادات زمان کاملاً سفارشی را به Android ارائه دهید. پس از دریافت پیشنهادات از مبدا زمان خارجی، سرویس 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 از مهر زمانی ارسال شده به این روش برای تنظیم زمان فعلی یونیکس استفاده می‌کند.