الحصول على آخر موقع جغرافي معروف

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

نماذج

  • نموذج تطبيق لتوضيح أفضل الممارسات أثناء جلب موقعك الجغرافي الحالي.