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

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

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

توجه: Wear OS 3.0 دو دکمه را برای سیستم عامل ذخیره می کند، در حالی که Wear OS 2.0 فقط یک دکمه را ذخیره می کند. این تعداد دکمه‌هایی را که می‌توانید به آن‌ها اختصاص دهید کاهش می‌یابد.

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

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

فراداده دکمه

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

dependencies {
implementation "androidx.wear:wear-input:1.0.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) {
    // There are multifunction buttons available
}

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

if (buttonInfo == null) {
    // KEYCODE_STEM_1 is unavailable
} else {
    // KEYCODE_STEM_1 is present on the device
}

جاوا

int count = WearableButtons.getButtonCount(context);

if (count > 1) {
  // There are multifunction buttons available
}

WearableButtons.ButtonInfo buttonInfo =
  WearableButtons.getButtonInfo(activity, KeyEvent.KEYCODE_STEM_1);

if (buttonInfo == null) {
  // KEYCODE_STEM_1 is unavailable
} else {
  // KEYCODE_STEM_1 is present on the device
}

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

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

  • KEYCODE_STEM_1
  • KEYCODE_STEM_2
  • KEYCODE_STEM_3

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

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

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

کاتلین

// Activity
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
    return if (event.repeatCount == 0) {
        when (keyCode) {
            KeyEvent.KEYCODE_STEM_1 -> {
                // Do stuff
                true
            }
            KeyEvent.KEYCODE_STEM_2 -> {
                // Do stuff
                true
            }
            KeyEvent.KEYCODE_STEM_3 -> {
                // Do stuff
                true
            }
            else -> {
                super.onKeyDown(keyCode, event)
            }
        }
    } else {
        super.onKeyDown(keyCode, event)
    }
}

جاوا

@Override
// Activity
public boolean onKeyDown(int keyCode, KeyEvent event){
  if (event.getRepeatCount() == 0) {
    if (keyCode == KeyEvent.KEYCODE_STEM_1) {
      // Do stuff
      return true;
    } else if (keyCode == KeyEvent.KEYCODE_STEM_2) {
      // Do stuff
      return true;
    } else if (keyCode == KeyEvent.KEYCODE_STEM_3) {
      // Do stuff
      return true;
    }
  }
  return super.onKeyDown(keyCode, event);
}

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

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

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

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

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