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

از اندروید ۱۲ به بعد، اندروید می‌تواند به صورت اختیاری از یک منبع زمان خارجی برای پیشنهاد زمان‌های آغازین یونیکس به سرویس 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 در فایل پیکربندی پیکربندی شده باشد و هیچ پیشنهاد زمانی با اولویت بالاتر در دسترس نباشد، اندروید از timestamp ارسال شده به این متد برای تنظیم زمان فعلی Unix epoch استفاده می‌کند.