توضّح هذه الصفحة طريقة عمل ميزة التعرّف على الوقت والمنطقة الزمنية على Android. ويشمل ذلك كيفية رصد Android تلقائيًا للوقت والمناطق الزمنية، وخيارات الإعدادات المتاحة لمصنّعي الأجهزة، ومعلومات الاختبار.
نظرة عامة حول الوقت والمناطق الزمنية
لتحديد الوقت المحلي للمستخدم وعرضه في مواقع مثل شريط الحالة، يتتبّع نظام التشغيل Android حالتين مرتبطتين ولكن مستقلتين:
- الوقت الحالي لحقبة يونكس
- المنطقة الزمنية الحالية
إنّ وقت عصر Unix الحالي والمنطقة الزمنية الحالية هما حالتان على مستوى الجهاز، ما يعني أنّهما مشتركتان بين جميع مستخدمي الجهاز.
إنّ الوقت الحالي لحقبة Unix ليس قيمة ثابتة. ويتم تعديله تلقائيًا ليعكس مرور الوقت. بالإضافة إلى مرور الوقت بشكل طبيعي، يتم تعديل وقت الحقبة الحالية لنظام Unix على الجهاز إذا تبيّن أنّه غير صحيح، مثلاً بعد انقطاع الطاقة عن الجهاز.
تحدّد المنطقة الزمنية الحالية التعديل الذي يجب إجراؤه لتحويل وقت حقبة Unix الحالي إلى وقت محلي. على سبيل المثال، خلال فصل الصيف في لوس أنجلوس، يطرح الجهاز 7 ساعات من وقت عصر Unix الحالي، وفي فصل الشتاء يطرح 8 ساعات.
لإتاحة عمليات احتساب الوقت المحلي هذه، تحتوي جميع أجهزة Android على قاعدة بيانات تتضمّن جميع قواعد المناطق الزمنية العالمية. لمزيد من المعلومات حول قواعد المناطق الزمنية، يُرجى الاطّلاع على قواعد المناطق الزمنية.
عندما ينتقل المستخدم إلى موقع جغرافي جديد يستخدم منطقة زمنية مختلفة، لا يلزم تعديل الوقت الحالي لنظام Unix، ولكن يريد المستخدم عادةً رؤية الوقت المحلي بدلاً من الوقت في موقعه الجغرافي السابق. يضمن تغيير المنطقة الزمنية الحالية تطبيق معادلة التوقيت الصحيحة على وقت حقبة Unix الحالي لعرض التوقيت المحلي الصحيح للموقع الجغرافي الجديد.
يتيح AOSP للمستخدمين التحكّم بشكل مستقل في ما إذا كان سيتم ضبط الوقت والمنطقة الزمنية تلقائيًا من خلال الآليات التالية.
- الرصد التلقائي للوقت: يضمن أن يكون لدى الجهاز الوقت الحالي الصحيح لنظام Unix.
- الرصد التلقائي للمنطقة الزمنية: يضمن أن يكون الجهاز مضبوطًا على المنطقة الزمنية الحالية الصحيحة.
الرصد التلقائي للوقت
يقدّم هذا القسم نظرة عامة على خدمة time_detector
التي تدير
عملية الرصد التلقائي للوقت وعناصر تحكّم المستخدم وخيارات الإعدادات وتفاصيل
الاختبار.
خدمة time_detector
تتولّى خدمة time_detector
، المتوفّرة على الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android أو الإصدارات الأحدث، إدارة عملية الرصد التلقائي للوقت. ويعدّل وقت Unix الحالي للجهاز حسب الحاجة عند تفعيل ميزة الرصد التلقائي للوقت.
تكون خدمة time_detector
دائمًا في إحدى الحالتَين التاليتَين: certain
أو uncertain
. يتم تحديد حالة الخدمة، سواء كانت مؤكدة أو غير مؤكدة، من خلال اقتراحات الوقت التي تتلقّاها من مصادر مختلفة.
عندما تكون خدمة time_detector
متأكّدة، أي عندما تتلقّى اقتراحًا يتضمّن معلومات عن وقت حقبة Unix، فإنّها تتجاهل وقت حقبة Unix الحالي إذا كان الاقتراح مختلفًا عن وقت حقبة Unix الحالي.
عندما تكون قيمة time_detector
غير مؤكّدة، لا يتم استبدال الوقت الحالي بها. تعني الحالة غير المؤكّدة عادةً أنّ خدمة time_detector
لم تتلقَّ اقتراحات بشأن الوقت. تصبح خدمة time_detector
غير مؤكدة أيضًا إذا كانت الاقتراحات التي تلقّتها قديمة جدًا ولا يمكن استخدامها. يتم أخذ عمر الاقتراحات في الاعتبار لأنّ التعديلات التي تستخدم اقتراحات قديمة بشأن وقت بداية الحقبة في نظام التشغيل Unix تعتمد على ساعة الوقت الفعلي المنقضي على الجهاز، والتي يُفترض أنّها غير دقيقة على المدى الطويل.
لتحديد وقت حقبة Unix الحالي تلقائيًا، يمكن للجهاز استخدام مصادر مختلفة. يُشار إلى هذه المواقع باسم المصادر في هذا المستند. تعامل خدمة
time_detector
مع سلاسل الاقتراحات على أنّها مختلفة استنادًا إلى
مصدرها.
خدمة time_detector
هي خدمة ذات حالة، ما يعني أنّها تحتفظ بسجلّ لأحدث اقتراح قدّمه كل مصدر. يتم تقديم اقتراحات جديدة إلى
time_detector
إذا توفّرت معلومات أحدث عن وقت بدء عصر Unix
للمصدر. تعيد خدمة time_detector
تقييم الاقتراحات الجديدة والحالية
وتعدّل حالة الجهاز عند تلقّي الاقتراحات.
على الرغم من أنّ توقيت UTC متفق عليه دوليًا، هناك أسباب مختلفة تجعل تحديد وقت عصر Unix الحالي ليس دائمًا أمرًا سهلاً بالنسبة إلى جهاز يعمل بنظام التشغيل Android:
- يختلف نظام التوقيت "حقبة يونكس" قليلاً عن توقيت UTC. ويتطلّب التحويل بين الاثنين معرفة أوقات حدوث الثواني الكبيسة وكيفية تعامل المصادر معها.
- قد لا تتوفّر المصادر إلا في أوقات معيّنة أو في ظروف معيّنة. على سبيل المثال، إذا كان المصدر يتطلّب اتصالاً بالشبكة، قد لا يتوفّر إلا عندما يكون الجهاز متصلاً بالإنترنت.
- وقد تكون المصادر غير دقيقة أو غير محددة أو تتضمّن أخطاءً. على سبيل المثال، إذا لم تكن إحدى أبراج الاتصالات الخلوية تسجّل الوقت بالتوقيت العالمي المنسَّق بشكل صحيح، قد يقدّم مصدر الاتصالات الخلوية اقتراحات غير دقيقة بشأن الوقت.
- قد تحدث أخطاء أثناء الحصول على وقت حقبة يونكس. على سبيل المثال، قد يؤدي تأخير الشبكة أو التخزين المؤقت أو جدولة العمليات إلى عدم دقة وقت حقبة يونكس.
- قد تكون الساعة المرجعية المستخدَمة لضبط اقتراح بشأن الوقت المنقضي منذ تلقّي الاقتراح غير دقيقة.
هناك مصدران رئيسيان لرصد الوقت تم ضبطهما لاستخدامهما تلقائيًا في AOSP:
- الشبكة: تستخدم خوادم الوقت التي تعمل ببروتوكول وقت الشبكة (NTP).
- الاتصال الهاتفي: يستخدم إشارات الاتصال الهاتفي الخاصة بهوية الشبكة والمنطقة الزمنية (NITZ).
يتطلّب كل من مصدرَي الاتصال الهاتفي والشبكة الاتصال بشبكات خارجية، وهو ما قد لا يكون متاحًا دائمًا.
بدءًا من Android 12، يتيح نظام التشغيل Android أيضًا استخدام المصادر التالية التي لا يتم ضبطها تلقائيًا:
- نظام GNSS: يستخدم موفّر الموقع الجغرافي لنظام GPS للحصول على الوقت من مصدر GNSS.
- خارجي: مصدر عام يتيح لمصنّعي الأجهزة دمج مصدرهم الخاص لوقت حقبة يونكس.
إعدادات الوقت
يمكن للمستخدمين تفعيل ميزة "الرصد التلقائي للوقت" في النظام > التاريخ والوقت ضمن تطبيق "إعدادات AOSP".
الشكل 1. الرصد التلقائي للوقت في "الإعدادات"
يوضّح الجدول التالي عناصر التحكّم الخاصة بالمستخدمين في ميزة رصد الوقت في تطبيق "الإعدادات" على AOSP.
*على نظام التشغيل Android 11 والإصدارات الأقدم، يُطلق على هذا الإعداد اسم استخدام الوقت المقدَّم من الشبكة. |
|||
موقع إعدادات AOSP | اسم إعدادات AOSP | النطاق | السُلوك |
---|---|---|---|
النظام > التاريخ والوقت | ضبط الوقت تلقائيًا* | كل المستخدمين | مفتاح تبديل عندما تكون هذه الميزة مفعّلة، يكون الجهاز مسؤولاً عن رصد وقت Unix epoch الحالي. عندما يكون الخيار غير مفعَّل، يتم تزويد المستخدمين بعناصر تحكّم لضبط وقت الجهاز يدويًا. |
عندما يُدخِل المستخدم الوقت يدويًا، عليه إدخال الوقت المحلي، وليس وقت Unix epoch. يتم احتساب وقت الفترة الحالية بتنسيق Unix من خلال استخدام المنطقة الزمنية الحالية للحصول على وقت الفترة بتنسيق Unix.
الإعدادات
يمكن لمصنّعي الأجهزة ضبط خدمة time_detector
بطرق مختلفة، مثل تحديد المصادر التي سيتم استخدامها وكيفية تحديد أولويات الإشارات الواردة منها.
تحديد أولوية المنشأ
بدءًا من Android 12، يمكن لمصنّعي الأجهزة تغيير ملف الإعداد core/res/res/values/config.xml
لتحديد مصادر الوقت التي سيتم تضمينها في ميزة "رصد الوقت التلقائي"، والأولوية التي يمنحها time_detector
لهذه المصادر.
بالنسبة إلى الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأقدم، تكون أولوية المصدر مبرمَجة بشكل ثابت على
["telephony", "network"]
، ما يعني أنّ اقتراحات الاتصال الهاتفي لها الأولوية
على اقتراحات الشبكة.
في ما يلي إعدادات AOSP التلقائية:
<!-- 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>
</string-array>
في نظام التشغيل Android 12، يتم ضبط اقتراحات الشبكة والهاتف على أنّها مصادر يتم استخدامها تلقائيًا. يتم إعطاء الأولوية لاقتراحات الوقت المستندة إلى الشبكة على اقتراحات الوقت المستندة إلى الاتصال الهاتفي. يمكن لمصنّعي الأجهزة تغيير ترتيب المصادر للرجوع إلى السلوك في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأقدم، حيث يتم منح الاتصال الهاتفي أولوية أعلى.
بشكل تلقائي، إذا كان الاقتراح الصالح ذو الأولوية الأعلى يطابق وقت ساعة النظام الحالي على الجهاز في غضون بضع ثوانٍ، لن يتم تغيير وقت الجهاز. ويتم ذلك لتجنُّب إنشاء مهام للتطبيقات المثبَّتة التي تستمع إلى الغرض ACTION_TIME_CHANGED
.
قيم المصدر المسموح بها هي:
الحدود الزمنية المسموح بها
يقدّم الإصدار 14 من نظام التشغيل Android حدًا زمنيًا أعلى لاقتراحات الوقت التي تتلقّاها خدمة
time_detector
. إذا كان الجهاز يتيح استخدام عمليات 32 بت، يضبط إطار العمل حدًا زمنيًا أعلى لمنع الجهاز من استخدام اقتراح وقت قد يؤدي إلى حدوث مشكلة Y2038.
قدّمت الإصدار 12 من نظام التشغيل Android حدًا زمنيًا أدنى يُستخدَم للتحقّق من صحة اقتراحات الوقت التي تتلقّاها خدمة time_detector
. يتم ضبط قيمة الحدّ الأدنى للوقت المستخدَمة في الاقتراحات التلقائية من الطابع الزمني للإنشاء. ويستند ذلك إلى مبدأ أنّ الوقت الصالح لا يمكن أن يكون قبل إنشاء صورة نظام الجهاز. إذا كان اقتراح الوقت قبل الحد الأدنى للوقت، تتجاهل الخدمة الاقتراح لأنّه لا يمكن أن يكون صالحًا إذا كان الطابع الزمني للإنشاء صحيحًا.time_detector
بالنسبة إلى الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأقدم، لا تتحقّق خدمة time_detector
من صحة اقتراحات وقت Unix الواردة.
تصحيح الأخطاء واختبار الوقت
يقدّم هذا القسم معلومات حول كيفية تصحيح أخطاء خدمة time_detector
واختبار سلوكها والمكوّنات الأخرى التي تشترك فيها جميع المصادر.
التفاعل مع خدمة time_detector
للاطّلاع على إعدادات خدمة time_detector
وحالتها، استخدِم ما يلي:time_detector
adb shell cmd time_detector dump
للاطّلاع على أوامر إضافية لتصحيح الأخطاء واختبار رصد المنطقة الزمنية، استخدِم ما يلي:
adb shell cmd time_detector help
يصف الناتج المساعد أيضًا خصائص خدمة device_config
التي يمكن استخدامها للتأثير في سلوك time_detector
أثناء الاختبار أو في مرحلة الإنتاج.
لمزيد من التفاصيل، يُرجى الاطّلاع على ضبط جهاز باستخدام خدمة device_config.
لإثبات صحة عملية الرصد التلقائي للوقت، يجب أن يعرف المختبِرون المصادر التي تستخدمها خدمة time_detector
. في ما يلي مثال على الناتج من الأمر adb shell cmd time_detector dump
، مع عرض معلومات حول المصدر الحالي وحالة الخدمة بخط غليظ:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
يمكن تفسير المعلومات على النحو التالي:
المفتاح | القيمة |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
تُستخدَم لتحديد ما إذا كان سيتم تفعيل ميزة "الرصد التلقائي للوقت". |
mEnvironment.autoTimeLowerBound() |
الحد الأدنى الحالي المستخدَم للتحقّق من صحة اقتراحات الوقت. |
mEnvironment.autoOriginPriorities() |
المصادر المستخدَمة وترتيب الأولوية |
يشير سجلّ تغيير الوقت إلى الحالات التي غيّرت فيها خدمة time_detector
الوقت الحالي لحقبة Unix على الجهاز.
تشير معلومات سجلّ الاقتراحات إلى الاقتراحات التي قدّمها كل مصدر.
الرصد التلقائي للمنطقة الزمنية
يقدّم هذا القسم نظرة عامة على خدمة time_zone_detector
التي تدير ميزة الرصد التلقائي للمنطقة الزمنية، وعناصر تحكّم المستخدمين في الإعدادات، وميزة رصد المنطقة الزمنية عبر الهاتف والموقع الجغرافي، وتفاصيل الاختبار.
خدمة time_zone_detector
تتولّى خدمة time_zone_detector
، المتوفّرة على الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث، إدارة ميزة "الرصد التلقائي للمنطقة الزمنية". وتعدّل المنطقة الزمنية الحالية للجهاز حسب الحاجة عند تفعيل ميزة "التعرّف التلقائي على المنطقة الزمنية".
عند تفعيل ميزة "الرصد التلقائي للمنطقة الزمنية"، يمكن أن تكون time_zone_detector
في إحدى الحالتين التاليتين: certain
وuncertain
.
عندما تكون خدمة time_zone_detector
في حالة معيّنة، يعني ذلك أنّ خدمة time_zone_detector
قد تلقّت معلومات دقيقة عن المنطقة الزمنية، ما قد يؤدي إلى تجاهل المنطقة الزمنية الحالية. عندما تكون القيمة غير مؤكّدة، يعني ذلك أنّه لم يتم تلقّي أي معلومات أو تم تلقّي معلومات غير دقيقة، ما يعني أنّه لن يتم تجاهل المنطقة الزمنية الحالية.
يمكن أن تتضمّن حالات معيّنة من خدمة time_zone_detector
حالات لا تتوفّر فيها معلومات عن المنطقة الزمنية لاستخدامها، أو حالات تتوفّر فيها مناطق زمنية متعدّدة للاختيار من بينها.time_zone_detector
في ما يلي هذه الحالات:
- يتم إدخال حالة معيّنة بدون مناطق زمنية عندما يكون الجهاز في مكان
لا يتضمّن منطقة زمنية، مثل المياه الدولية أو منطقة متنازع عليها.
تشبه هذه الحالة الحالة غير المؤكّدة، ولكنّها تشير إلى أنّ
time_zone_detector
لا تحتاج إلى اتّخاذ إجراءات إضافية لمحاولة تحديد المنطقة الزمنية. - يتم إدخال ولاية معيّنة تتضمّن مناطق زمنية متعدّدة حيث يكون هناك غموض أو شروط حدودية. في هذه الحالة، إذا كانت المنطقة الزمنية الحالية إحدى المناطق الزمنية التي
time_zone_detector
متأكد منها، سيتم الإبقاء على المنطقة الزمنية الحالية كما هي، وإلا سيتم استخدام إحدى المناطق الزمنية المتاحة. يمنح ذلكtime_zone_detector
عنصرًا من الثبات إذا كان المستخدم قد اختار المنطقة الزمنية يدويًا في السابق أو عندما يقترب الجهاز من الحدود.
يتم تحديد حالة خدمة time_zone_detector
، سواء كانت مؤكدة أو غير مؤكدة، من خلال
اقتراحات المنطقة الزمنية التي يرسلها إحدى الخوارزميات.
بشكل عام، تتوفّر الاقتراحات بنوعَين يتطابقان بشكل كبير مع الحالات المحتملة time_zone_detector
: certain
وuncertain
. في ما يلي أمثلة على أنواع الاقتراحات:
النوع =
uncertain
،zoneIds = []
- لا تعرف الخوارزمية المنطقة الزمنية.
النوع =
certain
،zoneIds = ["Europe/London"]
- تتأكّد الخوارزمية من أنّ المنطقة هي Europe/London.
type =
certain
,zoneIds = []
`- الخوارزمية صحيحة، ولكن لا يتوفّر معرّف منطقة مرتبط بالموقع الجغرافي الحالي.
النوع =
certain
،zoneIds = ["America/Denver", "America/Phoenix"]
- تتأكّد الخوارزمية من أنّ الإجابة هي إحدى منطقتَين، ولكن لا يمكنها الاختيار بين America/Denver وAmerica/Phoenix.
تعامل خدمة time_zone_detector
مع سلاسل الاقتراحات على أنّها مختلفة
استنادًا إلى الخوارزمية. واستنادًا إلى الخوارزمية، قد تتضمّن الاقتراحات أيضًا بيانات وصفية تشير إلى مدى دقة الخوارزمية.
time_zone_detector
خدمة ذات حالة، ما يعني أنّها تحتفظ بسجلّ
لأحدث اقتراح قدّمته كل خوارزمية. يتم إرسال اقتراحات جديدة إلى خدمة time_zone_detector
إذا لم يعُد الاقتراح السابق صحيحًا، أي إذا كانت الخوارزمية تقدّم اقتراحًا مختلفًا الآن، أو إذا لم يعُد بإمكانها رصد المنطقة الزمنية. تعيد خدمة time_zone_detector
تقييم الاقتراحات الجديدة والحالية وتعدّل حالة الجهاز عند تلقّي الاقتراحات.
يتوافق نظام التشغيل Android مع خوارزميتَين لرصد المنطقة الزمنية:
- الاتصالات الهاتفية
- الموقع الجغرافي
تستخدم خدمة time_zone_detector
عادةً خوارزمية واحدة لتحديد المنطقة الزمنية. عندما يكون خوارزمية الموقع الجغرافي متوافقة مع أحد الأجهزة، يتم تحديد الخوارزمية التي يستخدمها الجهاز استنادًا إلى إعدادات المنطقة الزمنية التي يضبطها المستخدم. عندما تصبح الخوارزمية المستخدَمة غير متأكّدة من المنطقة الزمنية، لا تستخدم time_zone_detector
عادةً اقتراحات من خوارزمية مختلفة. يمكن أن تحتفظ time_zone_detector
بالاقتراحات المرتبطة بالخوارزميات غير المستخدَمة في الذاكرة، ولكن لا يتم استخدامها إلا إذا تغيرت الخوارزمية. عندما يغيّر المستخدم إعدادات الرصد التلقائي للمنطقة الزمنية، وتتغيّر الخوارزمية، يتم استخدام أحدث اقتراح متاح للخوارزمية الجديدة.
للحصول على تفاصيل حول الحالة التي يتم فيها استخدام خوارزميات متعدّدة لتحديد المنطقة الزمنية، يُرجى الاطّلاع على وضع احتياطي للاتصال الهاتفي.
وضع احتياطي للاتصال الهاتفي
على الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android والإصدارات الأحدث، تتوافق خدمة time_zone_detector
مع وضع احتياطي للاتصال الهاتفي. يتيح هذا الوضع لنظام التشغيل Android استخدام اقتراحات رصد الاتصالات الهاتفية مؤقتًا في الحالات التي يتعذّر فيها رصد المنطقة الزمنية من خلال رصد الموقع الجغرافي أو عندما يستغرق رصد المنطقة الزمنية وقتًا أطول من خلال رصد الموقع الجغرافي مقارنةً برصد الاتصالات الهاتفية.
ينطبق وضع التبديل إلى الاتصال الهاتفي على الأجهزة التي تتوافق مع الاتصال الهاتفي وتحديد الموقع الجغرافي، والتي فعّل فيها المستخدم الخيار استخدام الموقع الجغرافي لضبط المنطقة الزمنية في إعدادات المنطقة الزمنية. يتم تفعيل الوضع تلقائيًا عند إعادة تشغيل الجهاز وعند إيقاف "وضع الطائرة".
في نظام التشغيل Android 14 والإصدارات الأحدث، يمكن تفعيل وضع التراجع إلى الاتصال الهاتفي من خلال واجهات برمجة التطبيقات الخاصة بحالة LTZP، أي إذا أبلغت LTZP عن حالة غير مؤكدة وتدهورت قدرتها على رصد الموقع الجغرافي أو المنطقة الزمنية بسبب البيئة المحيطة بها، يتم تفعيل وضع التراجع إلى الاتصال الهاتفي.
عندما تكون خدمة time_zone_detector
في وضع احتياطي للاتصال الهاتفي، تستخدم اقتراحات الاتصال الهاتفي كما لو أنّ ميزة رصد الموقع الجغرافي غير مفعّلة إلى أن تقدّم خوارزمية الموقع الجغرافي اقتراحًا معيّنًا. بعد تلقّي اقتراح معيّن، يتم إيقاف وضع الرجوع إلى الاتصال الهاتفي ويتم استخدام اقتراحات الموقع الجغرافي حصريًا.
للحصول على تفاصيل حول إعدادات وضع احتياطي الاتصال الهاتفي، يُرجى الاطّلاع على إعدادات رصد المنطقة الزمنية.
إعدادات المنطقة الزمنية
يمكن للمستخدمين تفعيل إعدادات رصد المنطقة الزمنية تلقائيًا وضبطها في تطبيق "إعدادات AOSP".
الشكل 2. الرصد التلقائي للمنطقة الزمنية في "الإعدادات"
يوضّح الجدول التالي عناصر تحكّم المستخدمين في ميزة "الرصد التلقائي للمنطقة الزمنية" في تطبيق "الإعدادات" على AOSP.
*على نظام التشغيل Android 11 والإصدارات الأقدم، يُطلق على هذا الإعداد اسم استخدام المنطقة الزمنية للشبكة |
|||
موقع إعدادات AOSP | اسم إعدادات AOSP | النطاق | السُلوك |
---|---|---|---|
النظام > التاريخ والوقت | ضبط المنطقة الزمنية تلقائيًا* | كل المستخدمين | مفتاح تبديل عندما يكون هذا الخيار مفعَّلاً، يكون الجهاز مسؤولاً عن رصد المنطقة الزمنية الحالية. عندما يكون هذا الخيار غير مفعَّل، يتم تزويد المستخدمين بعناصر تحكّم لضبط المنطقة الزمنية للجهاز يدويًا. |
النظام > التاريخ والوقت | استخدام الموقع الجغرافي لضبط المنطقة الزمنية | المستخدم الحالي | مفتاح تبديل تتوفّر هذه الميزة على أجهزة Android 12 والإصدارات الأحدث. لا يظهر زر التبديل هذا إلا إذا كانت ميزة رصد المنطقة الزمنية للموقع الجغرافي متاحة على الجهاز. للاطّلاع على التغييرات التي تم تقديمها في Android 14، يُرجى الاطّلاع على الأجهزة التي تتيح رصد المنطقة الزمنية للموقع الجغرافي فقط. |
الموقع الجغرافي | استخدام الموقع الجغرافي | المستخدم الحالي | مفتاح تبديل يسمح باستخدام الموقع الجغرافي للجهاز بشكل عام أو يمنعه. تكون القيمة ذات صلة إذا كانت ميزة رصد المنطقة الزمنية للموقع الجغرافي متاحة على الجهاز. |
في ما يلي نظرة عامة على سلوك الجهاز عند رصد المنطقة الزمنية، وذلك استنادًا إلى الإعدادات التي يختارها المستخدم:
[التاريخ والوقت] ضبط المنطقة الزمنية تلقائيًا: إيقاف
- على المستخدم اختيار المنطقة الزمنية يدويًا.
[التاريخ والوقت] ضبط المنطقة الزمنية تلقائيًا: تفعيل
[الموقع الجغرافي] استخدام الموقع الجغرافي: غير مفعَّل
- يتم استخدام إشارات الاتصالات الهاتفية للتعرّف على المنطقة الزمنية.
[الموقع الجغرافي] استخدام الموقع الجغرافي: مفعَّل
[التاريخ والوقت] استخدام الموقع الجغرافي لضبط المنطقة الزمنية: مفعَّل
- يتم استخدام الموقع الجغرافي لرصد المنطقة الزمنية.
[التاريخ والوقت] استخدام الموقع الجغرافي لضبط المنطقة الزمنية: إيقاف
- يتم استخدام إشارات الاتصالات الهاتفية للتعرّف على المنطقة الزمنية.
أجهزة مستخدمين متعددة
بما أنّ العديد من الإعدادات المعنية مخصّصة للمستخدم الحالي، يمكن أن يتغيّر سلوك رصد المنطقة الزمنية على الجهاز عند تغيير المستخدم الحالي على جهاز Android متعدد المستخدمين.
يقتصر نطاق خيار استخدام الموقع الجغرافي لضبط المنطقة الزمنية على المستخدم الحالي، ولا تقيّده سياسة الجهاز، ما يعني أنّه يمكن للمستخدمين تغيير قيمته دائمًا، حتى عندما يكون خيار ضبط المنطقة الزمنية تلقائيًا غير مفعّل أو إذا كانت عناصر تحكّم أخرى في الوقت أو المنطقة الزمنية مقيّدة من خلال "وحدة التحكّم في سياسة الجهاز".
الأجهزة التي تتوافق فقط مع خوارزمية رصد المنطقة الزمنية للموقع الجغرافي
يوضّح هذا القسم سلوك الأجهزة التي تتوافق مع خوارزمية الموقع الجغرافي فقط.
الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث
- لا يظهر الخيار استخدام الموقع الجغرافي للمستخدمين في تطبيق "إعدادات AOSP"، ويتصرف الجهاز كما لو كان الخيار استخدام الموقع الجغرافي مفعَّلاً.
- يتم تجاهل قيمة الإعداد
SettingsProvider
على مستوى المستخدمlocation_time_zone_detection_enabled
. تسجّل هذه القيمة إعدادات المستخدم المفضّلة على أنواع أخرى من الأجهزة.
Android 12 أو Android 13
- يظهر خيار استخدام الموقع الجغرافي للمستخدمين في تطبيق "الإعدادات" على نظام التشغيل AOSP، ويمكن للمستخدمين إيقاف هذا الخيار. في حال إيقاف هذا الخيار، لن يرصد الجهاز المنطقة الزمنية تلقائيًا.
السلوك عند التبديل من وإلى ميزة "الرصد التلقائي"
عندما يغيّر المستخدم إعدادات رصد المنطقة الزمنية من يدوي إلى تلقائي، قد يكون time_zone_detector
متأكدًا من المنطقة الزمنية الحالية. في هذه الحالة، عند تفعيل المستخدم ميزة الرصد التلقائي، قد يتم تغيير المنطقة الزمنية للجهاز في الوقت نفسه لتتطابق مع رأي خدمة time_zone_detector
.
وبالمثل، عندما يجري المستخدم تغييرًا في "الإعدادات" يؤدي إلى تغيير في الخوارزمية الحالية لخدمة time_zone_detector
، قد تكون time_zone_detector
قد تلقّت اقتراحات للخوارزمية الجديدة، وبالتالي قد يتم تغيير وقت الجهاز على الفور ليتطابق مع رأي خدمة time_zone_detector
.
التعرّف على المنطقة الزمنية للهاتف
تستخدم ميزة التعرّف على المنطقة الزمنية عبر الهاتف إشارات الهاتف لتحديد المنطقة الزمنية الحالية. لمزيد من المعلومات، يُرجى الاطّلاع على رصد المنطقة الزمنية عبر الهاتف.
رصد المنطقة الزمنية للموقع الجغرافي
تتوفّر ميزة رصد المنطقة الزمنية للموقع الجغرافي على الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث. وهي ميزة اختيارية للرصد التلقائي للمنطقة الزمنية تتيح للأجهزة استخدام موقعها الجغرافي لتحديد المنطقة الزمنية الحالية.
تعمل خدمة location_time_zone_manager
، التي تم طرحها في Android 12، على خادم النظام، وتحتوي على الرمز المسؤول عن إرسال اقتراحات خوارزمية الموقع الجغرافي إلى خدمة time_zone_detector
. لمزيد من المعلومات،
يُرجى الاطّلاع على مقالة رصد المنطقة الزمنية للموقع الجغرافي.
اعتبارات حول استخدام الميزات
يوضّح هذا القسم جوانب ميزة رصد المنطقة الزمنية للموقع الجغرافي لمساعدة جهة تصنيع الجهاز في تحديد ما إذا كان يجب اعتماد الميزة على الجهاز.
مقارنة بين خدمات الاتصال الهاتفي وميزة "رصد الموقع الجغرافي"
يوضّح الجدول التالي مقارنة بين مزايا وعيوب استخدام الموقع الجغرافي بدلاً من إشارات الاتصال الهاتفي لرصد المنطقة الزمنية.
الفئة | رصد الاتصال الهاتفي | رصد الموقع الجغرافي |
---|---|---|
الصحة | يختلف ذلك حسب البلد. يعتمد ذلك على رمز البلد (MCC) وصحة بيانات NITZ ومدى توفّرها. |
يعتمد ذلك على إعدادات الميزة أو مكوّنات المكوّن الإضافي. تختلف صحة المعلومات عادةً حسب:
|
قابلية التحديث | تعتمد ميزة رصد المكالمات الهاتفية على الملفات المتضمّنة في وحدة بيانات المنطقة الزمنية القابلة للتحديث (com.android.tzdata APEX). |
يعتمد ذلك على إعدادات الميزة أو مكوّنات المكوّن الإضافي. تعتمد إمكانية التحديث عادةً على ما إذا كان الجهاز يستخدم بيانات خريطة المنطقة الزمنية للخادم أو العميل. لا تتضمّن وحدة بيانات المنطقة الزمنية المستخدَمة لتعديل نسخة Android من قاعدة بيانات TZDB وغيرها من معلومات المناطق الزمنية بيانات خريطة المنطقة الزمنية. على الشركات المصنّعة للأجهزة أيضًا مراعاة اتساق الإصدار بين قواعد المنطقة الزمنية وبيانات خريطة المنطقة الزمنية. |
استخدام الطاقة | عدم استهلاك الطاقة أو استهلاكها بشكل منخفض | يعتمد ذلك على إعدادات الموقع الجغرافي للمستخدم والمكوّنات الإضافية المستخدَمة، وعادةً ما يعتمد على التطبيقات الأخرى التي تطلب الموقع الجغرافي. |
مدى التوفّر | أجهزة الاتصال الهاتفي فقط تتطلّب عادةً شريحة SIM تعمل. | يعتمد رصد الموقع الجغرافي على مقدّمي خدمات الموقع الجغرافي المتاحين. |
خصوصية المستخدم
يتم عادةً تحديد المنطقة الزمنية المفضّلة للمستخدم حسب موقعه الجغرافي. الموقع الجغرافي هو بيانات حسّاسة. قد يشعر المستخدمون بالقلق بشأن مشاركة معلومات موقعهم الجغرافي كجزء من عملية رصد المنطقة الزمنية. وبغض النظر عن عملية رصد المنطقة الزمنية، يمكن لجميع التطبيقات التي تعمل على جهاز قراءة المنطقة الزمنية الحالية للجهاز بدون الحاجة إلى إذن Android، ويمكن للتطبيقات استنتاج فكرة غير دقيقة عن الموقع الجغرافي للجهاز من هذه المعلومات.
على وجه التحديد، يمكن أن يتم رصد المنطقة الزمنية من خلال وسائل سلبية أو نشطة:
- غير نشط: يشير شيء في بيئة الجهاز إلى المنطقة الزمنية التي يجب استخدامها في تلك البيئة.
- التحديد النشط: على الجهاز تحديد المنطقة الزمنية بنفسه، ويحصل على الموقع الجغرافي للجهاز استنادًا إلى إعدادات الخصوصية وموافقة المستخدمين، ثم يمكنه مشاركة موقعه الجغرافي مع الخدمات الخارجية. اطّلِع على المناقشة أدناه لمعرفة تفاصيل حول خصوصية المستخدم والموافقة.
لا يترتب على عمليات الرصد غير النشطة، مثل خوارزمية الاتصال الهاتفي، أي آثار إضافية على خصوصية المستخدمين.
يتضمّن الرصد النشط، مثل خوارزمية الموقع الجغرافي، تحديد الموقع الجغرافي للجهاز، وهو ما قد لا يوافق عليه المستخدمون، وقد يتم إرسال الموقع الجغرافي عبر شبكة لتحديد رقم تعريف المنطقة الزمنية.
يمنح نهج Android المتعلّق بخصوصية المستخدمين في ما يخص رصد المنطقة الزمنية المستخدم إمكانية إيقاف الخوارزميات التي يُتوقّع أن تكون نشطة بشكل فردي. بالإضافة إلى ذلك، لا يتعامل رمز نظام التشغيل AOSP الأساسي مباشرةً مع الموقع الجغرافي نفسه، بل يتم ترك مهمة رصد الموقع الجغرافي وربطه بمعرّفات المناطق الزمنية للمكوّنات الإضافية التي يضبطها مصنّعو الأجهزة.
لمزيد من التفاصيل حول ميزات خصوصية المستخدم، يُرجى الاطّلاع على رصد المنطقة الزمنية للموقع الجغرافي.
الإعدادات
يمكن لمصنّعي الأجهزة ضبط خدمة time_zone_detector
لتغيير سلوكها. يصف هذا القسم خيارات الضبط المتعلقة بالسلوك العام لخدمة time_zone_detector
. للحصول على تفاصيل حول إعدادات خوارزميات رصد المنطقة الزمنية والاتصالات الهاتفية، يُرجى الاطّلاع على رصد المنطقة الزمنية للاتصالات الهاتفية ورصد المنطقة الزمنية للموقع الجغرافي.
تتوفّر إعدادات AOSP الأساسية على
frameworks/base/core/res/res/values/config.xml
.
مفتاح الإعداد | قيمة AOSP | الوصف |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
عندما تكون قيمة true هي time_zone_detector ، يتم استخدام وضع احتياطي للاتصال الهاتفي. تتوفّر هذه الميزة في الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث.
|
تغيير السلوك التلقائي للجهاز
في AOSP، يتم تفعيل ميزة "الرصد التلقائي للمنطقة الزمنية" تلقائيًا مع ضبط الإعداد auto_time_zone
على true
. لإيقاف ميزة الرصد التلقائي للوقت تلقائيًا، اضبط قيمة def_auto_time_zone
المحدّدة في frameworks/base/packages/SettingsProvider/res/values/defaults.xml
على false
.
عند استعادة نسخة احتياطية من جهاز آخر، يغيّر إطار العمل تلقائيًا قيمة الإعداد auto_time_zone
. إذا أردت التأكّد من عدم استعادة هذا الإعداد من نسخة احتياطية، أدرِج auto_time_zone
في مصفوفة restore_blocked_global_settings
المحدّدة في frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
تصحيح أخطاء المنطقة الزمنية واختبارها
يقدّم هذا القسم معلومات حول كيفية تصحيح أخطاء خدمة time_zone_detector
واختبار سلوكها والمكوّنات الأخرى التي تشترك فيها جميع الخوارزميات.
ضبط جهاز باستخدام خدمة device_config
خدمة device_config
هي آلية مستخدَمة على Android لضبط السلوك القابل للتعديل باستخدام قيم يتم عادةً استردادها من خادم بعيد بواسطة رمز برمجي خاص (غير متوافق مع AOSP). عند استخدام قيم device_config
لأغراض الاختبار، خاصةً أثناء الاختبارات اليدوية الطويلة، قد يزامن الجهاز العلامات، ما يؤدي إلى إعادة ضبط العلامات ومحو القيم التي تم ضبطها لأغراض الاختبار.
في نظام التشغيل Android 12 أو الإصدارات الأحدث، لمنع مزامنة العلامات مؤقتًا، استخدِم ما يلي:
adb shell cmd device_config set_sync_disabled_for_tests persistent
لاستعادة مزامنة العلامات بعد الاختبارات، استخدِم:
adb shell cmd device_config set_sync_disabled_for_tests none
بعد استعادة مزامنة العلامات، أعِد تشغيل الجهاز.
لمزيد من المعلومات، يُرجى استخدام $ adb shell cmd device_config help
.
التفاعل مع خدمة time_zone_detector
لعرض إعدادات خدمة time_zone_detector
وحالتها، استخدِم ما يلي:time_zone_detector
adb shell cmd time_zone_detector dump
للاطّلاع على أوامر إضافية لتصحيح الأخطاء واختبار رصد المنطقة الزمنية، استخدِم ما يلي:
adb shell cmd time_zone_detector help
يصف الناتج المساعد أيضًا خصائص خدمة device_config
التي يمكن استخدامها للتأثير في سلوك خدمة time_zone_detector
لأغراض الاختبار أو في بيئة الإنتاج. للحصول على التفاصيل، يُرجى الاطّلاع على ضبط جهاز باستخدام خدمة device_config.
للتحقّق من صحة رصد المنطقة الزمنية، يجب أن يعرف المختبِرون الخوارزمية التي يستخدمها
time_zone_detector
. لفهم الخوارزمية الحالية في time_zone_detector
والتأثير فيها، استخدِم أحد الخيارات التالية:
- التحقّق بصريًا من خلال واجهة مستخدم الإعدادات لمزيد من المعلومات، يُرجى الاطّلاع على إعدادات المنطقة الزمنية.
استخدِم سطر الأوامر من خلال adb:
- لنسخ حالة
time_zone_detector
، استخدِمadb shell cmd time_zone_detector dump
- لتغيير إعدادات الجهاز، استخدِم أوامر
time_zone_detector
الأخرى. للحصول على مزيد من المعلومات، يُرجى استخدامadb shell cmd time_zone_detector help
.
- لنسخ حالة
في ما يلي مثال على الناتج من الأمر adb shell cmd
time_zone_detector dump
، مع عرض المعلومات حول الخوارزمية الحالية وحالة الخدمة بخط غليظ:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
يمكن تفسير المعلومات على النحو التالي:
المفتاح | القيمة |
---|---|
mUserConfigAllowed |
تُستخدَم لتحديد ما إذا كان المستخدم ممنوعًا من التحكّم في إعدادات التاريخ والوقت من خلال وحدة التحكّم في سياسة الجهاز. |
mTelephonyDetectionSupported |
تُحدِّد ما إذا كان الجهاز يتيح رصد المنطقة الزمنية عبر الهاتف. |
mGeoDetectionSupported |
تُستخدَم لتحديد ما إذا كان الجهاز يتيح ميزة رصد المنطقة الزمنية للموقع الجغرافي. هذه هي الحالة الفعّالة استنادًا إلى الإعداد و توفّر منطقة واحدة على الأقل من مناطق LTZP. |
mAutoDetectionEnabled |
تحدّد ما إذا كانت ميزة الرصد التلقائي للمنطقة الزمنية مفعّلة. |
mLocationEnabled |
زر إيقاف الموقع الجغرافي أو تفعيله |
mGeoDetectionEnabled |
مفتاح تبديل الخوارزمية: يشير false إلى خوارزمية الاتصال الهاتفي، ويشير true إلى خوارزمية الموقع الجغرافي. |
تشير معلومات سجلّ الاقتراحات إلى الاقتراحات التي تم تقديمها من خلال "الإعدادات" (يدويًا)، ومن خلال خوارزميات الموقع الجغرافي والاتصالات الهاتفية.