يمكن أن يؤثّر استخدام الموقع الجغرافي في الخلفية بشكل كبير في عمر البطارية. يتيح نظام التشغيل Android تحديد حدود لجمع بيانات الموقع الجغرافي في الخلفية، ما يحثّ المطوّرين على تحسين تطبيقاتهم لزيادة كفاءة البطارية. وتفيد هذه التحسينات جميع الأجهزة، بغض النظر عن إصدار Android الذي تعمل عليه.
عند تفعيل حدود رصد الموقع الجغرافي في الخلفية:
- يتمّ الحدّ من جمع بيانات الموقع الجغرافي في الخلفية ويتم احتساب الموقع الجغرافي ونقله بضع مرّات في الساعة فقط.
- تكون عمليات البحث عن شبكات Wi-Fi أكثر تحفّظًا، ولا يتم احتساب تحديثات الموقع الجغرافي عندما يظل الجهاز متصلاً بنقطة الوصول الثابتة نفسها.
- تتغيّر سرعة استجابة وضع "الحدّ الجغرافي" من عشرات الثواني إلى دقائق تقريبًا. يؤدي هذا التغيير إلى تحسين أداء البطارية بنسبة تصل إلى 10 مرات على بعض الأجهزة.
المعرفة المطلوبة
يفترض هذا المستند معرفة واجهات برمجة التطبيقات التالية:
- خدمات الموقع الجغرافي من Google: توفّر واجهات برمجة التطبيقات هذه دقة أعلى وتشكل عبئًا أقل على البطارية مقارنةً بواجهات برمجة التطبيقات لتحديد الموقع الجغرافي في إطار العمل.
- Fused Location Provider: تجمع واجهة برمجة التطبيقات هذه إشارات من نظام تحديد المواقع العالمي (GPS) وشبكة Wi-Fi وشبكات الجوّال، بالإضافة إلى مقياس التسارع والجيروسكوب ومقياس المغناطيسية وغيرها من أدوات الاستشعار.
- الحدّ الجغرافي: تم إنشاء واجهة برمجة التطبيقات هذه استنادًا إلى واجهة برمجة التطبيقات Fused Location Provider API، وهي محسَّنة لتحسين أداء البطارية.
فهم استنزاف البطارية
يرتبط جمع الموقع الجغرافي باستنزاف البطارية على النحو التالي:
- الدقة: تشير إلى دقة بيانات الموقع الجغرافي. بشكل عام، كلما زادت الدقة، زاد استنزاف البطارية.
- الوتيرة: تشير إلى عدد المرات التي يتم فيها احتساب الموقع الجغرافي. وكلما زادت وتيرة احتساب الموقع الجغرافي، زاد استهلاك طاقة البطارية.
- وقت الاستجابة: يشير إلى سرعة إرسال بيانات الموقع الجغرافي. عادةً ما يؤدي خفض وقت الاستجابة إلى استهلاك المزيد من طاقة البطارية.
الدقة
يمكنك تحديد دقة الموقع الجغرافي باستخدام الطريقة setPriority()
، مع تمرير
إحدى القيم التالية كوسيطة:
- يقدّم
PRIORITY_HIGH_ACCURACY
الموقع الجغرافي الأكثر دقة ممكنًا، ويُحتسَب باستخدام أكبر عدد ممكن من الإدخالات (يتم تفعيل نظام تحديد المواقع العالمي (GPS) وشبكة Wi-Fi والهاتف الخلوي، ويستخدم مجموعة متنوعة من أجهزة الاستشعار)، وقد يؤدي إلى استهلاك كبير للبطارية. - يقدّم
PRIORITY_BALANCED_POWER_ACCURACY
موقعًا جغرافيًا دقيقًا مع تحسين استهلاك الطاقة. نادرًا ما يستخدم نظام تحديد المواقع العالمي (GPS). يستخدم هذا الإجراء عادةً مزيجًا من معلومات Wi-Fi وبرج الاتصالات لاحتساب الموقع الجغرافي للجهاز. - يعتمد تطبيق
PRIORITY_LOW_POWER
بشكل كبير على أبراج الاتصالات ويتجنب استخدام بيانات نظام تحديد المواقع العالمي (GPS) وشبكة Wi-Fi، ما يوفر دقة تقريبية (على مستوى المدينة) مع الحد الأدنى من استهلاك البطارية. - يتلقّى
PRIORITY_NO_POWER
المواقع الجغرافية بشكل سلبي من تطبيقات أخرى سبق أن تم احتساب موقعها الجغرافي.
استخدِم خيارَي "توفير الطاقة" أو "استخدام الطاقة المنخفضة" لتلبية احتياجات المواقع الجغرافية في معظم التطبيقات. يجب حجز الدقة العالية للتطبيقات التي تعمل في المقدّمة وتتطلّب تعديلات الموقع الجغرافي في الوقت الفعلي (مثل تطبيق الخرائط).
التردد
يمكنك تحديد معدّل تكرار عرض الإعلانات حسب الموقع الجغرافي باستخدام طريقتَين:
- استخدِم طريقة
setinterval()
لتحديد الفاصل الزمني لاحتساب موقع تطبيقك الجغرافي. - استخدِم طريقة
setFastestInterval()
لتحديد الفاصل الزمني لتلقّي المواقع الجغرافية للتطبيقات الأخرى.
نقْل أكبر قيمة ممكنة عند استخدام setInterval()
وينطبق ذلك بشكل خاص
على جمع بيانات الموقع الجغرافي في الخلفية، ما يؤدي غالبًا إلى استنزاف شحن البطارية. احجز فواصل زمنية تبلغ بضع ثوانٍ لحالات الاستخدام التي تعمل في المقدّمة.
تفرض حدود الموقع الجغرافي في الخلفية التي تم تقديمها في Android 8.0 (مستوى واجهة برمجة التطبيقات 26) هذه الاستراتيجيات، ولكن يجب أن يسعى تطبيقك إلى فرضها على الأجهزة التي تعمل بالإصدار Android 7.0 (مستوى واجهة برمجة التطبيقات 24) والإصدارات الأقدم.
استغرق الرد وقتًا طويلاً
يمكنك تحديد وقت الاستجابة باستخدام طريقة setMaxWaitTime()
، وعادةً ما يتم
إدخال قيمة أكبر بعدة مرات من الفاصل الزمني المحدّد في طريقة
setInterval()
. يؤدّي هذا الإعداد إلى تأخير إرسال الموقع الجغرافي، وقد يتم إرسال تحديثات الموقع الجغرافي المتعدّدة في دفعات. يساعد هذان التغييران في
تقليل استهلاك البطارية.
إذا لم يكن تطبيقك بحاجة إلى تحديث الموقع الجغرافي على الفور، عليك ضبط
القيمة الأكبر الممكنة لطريقة setMaxWaitTime()
، ما يؤدي إلى تقليل وقت الانتظار
بشكل فعّال للحصول على المزيد من البيانات وكفاءة البطارية.
عند استخدام حدود جغرافية، يجب أن تُرسل التطبيقات قيمة كبيرة إلى أسلوب
setNotificationResponsiveness()
للحفاظ على الطاقة. ننصحك باستخدام قيمة تبلغ
خمس دقائق أو أكثر.
مراجع إضافية
لمزيد من المعلومات، يُرجى الاطّلاع على المستندات التالية:
- الاقتراحات: يوضّح هذا الدليل بعض الخطوات المقترَحة الملموسة التي يمكنك اتّخاذها لتحسين تأثير تطبيقك في عمر البطارية.
- حالات الاستخدام: يقدّم هذا الدليل العديد من حالات الاستخدام الشائعة التي قد تستخدم فيها خدمات الموقع الجغرافي وكيفية تحسين تأثيرها في عمر البطارية في هذه الحالات.