باستخدام واجهات برمجة التطبيقات للمواقع الجغرافية في "خدمات 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، يمكنك الاطّلاع على المواد التالية:
نماذج
- نموذج تطبيق لتوضيح أفضل الممارسات أثناء جلب موقعك الجغرافي الحالي.