실제 버튼

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

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

측면 버튼이 여러 개인 시계 시스템은 버튼 중 하나를 다기능 버튼으로 지정합니다.
그림 1. 다기능 버튼이 표시된 Wear OS 피트니스 앱

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

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

버튼 메타데이터

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

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

버튼 수

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

버튼 누르기의 키 코드

각 버튼은 다음 표에 나와 있는 것처럼 KeyEvent 클래스의 int 상수에 매핑됩니다.

버튼 키 이벤트
다기능 버튼 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 라이브러리는 버튼의 위치를 설명하는 두 가지 메서드를 제공합니다.

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