실제 버튼

일반적으로 웨어러블 기기에는 스템이라고도 하는 실제 버튼이 여러 개 있습니다. Wear OS 기기에는 항상 버튼이 최소한 한 개(전원 버튼) 있습니다. 그 외에도 다기능 버튼이 0개 이상 있을 수 있습니다.

앱에서 다기능 버튼을 작업에 할당할 수 있습니다. 예를 들어 피트니스 앱에서는 다기능 버튼을 사용하여 운동을 시작하거나 일시중지할 수 있습니다.

참고: Wear OS 3.0에는 OS용 버튼이 두 개 있지만 Wear OS 2.0에는 버튼이 하나만 있습니다. 따라서 작업을 할당할 수 있는 버튼 수가 줄어듭니다.

적절한 사용 사례와 디자인 고려사항은 Wear OS 디자인 원칙을 참고하세요.

이 가이드에서는 기기에서 사용 가능한 다기능 버튼에 관한 정보를 검색하는 방법과 버튼 누르기를 처리하는 방법을 설명합니다.

버튼 메타데이터

기기에서 버튼에 관한 추가 정보를 가져오려면 Wear 입력 AndroidX 라이브러리에 정의된 API를 사용하세요. 앱 모듈의 build.gradle 파일에 다음 종속 항목을 추가합니다.

dependencies {
implementation "androidx.wear:wear-input:1.0.0"
}

버튼 수

기기에서 사용 가능한 버튼 수를 확인하려면 WearableButtons.getButtonCount() 메서드를 사용하세요. 이 메서드에는 전원 버튼이 포함되어 있으므로 메서드에서 1보다 큰 값을 반환하면 사용할 수 있는 다기능 버튼이 있는 것입니다. 할당 가능한 다기능 버튼의 정확한 개수를 가져오려면 개수에서 1을 빼세요. 첫 번째 버튼은 항상 전원 버튼이기 때문입니다.

버튼 누르기의 키 코드

각 버튼은 다음 표와 같이 KeyEvent 클래스의 int 상수에 매핑됩니다.

버튼 키 이벤트
다기능 버튼 1 KEYCODE_STEM_1
다기능 버튼 2 KEYCODE_STEM_2
다기능 버튼 3 KEYCODE_STEM_3

다음 코드 예는 사용 가능한 버튼 수를 확인하는 방법을 보여줍니다.

Kotlin

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
}

Java

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() 메서드를 구현합니다.

예를 들어 다음 구현은 버튼 누르기에 응답하여 앱의 작업을 제어합니다.

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);
}

버튼 위치 확인

AndroidX 라이브러리는 버튼의 위치를 설명하는 두 가지 메서드를 제공합니다.

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

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