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

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

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

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

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

  • نظام إضافات للمكوّنات التي تنفّذ رصد الموقع الجغرافي وربط المنطقة الزمنية يُطلق على الإضافة اسم مقدّم المنطقة الزمنية للموقع الجغرافي (LTZP) ويمكن أن يتوفّر ما يصل إلى اثنتَين منها على الجهاز. توفّر المنصة واجهات برمجة تطبيقات للنظام يجب استخدامها لتنفيذ 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 اقتراحًا غير مؤكّد (إذا لزم الأمر) عندما يغيّر المستخدم الحالي الإعدادات لتجنُّب مشاركة معلومات الموقع الجغرافي بين المستخدمين.

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

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

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

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

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

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

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

لتوفير ميزة رصد المنطقة الزمنية للموقع الجغرافي، يجب إعداد الأجهزة باستخدام LTZP التي يمكن للجهاز استخدامها. تتطلّب الأجهزة تفعيل 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 اضبط هذه القيمة على اسم حزمة التطبيق الذي يمكن العثور فيه على خدمة المقدّم الثانوي.

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

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

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

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

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

إعداد LTZP ونشرها

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

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

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

LTZP المرجعية في AOSP

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

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

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

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

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

عند توفّر خوارزمية الموقع الجغرافي على جهاز يعمل بنظام التشغيل Android 12 والإصدارات الأحدث، ينشئ 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