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

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

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

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

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

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

  • تنفيذ مرجعي لمنطقة انبعاثات منخفضة جدًا

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

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

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

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

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

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

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

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

سلوك الميزة

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

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

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

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

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

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

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

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

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

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

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

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

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

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

إعداد الجهاز

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

تتوفّر إعدادات AOSP الأساسية في frameworks/base/core/res/res/values/config.xml:

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

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