Wear의 다기능 버튼

Wear OS by Google은 전원(스템) 버튼 외에도 다기능(MF) 버튼이라는 추가적인 실제 버튼을 지원합니다. 웨어러블 지원 라이브러리는 기기에서 사용 가능한 MF 버튼에 관한 정보를 확인할 수 있는 API를 제공합니다.

이 과정에서는 기기 및 프로세스 KeyEvent 객체에서 사용 가능한 MF 버튼 관련 정보를 검색하는 방법에 관해 중점적으로 설명합니다.

다음 관련 리소스를 참조하세요.

키 이벤트 처리

앱에서 다기능 버튼 누름을 처리해야 하는 경우 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)
        }
    }
    

자바

    @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 상수에 매핑됩니다.

버튼 주요 이벤트
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_2KEYCODE_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
    }
    

자바

    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를 제공합니다.

참고: 버튼과 기능을 설명할 때 텍스트 설명어를 사용하는 대신 시각적 표시기를 사용하는 것이 좋습니다. 그러나 버튼에 관한 설명을 제공하는 것이 더 나은 경우도 있을 수 있습니다.

위의 메서드는 간단한 설명을 위한 것으로, 이러한 API가 앱의 요구사항에 맞지 않는 경우 WearableButtons.getButtonInfo() API를 사용하여 화면상의 버튼 위치를 가져와 좀 더 맞춤화된 방식으로 처리할 수도 있습니다. API에 관한 자세한 내용은 Wear API 참조를 확인하세요.