رصد الموقع الجغرافي على نظام التشغيل Wear OS

يتميّز نظام التشغيل Wear OS بتصميمه الصغير والسريع، ما يجعله نظامًا أساسيًا مثاليًا للتطبيقات التي تسجّل الموقع الجغرافي للمستخدم وتبلِغ عنه وتستجيب له. كأمثلة، يمكنك إنشاء تطبيقات توفر للمستخدمين تحديثات في الوقت الفعلي عن المسافة والسرعة والاتجاه، أو تقدم إشارات سريعة حول محيط المستخدمين.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إنشاء تطبيقات مستندة إلى الموقع الجغرافي.

تحتوي بعض الساعات على أداة استشعار نظام تحديد المواقع العالمي (GPS) مدمجة لاسترداد بيانات الموقع بدون الحاجة إلى هاتف متصل. عند طلب بيانات الموقع الجغرافي في أحد تطبيقات الساعة الذكية، يسترد النظام الموقع الجغرافي من الهاتف أو الساعة باستخدام الطريقة الأكثر فعالية. لذلك حتى بدون جهاز استشعار نظام تحديد المواقع العالمي (GPS) في الساعة، لا يزال بإمكانك الحصول على معلومات الموقع.

للحدّ من تأثير الحصول على بيانات الموقع الجغرافي على عمر البطارية، اتّصل بالرمز setPriority() مع إدراج القيمة PRIORITY_BALANCED_POWER_ACCURACY. قد تؤدي إعدادات الأولوية المختلفة إلى تحسين الشرائح بشكل مختلف.

حافِظ على طاقة البطارية من خلال طلب تحديد الموقع الجغرافي مرة واحدة في الدقيقة باستخدام setInterval() إذا أمكن.

كما هو موضّح في الأقسام التالية، يجب أن يعالج تطبيقك حالة فقدان بيانات الموقع الجغرافي عندما ينقطع اتصال الساعة بالهاتف بدون أداة استشعار.

اختيار الطريقة

هناك طريقتان لتوفير بيانات الموقع الجغرافي لتطبيق Wear OS، من خلال استخدام موفِّر الموقع المدمج (FLP) أو خدمات ارتداء الجهاز الصحية (WHS). FLP هو واجهة برمجة تطبيقات لخدمات Google Play.

استخدام "FLP" في الحالات التالية:

  • أنت تريد بيانات الموقع في الوقت الحالي ولكن ليس بشكل مستمر، مثل وضع علامة على موقع سيارة متوقفة.
  • أنت تريد معرفة الموقع الجغرافي باستمرار، ولكنك لا تحتاج إلى سجلّ المواقع الجغرافية.

يمكن استخدام WHS في الحالات التالية:

  • أنت بحاجة إلى بيانات من أدوات استشعار أخرى أو من المحتمل أن تحتاج إلى بيانات من أجهزة استشعار أخرى في المستقبل.
  • تطبيقك مخصص للتمرين أو التمارين الرياضية ويحتاج إلى تتبع بيانات الموقع على مدار فترة زمنية محددة.

بالنسبة إلى الساعات المقترنة بهواتف iPhone، يمكنك الاطّلاع على بيانات الموقع الجغرافي للساعات المقترنة بهواتف iPhone.

استخدام موفّر الموقع المدمج

على ساعة، يمكنك الحصول على بيانات الموقع الجغرافي باستخدام FusedLocationProviderClient. قد يستخدم "FLP" بيانات الموقع الجغرافي من الهاتف. لمزيد من المعلومات، راجع إنشاء عميل خدمات الموقع الجغرافي.

للحصول على معلومات حول طلب تحديثات الموقع الجغرافي وتتبُّع الموقع الجغرافي للمستخدم باستمرار، راجع طلب تحديثات الموقع الجغرافي.

رصد نظام تحديد المواقع العالمي (GPS) على متن الطائرة

إذا كان المستخدم يركض مع ساعة تفتقر إلى أداة استشعار نظام تحديد المواقع العالمي (GPS) المدمَجة وتركت الهاتف المقترن، لن يتمكّن تطبيق الساعة من الحصول على بيانات الموقع الجغرافي من خلال الجهاز المتصل. اكتشف هذا الموقف في تطبيقك وحذر المستخدم من أن إمكانات الموقع غير متاحة.

لتحديد ما إذا كانت الساعة تحتوي على جهاز استشعار مدمَج لنظام تحديد المواقع العالمي (GPS)، يُرجى استدعاء طريقة hasSystemFeature() مع الرمز PackageManager.FEATURE_LOCATION_GPS. يكشف الرمز التالي ما إذا كانت الساعة تحتوي على جهاز استشعار نظام تحديد المواقع العالمي (GPS) مدمج عند بدء نشاط ما:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)

    if (!hasGps()) {
        Log.d(TAG, "This hardware doesn't have GPS.")
        // Fall back to functionality that doesn't use location or
        // warn the user that location function isn't available.
    }
}

private fun hasGps(): Boolean =
        packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)

Java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    if (!hasGps()) {
        Log.d(TAG, "This hardware doesn't have GPS.");
        // Fall back to functionality that doesn't use location or
        // warn the user that location function isn't available.
    }
    ...
}

private boolean hasGps() {
    return getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);
}

التعامل مع أحداث انقطاع الاتصال

إذا كانت الساعة لا تحتوي على أداة استشعار نظام تحديد المواقع العالمي (GPS) مدمجة فيها، وفقدت الاتصال بالهاتف، ستفقد الساعة مصدر بيانات الموقع الجغرافي. وإذا كان تطبيقك يتوقّع تدفقًا مستمرًا من البيانات، يجب أن يرصد التطبيق فقدان الاتصال، وأن يحذّر المستخدم، وأن يتراجع مستوى أدائه على نحو سلس.

كما هي الحال في الأجهزة الجوّالة، عند طلب تعديل الموقع الجغرافي باستخدام FusedLocationProviderClient.requestLocationUpdates()، يتم تمرير LocationCallback أو PendingIntent. ويشمل كلاهما معلومات الموقع الجغرافي وحالة LocationAvailability.

عند استخدام الخيار LocationCallback، يمكنك إلغاء onLocationAvailability() لتلقّي آخر الأخبار حول حالة توفّر الموقع الجغرافي.

عند استخدام الخيار PendingIntent وعرض Intent، استخرِج حالة مدى توفّر الموقع الجغرافي من Intent باستخدام طريقة LocationAvailability.extractLocationAvailability(Intent).

لم يتم العثور على الموقع الجغرافي الخاص بالاسم المعرِّف.

عند فقدان إشارة نظام تحديد المواقع العالمي (GPS)، يمكنك استرداد آخر موقع معروف لساعة المستخدم. يكون استرداد آخر موقع معروف مفيدًا عندما لا تتمكن من إصلاح نظام تحديد المواقع العالمي (GPS) وعندما تفتقر الساعة إلى نظام تحديد المواقع العالمي (GPS) المدمج وتفقد اتصالها بالهاتف. ولمزيد من المعلومات، راجِع الحصول على آخر موقع جغرافي معروف.

مسح الموقع الجغرافي بالمكالمات المجمّعة

إذا كنت تستخدم المكالمات المجمّعة، اتّصِل بالرقم flushLocations() عند إعادة تشغيل الشاشة أو عودتها من "وضع الإضاءة السينمائية" لإعادة أي مواقع مجمّعة في كل LocationListeners وLocationCallbacks وPending Intents المسجَّلة.