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