رصد المنطقة الزمنية للموقع الجغرافي

ميزة "رصد المنطقة الزمنية للموقع الجغرافي"، المتوفّرة على الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث، هي ميزة اختيارية للرصد التلقائي للمنطقة الزمنية تتيح للأجهزة استخدام بيانات موقعها الجغرافي وخريطة المنطقة الزمنية لتحديد المنطقة الزمنية.

رصد المنطقة الزمنية للموقع الجغرافي هو آلية بديلة لرصد المنطقة الزمنية للاتصال الهاتفي. بما أنّ هذه الميزة لا تتطلّب استخدام الهاتف، يمكن أن تكون متاحة على الأجهزة التي تتسم بأشكال مختلفة بالإضافة إلى أجهزة الهاتف الجوّال.

تتألف ميزة رصد المنطقة الزمنية للموقع الجغرافي من المكوّنات التالية في منصّة AOSP:

  • منطق رصد المنطقة الزمنية في خادم النظام
  • تم توفير خيار تسهيل الاستخدام في "الإعدادات" في Android 12 لتمكين المستخدمين من الاختيار بين آليات رصد المنطقة الزمنية للاتصال الهاتفي والموقع الجغرافي

  • نظام مكوّن إضافي للمكونات التي تُجري عملية رصد الموقع الجغرافي وتحديد المنطقة الزمنية يُعرف المكوّن الإضافي باسم مقدّم المنطقة الزمنية للموقع الجغرافي (LTZP)، ويمكن أن يكون هناك ما يصل إلى مكوّنَين على الجهاز. تقدّم المنصة واجهات برمجة تطبيقات النظام التي يجب استخدامها لتنفيذ ميزة "الإعلانات أثناء التشغيل".

  • تنفيذ LTZP مرجعي

  • أدوات استضافة لإنشاء مجموعة بيانات مرجعية من بيانات Open Street Map (OSM) التي يمكن استخدامها مع التنفيذ المرجعي

خصوصية المستخدم

تتضمّن ميزة "رصد المنطقة الزمنية للموقع الجغرافي" ميزات خصوصية المستخدِم التالية:

  • عندما يتوفّر زر تبديل لاختيار خوارزمية الموقع الجغرافي، يمكن للمستخدمين إيقاف خوارزمية الموقع الجغرافي في أي وقت.

  • لا تتم مشاركة اقتراحات المنطقة الزمنية المستمدة من الموقع الجغرافي بين المستخدمين على جهاز ما.

  • يمكن للمستخدمين التحكم في اكتشاف الموقع الجغرافي لرصد المنطقة الزمنية بشكلٍ صريح من خلال شاشة إعدادات التاريخ والوقت. ليس على المستخدمين منح الإذن صراحةً من خلال مربّع حوار الإذن.

  • لا يتم تمرير معلومات الموقع الجغرافي للجهاز إلى خدمات نظام التشغيل Android. يحدث ما يلي بدلاً من ذلك:

    • تُرسل خدمات رصد المنطقة الزمنية معرّفات المنطقة الزمنية من قِبل LTZP، وليس من خلال الموقع الجغرافي للجهاز. هذا هو الحد الأدنى لواجهة برمجة التطبيقات المطلوب لتفعيل ميزة رصد المنطقة الزمنية للموقع الجغرافي.
    • يتحكّم مورّدو الأنظمة في تشغيل كل وحدة LTZP فردية. يمكن أن تستخدم عمليات تنفيذ LTZP بيانات خريطة المنطقة الزمنية التي يتم تخزينها بالكامل على جهاز Android أو استخدام الخوادم أو استخدام نهج مختلط.

سلوك الميزة

تحدِّد خدمة time_zone_detector وقت تغيير المنطقة الزمنية الحالية للجهاز استنادًا إلى الاقتراحات التي تتلقّاها من خوارزميات رصد الأجهزة.

تتولّى خدمة location_time_zone_manager إنشاء اقتراحات لخوارزمية الموقع الجغرافي في time_zone_detector. يتم تشغيل خدمة location_time_zone_manager في عملية خادم النظام.

لا تحتوي خدمة location_time_zone_manager على أي منطق لرصد المنطقة الزمنية. تتحمّل هذه الخدمة مسؤولية إدارة دورة حياة مكوّنَين إضافيَّين أو مكوّن إضافي واحد من LTZP.

لا يتم بدء نطاقات LTZP عندما لا تكون ميزة رصد المنطقة الزمنية للموقع الجغرافي مطلوبة. ويعني ذلك أنّ نظام رصد المنطقة الزمنية للموقع الجغرافي لا يطلب من خدمات LTZP تتبُّع الموقع الجغرافي للجهاز ما لم يُطلب منها ذلك صراحةً. تشمل بعض الأسباب التي تؤدي إلى هذا السلوك ما يلي:

  • على عكس إشارات الهاتف التي يتم تلقّيها بشكل سلبي كجزء من عمليات الهاتف العادية، يمكن طلب الموقع الجغرافي بشكل نشط من مزوّدي خدمات الموقع الجغرافي في Android، ويمكن أن يستهلك ذلك طاقة إضافية.
  • تكون إعدادات الموقع الجغرافي على مستوى المستخدم، ويجب أن يراعي Android إعدادات المستخدم الحالية.
  • إنّ الحصول على الموقع الجغرافي للجهاز يرتبط بالخصوصية.

تُقدّم خدمة location_time_zone_manager أيضًا اقتراحًا غير مؤكد (إذا كان مطلوبًا) عندما يغيّر المستخدم الحالي الإعدادات لتجنُّب مشاركة معلومات الموقع الجغرافي بين المستخدمين.

نتيجةً لهذه الخيارات، يستغرق رصد المنطقة الزمنية بضع ثوانٍ بعد تبديل الخوارزمية الحالية إلى الموقع الجغرافي أو بعد تبديل المستخدم الحالي. يعتمد ذلك أيضًا على طريقة استخدام الإعلانات المحدودة التي يتم استخدامها.

يسمح تنفيذ ميزة رصد المنطقة الزمنية للموقع الجغرافي في إطار مشروع AOSP بحد أقصى منطقتَي وقت محلي، هما المنطقة الزمنية الأساسية والثانوية كما هو محدّد هنا:

منطقة LTZP الأساسية
يتم تشغيلها في جميع الأوقات عندما يسمح المستخدم بتشغيل ميزة رصد المنطقة الزمنية للموقع الجغرافي.
قناة LTZP الثانوية
يتم تشغيله إذا أشارت قناة LTZP الأساسية إلى أنّ المنطقة الزمنية غير مؤكّدة، أو تبلّغ عن تعذُّر دائم أو تنتهي المهلة أثناء الإعداد. يتوقف إذا أرسلت قاعدة LTZP الأساسية اقتراحًا معيّنًا.

وكما هو موضّح في الشكل 1، ستتلقّى خدمة time_zone_detector اقتراحات بشأن المنطقة الزمنية من خوارزمية الاتصال الهاتفي أو الموقع الجغرافي. تتلقّى خوارزمية الموقع الجغرافي اقتراحات من منطقة LTZP الأساسية أو الثانوية.

تدفّق المعلومات لرصد المنطقة الزمنية للموقع الجغرافي

الشكل 1. تدفق معلومات رصد المنطقة الزمنية للموقع الجغرافي

متطلبات إعدادات الجهاز

لتفعيل ميزة استخدام الموقع الجغرافي لتحديد المنطقة الزمنية، يجب ضبط الأجهزة باستخدام LTZPs التي يمكن للجهاز استخدامها. تتطلّب الأجهزة تفعيل قناة LTZP واحدة على الأقل وضبطها كي تعمل ميزة "رصد المنطقة الزمنية للموقع الجغرافي" وظاهرة للمستخدمين في "الإعدادات".

إعداد الجهاز

يوضّح هذا القسم كيف يمكن للشركات المصنّعة للأجهزة ضبط الأجهزة لإتاحة رصد المنطقة الزمنية للموقع الجغرافي.

يمكن العثور على الإعدادات الأساسية لنظام التشغيل AOSP على الرابط frameworks/base/core/res/res/values/config.xml:

مفتاح الضبط قيمة AOSP الوصف
config_enableGeolocationTimeZoneDetection true هذا هو عنصر التحكّم الرئيسي في ميزة رصد المنطقة الزمنية للموقع الجغرافي.

تتوفّر هذه الميزة تلقائيًا في بروتوكول AOSP. يجب تفعيل أو ضبط واحد على الأقل من قناة الدعم الطويل الأمد (LTZP) حتى تتوفّر الميزة للمستخدمين.

يؤدي ضبط القيمة على false إلى إيقاف الميزة بالكامل لتوفير مساحة ذاكرة صغيرة.
config_enablePrimaryLocationTimeZoneProvider false يؤدي ذلك إلى تفعيل قناة الدعم الطويل الأمد (LTZP) الأساسية.
config_primaryLocationTimeZoneProviderPackageName اضبط هذا الإعداد على اسم حزمة التطبيق الذي يمكن فيه العثور على خدمة الموفِّر الأساسي.
config_enableSecondaryLocationTimeZoneProvider false يؤدي ذلك إلى تفعيل LTZP الثانوي.
config_secondaryLocationTimeZoneProviderPackageName اضبط هذا على اسم حزمة التطبيق حيث يمكن العثور على خدمة الموفّر الثانوي.

بشكلٍ تلقائي، يتم ضبط مفتاح config_enableGeolocationTimeZoneDetection في إعدادات AOSP على true، ما يتيح تفعيل ميزة رصد المنطقة الزمنية للموقع الجغرافي. لا تظهر الميزة للمستخدمين في البداية لأنّ AOSP لا يتضمّن إعدادات LTZP تلقائيًا. ومع ذلك، باستخدام هذه الإعدادات التلقائية، يمكن لصنّاع الأجهزة تفعيل نطاقات LTZP و محاكاة أدائها من سطر الأوامر لأغراض الاختبار. (لمزيد من المعلومات، يُرجى الاطّلاع على تصحيح الأخطاء والاختبار).

واجهات برمجة التطبيقات الخاصة بحالة LTZP

في Android 14، تتيح واجهات برمجة التطبيقات LTZP reporting reporting معلومات حول حالة LTZP. يتيح ذلك لـ LTZP الإبلاغ عن المشاكل التي قد لا تتمكّن المنصة من رصدها بنفسها، لأنّ مكونات رصد المنطقة الزمنية في المنصة لا تشارك بشكل مباشر في رصد الموقع الجغرافي أو المنطقة الزمنية في خوارزمية الموقع الجغرافي.

إنّ إمكانية الإبلاغ عن أنّ أداء LTZP قد انخفض بسبب بيئة الجهاز مفيدة عند توفُّر وضع النسخ الاحتياطي للاتصال الهاتفي. على سبيل المثال، إذا كان تطبيق LTZP تابعًا لجهة خارجية ويعتمد على إعدادات مخصّصة أو أذونات لكي يعمل ميزة "رصد الموقع الجغرافي"، وكان يعمل في وضع معدَّل أو تم إيقافه من خلال إعدادات الجهاز الحالية، يمكن لتطبيق LTZP الإبلاغ عن معلومات الحالة هذه إلى مكوّنات النظام الأساسي الداخلية، مثل تطبيق "الإعدادات"، من خلال الأسلوب reportSuggestion. يمكن بعد ذلك لتطبيق "الإعدادات" إرسال إشعارات إلى المستخدمين من خلال سلاسل أو تخصيصات قابلة للتخصيص بأنّ هناك إعدادات يجب تغييرها لكي يعمل أسلوب تحديد الموقع الجغرافي بشكل جيد أو على الإطلاق.

لمزيد من المعلومات عن الحالات التي يمكن أن يبلِغ عنها "البرنامج المحدود للوقت"، يُرجى الاطّلاع على TimeZoneProviderStatus.

إعداد ونشر LTZP

عند ضبط نقطة اتصال لاسلكي تابعة لجهة خارجية، يُرجى قراءة التعليمات الواردة في رمز المصدر لملف frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java. تقدّم تعليقات Javadoc تفاصيل عن الخدمة والأذونات المطلوبة وغيرها من الإعدادات.

لضبط أحد نطاقات LTZP، على المصنّعين اختيار عملية تطبيق لاستضافة خدمة نطاق LTZP. إنّ توفير عملية مخصّصة لبروتوكول LTZP يكون عاليًا، ولكن من الأفضل أن تكون عملية التطبيق التي يتم اختيارها هي عملية يتم تشغيلها في جميع الأوقات، مثل خادم النظام.

على الأجهزة التي تتضمّن مكوّنات نظام نموذجية (وحدات)، ننصحك بمراعاة التفاعل بين البيانات الجغرافية التي يستخدمها بروتوكول LTZP وقواعد المنطقة الزمنية (tzdb) المتوفّرة في وحدة بيانات المنطقة الزمنية (com.android.tzdata)، لأنّه من المحتمل أن تؤدّي التعديلات على أحدهما بدون إجراء تعديلات على الأخرى إلى حدوث مشاكل في انحراف الإصدار. لمزيد من المعلومات، يمكنك الاطّلاع على العوامل التي يجب مراعاتها عند استخدام الميزات.

مرجع AOSP LTZP

يحتوي AOSP على مرجع لتنفيذ LTZP ضمن packages/modules/GeoTZ. يستخدم هذا التنفيذ المرجعي واجهات برمجة التطبيقات في AOSP لتحديد الموقع الجغرافي للجهاز، ويستخدم ملف بيانات على الجهاز لربط الموقع الجغرافي بمجموعة من أرقام تعريف المناطق الزمنية.

يتم تضمين مجموعة بيانات مرجعية مستمَدة من مشاريع أخرى مفتوحة المصدر مع الرمز المصدر. لمعرفة مزيد من التفاصيل، يُرجى الاطّلاع على ملف README.md وملفّات LICENSE المختلفة.

تصحيح الأخطاء والاختبار

يصف القسم التالي أوامر shell لتصحيح الأخطاء واختبار ميزة رصد المنطقة الزمنية للموقع الجغرافي.

التفاعل مع خدمة location_time_zone_manager

عندما تكون خوارزمية الموقع الجغرافي متوافقة مع جهاز يعمل بالإصدار 12 من نظام التشغيل Android والإصدارات الأحدث، ينشئ Android مثيلاً لخدمة location_time_zone_manager في وقت التشغيل.

لتفريغ الحالة الحالية لـ location_time_zone_manager، استخدِم:

adb shell cmd location_time_zone_manager dump

للاطّلاع على مجموعة واسعة من خيارات سطر الأوامر للمساعدة في الاختبار، استخدِم:

adb shell cmd location_time_zone_manager help

يصف ناتج المساعدة أيضًا سمات خدمة device_config التي يمكن استخدامها للتأثير في سلوك time_zone_detector لأغراض الاختبار أو في مرحلة الطرح. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ضبط جهاز باستخدام خدمة device_config.

يمكن أن توفّر عمليات تنفيذ LTZP دعمًا خاصًا بها لاختبار أو تصحيح الأخطاء. على سبيل المثال، يمكنك استخدام الأمر التالي لتصحيح أخطاء مرجع LTZP في AOSP عند تسجيله في عملية خادم النظام:

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService