باستخدام واجهات برمجة التطبيقات للموقع الجغرافي في "خدمات Google Play"، يمكن لتطبيقك طلب آخر موقع جغرافي معروف لجهاز المستخدم. في معظم الحالات، يهمّك معرفة الموقع الجغرافي الحالي للمستخدم، والذي يعادل عادةً آخر موقع جغرافي معروف للجهاز.
على وجه التحديد، استخدِم موفِّر الموقع المدمج لاسترداد آخر موقع جغرافي معروف للجهاز. موفِّر الموقع المدمج هو إحدى واجهات برمجة التطبيقات للموقع الجغرافي في "خدمات Google Play". وتدير هذه الخدمة تكنولوجيا الموقع الجغرافي الأساسية وتوفّر واجهة برمجة تطبيقات تتيح لك تحديد المتطلبات على مستوى عالٍ، مثل الدقة العالية أو الطاقة المنخفضة. ويحسِّن أيضًا استخدام الجهاز لطاقة البطارية.
يوضّح لك هذا الدرس كيفية تقديم طلب واحد للحصول على الموقع الجغرافي لجهاز
باستخدام طريقة getLastLocation() في موفِّر الموقع المدمج.
إعداد "خدمات Google Play"
للوصول إلى موفِّر الموقع المدمج، يجب أن يتضمّن مشروع تطوير تطبيقك "خدمات Google Play". نزِّل مكوّن "خدمات Google Play" وثبِّته من خلال SDK Manager وأضِف المكتبة إلى مشروعك. لمعرفة التفاصيل، يُرجى الاطّلاع على دليل إعداد "خدمات Google Play".
تحديد أذونات التطبيق
يجب أن تطلب التطبيقات التي تستخدم ميزاتها الخدمات المستندة إلى الموقع الجغرافي أذونات تحديد الموقع الجغرافي، وذلك حسب حالات استخدام هذه الميزات.
إنشاء عميل للخدمات المستندة إلى الموقع الجغرافي
في الإجراء onCreate() الخاص بنشاطك، أنشئ مثيلاً لعميل "موفِّر الموقع المدمج" كما يوضّح مقتطف الرمز التالي.
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
الحصول على آخر موقع جغرافي معروف
بعد إنشاء عميل "خدمات الموقع الجغرافي"، يمكنك الحصول على آخر موقع جغرافي معروف لجهاز المستخدم. استخدِم طريقة getLastLocation() الخاصة بموفِّر الموقع المدمج لاسترداد الموقع الجغرافي للجهاز. يتم تحديد دقة الموقع الجغرافي الذي يتم عرضه من خلال هذا الطلب من خلال إعدادات الأذونات التي تضعها في ملف بيان تطبيقك، كما هو موضّح في الدليل حول كيفية طلب أذونات تحديد الموقع الجغرافي.
لطلب آخر موقع جغرافي معروف، يمكنك استدعاء الطريقة getLastLocation().
يوضّح مقتطف الرمز التالي الطلب والمعالجة الأساسية للاستجابة:
fusedLocationClient.lastLocation .addOnSuccessListener { location: Location? -> // Got last known location. In some rare situations this can be null. }
يعرض الإجراء getLastLocation() عنصر Task يمكنك استخدامه
للحصول على عنصر Location يتضمّن إحداثيات خطوط العرض والطول
لموقع جغرافي معيّن. قد يكون عنصر الموقع الجغرافي null في
الحالات التالية:
- تم إيقاف الموقع الجغرافي في إعدادات الجهاز. قد تكون النتيجة
nullحتى إذا تم استرداد آخر موقع جغرافي في السابق لأنّ إيقاف الموقع الجغرافي يؤدي أيضًا إلى محو ذاكرة التخزين المؤقت. - لم يسجّل الجهاز موقعه الجغرافي مطلقًا، وقد يكون ذلك بسبب أنّه جهاز جديد أو تمت إعادة ضبطه على الإعدادات الأصلية.
- تمت إعادة تشغيل "خدمات Google Play" على الجهاز، ولا يتوفّر أي عميل نشط لـ "موفِّر الموقع المدمج" طلب الموقع الجغرافي بعد إعادة تشغيل الخدمات. لتجنُّب هذا الموقف، يمكنك إنشاء عميل جديد وطلب تلقّي إشعارات بشأن الموقع الجغرافي بنفسك. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة طلب تحديثات الموقع الجغرافي.
اختيار أفضل تقدير للموقع الجغرافي
توفّر FusedLocationProviderClient عدة طرق لاسترداد معلومات الموقع الجغرافي للجهاز. اختَر أحد الخيارات التالية، استنادًا إلى حالة استخدام تطبيقك:
- يحصل
getLastLocation()على تقدير للموقع الجغرافي بسرعة أكبر ويقلّل من استخدام البطارية الذي يمكن أن يُعزى إلى تطبيقك. ومع ذلك، قد تكون معلومات عن الموقع الجغرافي للجهاز قديمة، إذا لم يستخدم أي عملاء آخرين الموقع الجغرافي بشكل نشط مؤخرًا. يحصل
getCurrentLocation()على موقع جغرافي أحدث وأكثر دقة بشكل أكثر اتساقًا. ومع ذلك، يمكن أن تتسبب هذه الطريقة في حدوث عملية حسابية للموقع الجغرافي النشط على الجهاز.هذه هي الطريقة المقترَحة للحصول على موقع جغرافي جديد كلما أمكن ذلك، وهي أكثر أمانًا من البدائل الأخرى، مثل بدء الإشعارات بشأن الموقع الجغرافي وإدارتها بنفسك باستخدام
requestLocationUpdates(). إذا كان تطبيقك يستدعيrequestLocationUpdates()، يمكن أن يستهلك تطبيقك أحيانًا كميات كبيرة من الطاقة إذا لم يكن الموقع الجغرافي متاحًا، أو إذا لم يتم إيقاف الطلب بشكل صحيح بعد الحصول على موقع جغرافي جديد.
موارد إضافية
لمزيد من المعلومات حول جلب الموقع الحالي في Android، راجع المواد التالية:
نماذج
- نموذج تطبيق لتوضيح أفضل الممارسات أثناء جلب الموقع الجغرافي الحالي