شناسایی مکان در Wear OS

شکل کوچک و قابل مشاهده یک ساعت، Wear OS را به یک پلتفرم ایده آل برای برنامه هایی تبدیل می کند که موقعیت مکانی کاربر را ضبط، گزارش می دهند و به آن پاسخ می دهند. به عنوان مثال، می‌توانید برنامه‌هایی بسازید که به‌روزرسانی‌های بی‌درنگ در مورد مسافت، سرعت و جهت به کاربران ارائه می‌دهند یا نشانه‌های قابل توجهی درباره محیط اطراف کاربران ارائه می‌دهند.

برای اطلاعات بیشتر، به ساخت برنامه‌های آگاه از موقعیت مکانی مراجعه کنید.

برخی از ساعت‌ها دارای حسگر GPS داخلی هستند که داده‌های مکان را بدون نیاز به تلفن متصل بازیابی می‌کند. وقتی داده‌های مکان را در یک برنامه ساعت درخواست می‌کنید، سیستم مکان را از تلفن یا ساعت با استفاده از کم مصرف‌ترین روش بازیابی می‌کند. بنابراین حتی بدون سنسور GPS در ساعت، همچنان می توانید اطلاعات مکان را دریافت کنید.

برای کاهش تأثیر اکتساب اطلاعات مکان بر عمر باتری، setPriority() را با مقدار PRIORITY_BALANCED_POWER_ACCURACY فراخوانی کنید. تنظیمات اولویت های مختلف ممکن است تراشه ها را متفاوت بهینه کنند .

در صورت امکان، باتری را با درخواست مکان بیش از یک بار در دقیقه با استفاده از setInterval() ذخیره کنید.

همانطور که در بخش‌های زیر توضیح داده شد، برنامه شما باید از دست دادن داده‌های موقعیت مکانی زمانی که ساعت بدون حسگر از تلفن جدا می‌شود، مدیریت کند .

روش خود را انتخاب کنید

چند راه برای ارائه داده های مکان به یک برنامه Wear OS وجود دارد. می‌توانید از ارائه‌دهنده موقعیت مکانی Fused (FLP) یا Wear Health Services (WHS) استفاده کنید. FLP یک API خدمات Google Play است.

در شرایط زیر از FLP استفاده کنید:

  • شما داده های مکان را در لحظه می خواهید اما نه به طور مداوم، مانند علامت گذاری مکان یک ماشین پارک شده.
  • شما به طور مداوم مکان را می خواهید اما به تاریخچه موقعیت مکانی نیاز ندارید.

از WHS در شرایط زیر استفاده کنید:

  • شما داده‌هایی از سنسورهای دیگر می‌خواهید یا احتمالاً در آینده داده‌هایی از سنسورهای دیگر می‌خواهید.
  • برنامه شما یک برنامه تمرینی یا ورزشی است که باید داده های مکان را در یک بازه زمانی خاص ردیابی کند.

برای ساعت‌های جفت‌شده با iPhone، به داده‌های موقعیت مکانی ساعت‌های جفت‌شده با iPhone مراجعه کنید.

از Fused Location Provider استفاده کنید

در ساعت، داده‌های مکان را با استفاده از FusedLocationProviderClient دریافت کنید. FLP ممکن است از داده های موقعیت مکانی تلفن استفاده کند. برای اطلاعات بیشتر، به ایجاد مشتری خدمات مکان مراجعه کنید.

برای اطلاعات در مورد درخواست به‌روزرسانی موقعیت مکانی و ردیابی مستمر موقعیت مکانی کاربر، به درخواست به‌روزرسانی موقعیت مکانی مراجعه کنید.

تشخیص GPS داخلی

اگر کاربری با ساعتی که فاقد حسگر GPS داخلی است و تلفن جفت شده را پشت سر بگذارد، به دویدن بپردازد، برنامه ساعت شما نمی‌تواند اطلاعات مکان را از طریق دستگاه متصل دریافت کند. این وضعیت را در برنامه خود تشخیص دهید و به کاربر هشدار دهید که قابلیت های مکان در دسترس نیست.

برای تعیین اینکه آیا ساعت دارای سنسور GPS داخلی است یا خیر، روش hasSystemFeature() را با PackageManager.FEATURE_LOCATION_GPS فراخوانی کنید.FEATURE_LOCATION_GPS. کد زیر هنگام شروع فعالیت تشخیص می دهد که آیا ساعت دارای سنسور GPS داخلی است یا خیر:

کاتلین

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)

جاوا

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 برگردانده می شود، وضعیت در دسترس بودن مکان را با استفاده از روش LocationAvailability.extractLocationAvailability(Intent) از Intent استخراج کنید.

مکان دسته پیدا نشد

هنگامی که سیگنال GPS از بین رفت، می توانید آخرین مکان شناخته شده ساعت کاربر را بازیابی کنید. بازیابی آخرین مکان شناخته شده در مواقعی که نمی توانید یک تعمیر GPS دریافت کنید و زمانی که ساعت فاقد GPS داخلی است و ارتباط خود را با تلفن قطع می کند مفید است. برای اطلاعات بیشتر، به دریافت آخرین مکان شناخته شده مراجعه کنید.

مکان را با تماس‌های دسته‌ای تطبیق دهید

اگر از تماس‌های دسته‌ای استفاده می‌کنید، هنگامی که صفحه دوباره روشن شد یا از حالت محیطی برمی‌گردد، با flushLocations() تماس بگیرید تا فوراً مکان‌های دسته‌بندی‌شده را به همه LocationListeners ، LocationCallbacks و Pending Intents ثبت‌شده بازگردانید.

{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}