دکمه های فیزیکی

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

در برنامه‌تان، می‌توانید دکمه‌های چند منظوره را به کنش‌هایی که برنامه‌تان در پیش‌زمینه است اختصاص دهید. برای مثال، یک برنامه تناسب اندام ممکن است با استفاده از دکمه های چند منظوره، تمرین را شروع یا متوقف کند:

ساعتی با چند دکمه کناری. سیستم یکی از دکمه ها را به عنوان دکمه چند منظوره تعیین می کند.
شکل 1. برنامه تناسب اندام Wear OS که دکمه های چند منظوره را نشان می دهد.

برای موارد استفاده مناسب و ملاحظات طراحی، به اصول طراحی Wear OS مراجعه کنید.

این سند نحوه بازیابی اطلاعات مربوط به دکمه‌های چند منظوره موجود در دستگاه و نحوه پردازش فشار دادن دکمه‌ها را شرح می‌دهد.

فراداده دکمه

برای دریافت اطلاعات اضافی درباره دکمه‌های دستگاه، از API تعریف‌شده در کتابخانه Wear Input AndroidX استفاده کنید. وابستگی زیر را در فایل build.gradle ماژول برنامه خود اضافه کنید:

dependencies {
implementation "androidx.wear:wear-input:1.2.0"
}

تعداد دکمه ها

تعیین تعداد دکمه های موجود در دستگاه، از روش WearableButtons.getButtonCount() استفاده کنید. این روش شامل دکمه پاور است، بنابراین اگر روش مقداری بیشتر از یک را برگرداند، دکمه‌های چند منظوره برای استفاده در دسترس هستند. برای به دست آوردن تعداد دقیق دکمه های چند منظوره قابل تخصیص، یک عدد از تعداد کم کنید، زیرا اولین دکمه همیشه دکمه پاور است.

کدهای کلید برای فشار دادن دکمه ها

همانطور که در جدول زیر نشان داده شده است، هر دکمه به یک ثابت int از کلاس KeyEvent نگاشت می شود:

دکمه رویداد کلیدی
دکمه چند منظوره 1 KEYCODE_STEM_1
دکمه چند منظوره 2 KEYCODE_STEM_2
دکمه چند منظوره 3 KEYCODE_STEM_3

کد مثال زیر نحوه دریافت تعداد دکمه های موجود را نشان می دهد:

val count = WearableButtons.getButtonCount(context)

if (count > 1) {
    Log.d(TAG, "More than one button available")
}

val buttonInfo = WearableButtons.getButtonInfo(
    activity,
    KeyEvent.KEYCODE_STEM_1
)

if (buttonInfo == null) {
    // KEYCODE_STEM_1 is unavailable
    Log.d(TAG, "KEYCODE_STEM_1 not available")
} else {
    // KEYCODE_STEM_1 is present on the device
    Log.d(TAG, "KEYCODE_STEM_1 is present on the device")
}

دسته فشار دکمه

تعدادی از کلیدهای دکمه ممکن وجود دارد که برنامه شما می تواند آنها را مدیریت کند:

  • KEYCODE_STEM_1 .
  • KEYCODE_STEM_2 .

برنامه شما می تواند این کدهای کلیدی را دریافت کرده و آنها را به کنش های درون برنامه ای خاص تبدیل کند.

برای مدیریت یک دکمه، متد onKeyDown() را پیاده سازی کنید.

به عنوان مثال، این پیاده سازی به فشار دادن دکمه برای کنترل اقدامات در یک برنامه پاسخ می دهد:

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    return if (event?.repeatCount == 0) {
        when (keyCode) {
            KeyEvent.KEYCODE_STEM_1 -> {
                Log.d(TAG, "KEYCODE_STEM_1 pressed")
                true
            }
            KeyEvent.KEYCODE_STEM_2 -> {
                Log.d(TAG, "KEYCODE_STEM_2 pressed")
                true
            }
            else -> {
                super.onKeyDown(keyCode, event)
            }
        }
    } else {
        super.onKeyDown(keyCode, event)
    }
}

موقعیت دکمه ها را تعیین کنید

کتابخانه AndroidX دو روش برای توصیف مکان یک دکمه ارائه می دهد:

  • WearableButtons.getButtonLabel() یک رشته محلی را برمی گرداند که محل کلی دکمه را بر روی دستگاه توصیف می کند.
  • WearableButtons.getButtonIcon() نمادی را نشان می دهد که نشان دهنده قرارگیری کلی دکمه روی دستگاه است.

اگر این APIها با نیازهای برنامه شما مطابقت ندارند، می توانید از WearableButtons.getButtonInfo() API نیز استفاده کنید تا مکان دکمه روی صفحه را دریافت کنید و آن را به روشی سفارشی تر مدیریت کنید. برای اطلاعات بیشتر در مورد APIها، به مرجع Wear API مراجعه کنید.