lightbulb_outline Please take our October 2018 developer survey. Start survey

多功能按钮

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

本课程重点介绍如何检索有关设备上可用 MF 按钮的信息,并处理 KeyEvent 对象。

处理键 Event

在 Android 框架中,如果应用需要处理多功能按钮按下动作,则可以通过标准按键 Event 代码实现。键代码通常与设备上的具体物理按钮一对一对应。

应用可以处理的可能按钮键代码的可用集为:KEYCODE_STEM_1KEYCODE_STEM_2KEYCODE_STEM_3。您的应用可以接收这些键代码并将其转换为特定的应用内操作。

要处理按钮按下动作,可实现 onKeyDown() 函数。

例如,此实现与一些按钮按下动作对应,以控制应用中的操作。

@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_1KEYCODE_STEM_2KEYCODE_STEM_3

以下示例代码显示如何获取可用的按钮计数:

int count = WearableButtons.getButtonCount(mContext);

if (count > 1) {
  // There are multi-function buttons available
}

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

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

确定按钮位置

穿戴式设备支持库提供两个描述按钮位置的 API:

:在描述按钮及其功能时,我们建议您避免使用文本描述符,而是使用视觉指示。不过,在某些情况下,描述按钮更有意义。

上述函数是专为简单描述设计的。如果这些 API 不能满足您的应用需求,您还可以使用 WearableButtons.getButtonInfo() API 获取屏幕上的按钮位置,并以更加个性化的方式处理它。如需了解 API 的详细信息,请参阅 Wear API 参考