تسجيل المسار
نظرة عامة
تتناول هذه المقالة مشكلات تسجيل مسار GPX التي لوحظت لفترة طويلة في إصدارات مختلفة من Android و iOS. بالمصطلح الخلفية، نعني أن تطبيق OsmAnd لا يظهر في المقدمة، خاصة عندما تكون شاشة الجهاز مطفأة (وهو ما يختلف عن تعريف الخلفية الداخلية في الأجهزة).
ملاحظات:
-
اعتبارًا من Android 11 (2020/12)، لم يعد هناك خيار إذن النظام السماح دائمًا بالوصول إلى الموقع للاستخدام في الخلفية، ولكن هذا لا يحد من تسجيل مسارات OsmAnd في الخلفية. وفقًا لوثائق Google، يُعتبر هذا الآن استخدامًا في المقدمة لأن إذن استخدام الخدمة في المقدمة يُستخدم داخليًا، وإشعار النظام بأن المسار قيد التسجيل يكون مرئيًا دائمًا.
-
لاحظ أن الصياغة الجديدة لنظام Android قد تكون مضللة:
-
السماح أثناء استخدام التطبيق يعني أن التطبيق يمكنه تلقي بيانات الموقع باستمرار طالما أنه معروض على الشاشة أو لديه إشعار مرئي في شريط إشعارات Android، كما هو الحال في OsmAnd أثناء التنقل أو تسجيل الرحلة. (من الناحية الفنية، يُسمى هذا وضع المقدمة).
-
السماح طوال الوقت، من ناحية أخرى، يعني أن التطبيق يمكنه من حيث المبدأ الحصول على موقعك "دون أن يلاحظ" دون تطبيق أي من هذه الشروط. لكن Android يحد من تكرار الوصول إلى الموقع في هذا الوضع (الخلفية) إلى شيء مثل مرة واحدة في الساعة، وهو بالتأكيد ليس الوضع الصحيح لتطبيق الملاحة.
-
المسارات المسجلة صاخبة
هناك مشكلتان نموذجيتان في الدقة تؤديان إلى مسار مسجل غير دقيق.
- الوقوف لفترة أطول في نفس المكان.
- إشارة GPS سيئة والتحول إلى تحديد الموقع بناءً على إشارة الشبكة.
الإجراءات التي يمكنك القيام بها:
-
يمكنك تجنب مثل هذه المشاكل باستخدام الإيقاف المؤقت لقطع التسجيل في مثل هذه الظروف.
-
من الممكن أيضًا تعديل المسار لاحقًا وإزالة النقاط "الصاخبة".
-
أو يمكنك استخدام إعدادات ملحق تسجيل الرحلة لتصفية النقاط "الصاخبة" بالفعل أثناء التسجيل، بناءً على خبرتك وجهاز التسجيل الخاص بك. يمكنك تصفية النقاط بمعايير مختلفة:
- النقاط ذات السرعة المنخفضة أو الصفرية.
- النقاط ذات الدقة السيئة (GPS 'hdop').
- النقاط الأقرب من عتبة معينة بالمتر.
-
واجهة برمجة تطبيقات خدمات Google أو واجهة برمجة تطبيقات Android. يمكنك أيضًا تغيير كيفية تلقي OsmAnd لبيانات الموقع على أجهزة Android. في إعدادات OsmAnd ← مصدر الموقع اختر بين خدمات Google Play وواجهة برمجة تطبيقات Android، في كثير من الحالات يساعد التغيير إلى واجهة برمجة تطبيقات Android على تحسين المسارات المسجلة ويجعلها أقل ضوضاء.
المسارات المسجلة بها فجوات
بدءًا من Android 4.4، يمكن لميزات توفير الطاقة أن تحد من استخدام وحدة المعالجة المركزية، وتقلل من سطوع الشاشة، وتقتل تطبيقات الخلفية عندما تكون الشاشة مطفأة. قد يؤثر هذا على أداء OsmAnd للاستخدام الخارجي، وعرض الخرائط، وتسجيل المسارات. لتجنب المشكلات، فكر في تعطيل ميزات توفير الطاقة بالكامل. بناءً على تجربة المستخدم، فإن هذا له تأثير ضئيل على عمر البطارية لمعظم الأجهزة.
تكوين OsmAnd لتسجيل المسار
- منع التسجيل المستقل. تأكد من أن إعداد منع التسجيل المستقل ضمن الملحقات/تسجيل الرحلة غير مفعل للسماح لـ OsmAnd بتسجيل المسارات مع إيقاف تشغيل الشاشة.
- تحديث OsmAnd. تستخدم إصدارات Android استراتيجيات مختلفة لتقليل استهلاك الطاقة عن طريق قتل التطبيقات التي تعمل في الخلفية. يستخدم الإصدار 3.9 أو الأحدث خدمة الواجهة الأمامية، المرئية في شريط الإشعارات، لإبقاء التطبيق يعمل في الخلفية على معظم إصدارات Android. هذا فعال بشكل خاص على Android 8+ (المشكلة #5255، المشكلة #5587).
تحسين Android لتسجيل المسار
-
استبعاد OsmAnd من تحسين الطاقة. في إعدادات الطاقة أو توفير الطاقة بجهاز Android الخاص بك، ابحث عن OsmAnd ضمن التطبيقات أو التطبيقات أو مدير التطبيقات. حدد موقع توفير الطاقة أو استهلاك الطاقة، واستبعد OsmAnd من تحسين الطاقة. (المشكلة #5255)
-
تعطيل وضع توفير الطاقة. يمكن أن يساعد تعطيل وضع توفير الطاقة في Android بالكامل، خاصة في إصدارات Android القديمة. قد يحل هذا مشكلات الأداء أثناء تسجيل المسار أو التنقل.
التحكم في سلوك تطبيقات iOS في الخلفية
يمكن لـ iOS إيقاف أو تعليق تطبيقات الخلفية تلقائيًا عند إعادة تخصيص موارد النظام. لا يمكن لـ OsmAnd تجاوز هذا السلوك. إذا توقف تسجيل المسار عند قفل الجهاز، فقد يترك هذا فجوات في التسجيل. يمكنك تعديل هذه الفجوات باستخدام أداة تخطيط مسار.
لمزيد من التفاصيل حول كيفية تعامل iOS مع تتبع الموقع، راجع وثائق Apple هنا.
إعدادات الطاقة المختبرة لنظام Android 9 و 10 و 11 (هاردي، 25-08-2020)
تم اختبار إعدادات الطاقة التالية بنجاح ضمن Android 9 و 10 ولاحقًا 11 (على أجهزة Samsung) لجعل OsmAnd يسجل المسارات دون فجوات. يرجى مراجعة هذه الإعدادات العشرة وتعيينها وفقًا لذلك:
- (1) توفير الطاقة (الوضع) = إيقاف (أو محسن في Android 10)
- (2) توفير الطاقة التكيفي = إيقاف (عند التشغيل، قد يتم تنشيط وضع توفير الطاقة المتوسط أحيانًا، مما يمنع OsmAnd من التسجيل)
- (3) البطارية التكيفية = تشغيل (لا ينبغي أن يؤثر على التطبيقات المستثناة من تحسين البطارية على أي حال، انظر (9) أدناه)
- (4) وضع التطبيقات غير المستخدمة في وضع السكون = إيقاف (التشغيل ربما يكون جيدًا أيضًا إذا تم استثناء OsmAnd من تحسين البطارية، انظر (9) أدناه)
- (5) تعطيل التطبيقات غير المستخدمة تلقائيًا = إيقاف (يبدو أنه موجود فقط في Android 9)
- (6) تحسين الإعدادات = إيقاف (في Android 10 ضمن العناية بالجهاز / متقدم، في Android 11 يبدو أنه اختفى)
- (7) التحسين التلقائي (يوميًا) = تشغيل (ربما لا يكون ذا صلة)
- (8) إعادة التشغيل التلقائي (في أوقات محددة) = إيقاف (ربما لا يكون ذا صلة)
- (9) تحسين استخدام البطارية (ضمن التطبيقات / OsmAnd / البطارية أو التطبيقات / 3 نقاط / وصول خاص / تحسين استخدام البطارية / الكل / OsmAnd) = يُنصح باستثناء OsmAnd من تحسين البطارية (على الرغم من أنه ليس ضروريًا على جميع الأجهزة)
- (10) السماح بالنشاط في الخلفية = تشغيل لـ OsmAnd ضمن التطبيقات / OsmAnd / البطارية لنظام Android 11
تتفاعل بعض هذه الإعدادات، لذا كن دقيقًا. أفضل طريقة للبحث عن الإعدادات المذكورة أعلاه بالاسم (مع وبدون التعبيرات بين قوسين). اعتمادًا على إصدار Android الخاص بك، قد تكون مبعثرة عبر شاشات إعدادات Android المختلفة هذه:
- العناية بالجهاز
- العناية بالجهاز / 3 نقاط / الأتمتة
- العناية بالجهاز / متقدم
- العناية بالجهاز / البطارية
- العناية بالجهاز / البطارية / الإعدادات
- العناية بالجهاز / البطارية / إدارة طاقة التطبيق
- العناية بالجهاز / البطارية / المزيد من إعدادات البطارية
كيفية تتبع المسافة المقطوعة
لا يحتوي OsmAnd على أداة خاصة تشبه عداد المسافات، يمكنك استخدام ملحق تسجيل الرحلة لتتبع المسافة المقطوعة وإعادة تعيينها عند الحاجة.
OsmAnd 3.9: مشاكل الارتفاع عند استخدام خدمات Google Play
لقد غيرت Google Play سياستها، وللامتثال لذلك، يُطلب من OsmAnd، اعتبارًا من الإصدار 3.9 (باستثناء إصدارات Nightly و F-Droid و Huawei) استخدام خدمات Google Play للحصول على إصلاحات الموقع أثناء التشغيل في الخلفية (أي، في مصطلحات Android، كخدمة في المقدمة مع إشعار نظام مرئي).
بعد هذا التغيير، يبدو أن هناك مشكلة في تسجيل الارتفاع: على ما يبدو، تقوم خدمات Google Play بتضمين قياس الارتفاع بقوة شديدة، انظر مشكلة GitHub #10864. تؤثر هذه المشكلة على Android 10، وربما لا تؤثر على Android 11. تم الإبلاغ عن المشكلة بالفعل على موقع Google، ومن المحتمل أن يتم إصلاحها في 09-03-2021.
كحل بديل، في إعدادات OsmAnd ← مصدر الموقع يمكنك تبديل مصدر الموقع من خدمات Google Play إلى واجهة برمجة تطبيقات Android.
OsmAnd 3.9: استبدال تنشيط GPS الآن بخدمة الواجهة الأمامية المستمرة (2020/12)
اعتبارًا من الإصدار 3.9، عند الحاجة إلى تسجيل المسار أو التنقل، يدعم OsmAnd GPX باستمرار عبر خدمة خلفية Android، وهذا مرئي كإشعار نظام Android.
تمت إزالة الاستراتيجية السابقة لاستخدام وضع السكون وتنشيط GPS الدوري من رمزنا (الالتزام إسقاط خدمة التنقل عند التنبيه)، كما هو مطلوب بموجب قيود Google Play الجديدة على الوصول إلى الموقع في الخلفية. ونتيجة لذلك، تنطبق الأقسام التالية (أ) و (ب) فقط على إصدارات OsmAnd قبل 3.9:
(أ) استراتيجية تنشيط GPS
- (أ1) أثناء استخدام OsmAnd، على سبيل المثال التنقل. نحافظ على وحدة GPS الخاصة بالنظام قيد التشغيل طوال الوقت، حيث أن معلومات الموقع المستمرة هي المفتاح هنا. يبدو أن تأثير ذلك على استخدام البطارية (حجم الترتيب) حوالي 5% في الساعة على الأنظمة القديمة حتى Android 4.4، و 2-3% للأنظمة الأحدث.
- (أ2) لتسجيل المسار في الخلفية بدون تنقل متزامن. للتسجيل بفواصل زمنية تصل إلى 15 ثانية، نحافظ أيضًا على تشغيل GPS، ولن توفر الاستراتيجيات الأخرى الكثير من طاقة البطارية.
- (أ3) للفواصل الزمنية >=30 ثانية، نقوم بتشغيل GPS فقط لكل نقطة أخذ عينات. لهذا تأثير ملحوظ على دقة النقاط المسجلة ولكنه يقلل من استخدام البطارية إلى حوالي 1.2% في الساعة لتسجيل المسار لمدة 30 ثانية.
(ب) مشاكل تنشيط GPS
لتحقيق تنشيط GPS، حتى الآن نستخدم مدير التنبيه في Android لتنشيط الجهاز بشكل دوري (أيضًا من وضع السكون، الذي تم تقديمه في Android 6). قدمت إصدارات Android الجديدة المشكلات التالية:
- (ب1) أصبح setRepeating() لمدير التنبيه غير دقيق بدءًا من Android 4.4: التخفيف: نستخدم الآن setRepeating() فقط حتى Android 4.2، وطريقة setExact() الجديدة بدءًا من Android 4.4، و setExactAndAllowWhileIdle() لنظام Android 8+. (المشكلة #5632)
- (ب2) بدءًا من Android 4.4، تحد الأنظمة من عدد مرات تنفيذ setExact() بشكل متكرر إلى على سبيل المثال مرة واحدة كل 5 أو حتى 15 دقيقة. (يبدو أن القيمة الفعلية تختلف بشكل كبير حسب الجهاز.) لم يتم العثور على حل جيد حتى الآن. التخفيف الحالي هو أننا لا نستخدم تنشيط مدير التنبيه، بدلاً من ذلك نحافظ على تشغيل GPS دائمًا لتسجيل المسار في الخلفية على الأجهزة التي تعمل بنظام Android 5+ لجميع فترات التسجيل الأقصر من 5 دقائق. ينتج عن ذلك مسارات موثوقة ودقيقة على حساب استهلاك أعلى للبطارية. (المشكلة #5632)