في الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث، يمكن لنظام التشغيل Android استخدام نظام GNSS (النظام العالمي لتحديد المواقع عبر الأقمار الصناعية) بشكل اختياري لاقتراح أوقات Unix epoch على خدمة time_detector
.
لا تكون هذه الميزة مفعّلة تلقائيًا في "مشروع Android المفتوح المصدر" (AOSP).
عند تفعيل ميزة رصد الوقت باستخدام نظام GNSS، تستمع gnss_time_update_service
بشكل غير نشط إلى تعديلات الموقع الجغرافي من مصادر GNSS وترسل اقتراحات GNSS إلى خدمة time_detector
. بعد ذلك، تحدّد خدمة time_detector
ما إذا كان سيتم تعديل ساعة النظام لتتطابق مع الاقتراح.
التأثير على استخدام الطاقة
يستمع نظام التشغيل AOSP gnss_time_update_service
بشكل غير مباشر إلى تعديلات الموقع الجغرافي. وهذا يعني أنّ الخدمة لا تفعّل نظام تحديد المواقع العالمي (GPS) بشكل نشط أو تستهلك طاقة إضافية. يعني هذا أيضًا أنّه ما لم يطلب تطبيق أو خدمة أخرى في النظام
تعديلات على الموقع الجغرافي بشكل نشط، لن يتلقّى gnss_time_update_service
تعديلاً على الموقع الجغرافي ولن يقترح وقتًا لنظام GNSS.
التنفيذ
لتفعيل ميزة رصد الوقت باستخدام نظام GNSS، على مصنّعي الأجهزة تفعيل gnss_time_update_service
بشكل صريح في خادم النظام.
يجب تعديل قيمتَي config_enableGnssTimeUpdateService
وconfig_autoTimeSourcesPriority
في ملف core/res/res/values/config.xml
لتفعيل هذه الميزة. اضبط قيمة
config_enableGnssTimeUpdateService
على true
وأضِف gnss
إلى قائمة السلع
الخاصة بـ config_autoTimeSourcesPriority
. يحدّد موضع gnss
في قائمة الأولويات الأولوية الممنوحة لاقتراحات نظام GNSS مقارنةً بتلك الواردة من مصادر أخرى.
في ما يلي مثال على ملف core/res/res/values/config.xml
تم فيه تفعيل ميزة رصد الوقت باستخدام نظام GNSS، ويحتل gnss
المرتبة الثالثة في قائمة الأولوية بعد network
وtelephony
:
<!-- 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>network</item>
<item>telephony</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>
تصحيح الأخطاء واختبارها
لاختبار رصد الوقت باستخدام نظام GNSS، استخدِم أوامر adb shell cmd location
.
استخدِم هذه الأوامر لإضافة موفّري مواقع اختبارية يمكنك من خلالها تحديد موقع جغرافي ووقت GNSS المرتبط به. يستمع تطبيق gnss_time_update_service
إلى هذه التعديلات على الموقع الجغرافي، ويقدّم اقتراحات بشكل دوري.
في ما يلي أمثلة على أوامر adb shell cmd location
:
فعِّل مفتاح الموقع الجغرافي الرئيسي للمستخدم الذي يستخدم الجهاز حاليًا (عادةً المستخدم
10
في السيارات). إذا كنت قد أعدت ضبط الجهاز للتو، يمكنك إجراء ذلك من خلال معالج الإعداد.adb shell cmd location set-location-enabled true --user 10
إضافة مقدّم خدمة اختبار نظام تحديد المواقع العالمي (GPS) (عادةً ما يتعذّر ذلك في المرة الأولى ويتم عرض استثناء أمان مع
android from <SOME_UID> not allowed to perform MOCK_LOCATION
)adb shell cmd location providers add-test-provider gps
تفعيل أذونات المواقع الوهمية لمعرّف UID السابق
adb shell appops set UID_PRINTED_IN_PREVIOUS_ERROR android:mock_location allow
إضافة موفّر اختبار نظام تحديد المواقع العالمي (GPS) (يجب أن يعمل بدون أخطاء)
adb shell cmd location providers set-test-provider-enabled gps true
تفعيل موفّر اختبار نظام تحديد المواقع العالمي (GPS)
adb shell cmd location providers set-test-provider-enabled gps true
ضبط الموقع الجغرافي مع الوقت (لا يمكن أن يكون الوقت أقل من الحد الأدنى الذي تم ضبطه)
adb shell cmd location providers set-test-provider-location gps --location LATITUDE,LONGITUDE --time TIME