Носимое устройство обычно оснащено несколькими физическими кнопками, также называемыми «ножками» . Устройства Wear OS всегда имеют как минимум одну кнопку: кнопку питания. Помимо этого, может быть несколько многофункциональных кнопок. Некоторые устройства также оснащены вращающейся боковой кнопкой .
В вашем приложении вы можете назначить многофункциональные кнопки для действий, выполняемых при работе приложения в фоновом режиме. Например, фитнес-приложение может запускать или приостанавливать тренировку с помощью многофункциональных кнопок:

Подходящие варианты использования и рекомендации по проектированию см. в принципах проектирования Wear OS .
В этом документе описывается, как получить информацию о доступных многофункциональных кнопках на устройстве и как обрабатывать нажатия кнопок.
Метаданные кнопки
Чтобы получить дополнительную информацию о кнопках устройства, используйте API, определённый в библиотеке Wear Input AndroidX. Добавьте следующую зависимость в файл build.gradle
модуля вашего приложения:
dependencies {
implementation "androidx.wear:wear-input:1.2.0"
}
Количество кнопок
Чтобы определить количество доступных кнопок на устройстве, используйте метод WearableButtons.getButtonCount()
. Этот метод учитывает кнопку питания, поэтому, если метод возвращает значение больше единицы, то доступны многофункциональные кнопки. Чтобы получить точное количество назначаемых многофункциональных кнопок, вычтите единицу из полученного значения, поскольку первой кнопкой всегда является кнопка питания.
Коды клавиш для нажатия кнопок
Каждая кнопка сопоставляется с константой int
из класса KeyEvent
, как показано в следующей таблице:
Кнопка | 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 не подходят для вашего приложения, вы также можете использовать API WearableButtons.getButtonInfo()
чтобы получить местоположение кнопки на экране и настроить её более индивидуально. Подробнее об этих API см. в справочнике по API Wear .