تحديد المنطقة الزمنية للموقع

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

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

تتكون ميزة اكتشاف المنطقة الزمنية للموقع من المكونات التالية في منصة AOSP:

  • منطق اكتشاف المنطقة الزمنية في خادم النظام.
  • خيار يمكن الوصول إليه من قبل المستخدم في الإعدادات ، تم تقديمه في Android 12 ، لتمكين المستخدمين من الاختيار بين آليات الكشف عن المنطقة الزمنية للمكان والهاتف.
  • نظام إضافي للمكونات التي تقوم باكتشاف الموقع ورسم خرائط المنطقة الزمنية. يُطلق على المكون الإضافي اسم مزود المنطقة الزمنية للموقع (LTZP) ويمكن أن يكون هناك ما يصل إلى اثنين منهم على الجهاز.
  • تطبيق مرجعي LTZP.
  • أدوات الاستضافة لإنشاء مجموعة بيانات مرجعية من بيانات OpenStreetMap التي يمكن استخدامها مع تنفيذ المرجع.

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

يتضمن اكتشاف المنطقة الزمنية للموقع ميزات خصوصية المستخدم التالية:

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

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

سلوك الميزة

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

خدمة location_time_zone_manager هي المسؤولة عن إنشاء اقتراحات لأصل الموقع من time_zone_detector . يتم تشغيل خدمة location_time_zone_manager في عملية خادم النظام.

لا تحتوي خدمة location_time_zone_manager على أي منطق للكشف عن المنطقة الزمنية. إنه مسؤول عن إدارة دورة حياة مكون إضافي واحد أو اثنين من المكونات الإضافية يطلق عليهما Location Time Zone Providers (LTZP).

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

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

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

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

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

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 واحد على الأقل لكي تكون الميزة متاحة للمستخدمين.

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

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

تكوين موفر المنطقة الزمنية للموقع ونشره

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

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

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

مرجع AOSP موفر المنطقة الزمنية للموقع

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

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

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