除电源(表把)按钮外,Wear OS by Google 谷歌还支持额外的物理按钮,称为多功能 (MF) 按钮。穿戴式设备支持库提供了 API 来确定有关设备上可用 MF 按钮的信息。

本节课重点介绍如何检索有关设备上可用 MF 按钮的信息,以及如何处理 KeyEvent
对象。
请参阅以下相关资源:
处理按键事件
如果您的应用需要处理多功能按钮按下动作,可通过 Android 框架中的标准按键事件代码来实现。键码通常与设备上的各个物理按钮一一对应。
您的应用可以处理的一组可能的按钮键码是 KEYCODE_STEM_1
、KEYCODE_STEM_2
和 KEYCODE_STEM_3
。您的应用可以接收这些键码,并将其转换为特定的应用内操作。
要处理按钮按下动作,请实现 onKeyDown()
方法。
例如,以下实现可响应某个按钮按下动作,以控制应用中的操作:
Kotlin
// 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) } }
Java
@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); }
查找可用按钮
要查找哪些按钮可供使用,您可以使用穿戴式设备支持库中可用的 WearableButtons.getButtonInfo()
和 WearableButtons.getButtonCount()
方法。要查找是否有可用的辅助按钮,一种简单的方法是检查 WearableButtons.getButtonCount()
的返回值。如果该值大于 1,就表示有可用的多功能按钮。
按钮按下动作的键码
每个按钮将被映射到 KeyEvent
类中的一个 int
常量,如下表所示:
按钮 | KeyEvent |
---|---|
MF 按钮 1 | KEYCODE_STEM_1 |
MF 按钮 2 | KEYCODE_STEM_2 |
MF 按钮 3 | KEYCODE_STEM_3 |
- 如果设备只有一个 MF 按钮,则它始终映射到
KEYCODE_STEM_1
。 - 如果设备有两个 MF 按钮,则它们将始终映射到
KEYCODE_STEM_1
和KEYCODE_STEM_2
。 - 如果设备有三个 MF 按钮,则它们始终映射到
KEYCODE_STEM_1
、KEYCODE_STEM_2
和KEYCODE_STEM_3
。
以下示例代码展示了如何获取可用的按钮计数:
Kotlin
val count = WearableButtons.getButtonCount(context) if (count > 1) { // There are multi-function 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 }
Java
int count = WearableButtons.getButtonCount(context); if (count > 1) { // There are multi-function 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 }
确定按钮位置
穿戴式设备支持库提供了两个用来描述按钮位置的 API:
WearableButtons.getButtonLabel()
:返回一个本地化字符串,其描述设备上按钮的常规位置。WearableButtons.getButtonIcon()
:返回一个图标,其表示设备上按钮的常规位置。
注意:在描述按钮及其功能时,我们建议您避免使用文本描述符,而应使用视觉指示符。不过,在某些情况下,可能描述按钮更有意义。
上述方法专为简单的描述而设计。如果这些 API 不符合您的应用需求,您还可以使用 WearableButtons.getButtonInfo()
API 获取按钮在屏幕上的位置,并以更加个性化的方式对其进行处理。如需详细了解这些 API,请参阅 Wear API 参考文档。