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

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

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

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

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

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

  • تطبيق LTZP المرجعي.

  • أدوات المضيف لإنشاء مجموعة بيانات مرجعية من بيانات OpenStreetMap التي يمكن استخدامها مع التنفيذ المرجعي.

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

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

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

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

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

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

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

سلوك الميزة

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

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

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

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

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

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

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

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

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

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

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

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

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

لمزيد من المعلومات حول الحالات التي يمكن لـ LTZP الإبلاغ عنها، راجع TimeZoneProviderStatus .

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

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

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

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

مرجع AOSP LTZP

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

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