일반적으로 웨어러블 기기에는 스템이라고도 하는 실제 버튼이 여러 개 있습니다. Wear OS 기기에는 항상 버튼이 최소한 한 개(전원 버튼) 있습니다. 그 외에도 다기능 버튼이 0개 이상 있을 수 있습니다. 일부 기기에는 실제로 회전하는 측면 버튼도 있습니다.
앱이 포그라운드에 있을 때 앱에서 다기능 버튼을 작업에 할당할 수 있습니다. 예를 들어 피트니스 앱에서는 다기능 버튼을 사용하여 운동을 시작하거나 일시중지할 수 있습니다.
적절한 사용 사례와 디자인 고려사항은 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 라이브러리는 버튼의 위치를 설명하는 두 가지 메서드를 제공합니다.
WearableButtons.getButtonLabel()은 기기에 있는 버튼의 일반적인 위치를 설명하는 현지화된 문자열을 반환합니다.WearableButtons.getButtonIcon()은 기기에 있는 버튼의 일반적인 위치를 나타내는 아이콘을 반환합니다.
이러한 API가 앱의 요구사항에 맞지 않는 경우 WearableButtons.getButtonInfo() API를 사용하여 화면상의 버튼 위치를 가져와 좀 더 맞춤설정된 방식으로 이를 처리할 수도 있습니다. API에 관한 자세한 내용은 Wear API 참조를 확인하세요.