일반적으로 웨어러블 기기에는 스템이라고도 하는 실제 버튼이 여러 개 있습니다. 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 }
자바
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) } }
자바
@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 라이브러리는 버튼의 위치를 설명하는 두 가지 메서드를 제공합니다.
-
WearableButtons.getButtonLabel()
: 기기에 있는 버튼의 일반적인 위치를 설명하는 현지화된 문자열을 반환합니다. -
WearableButtons.getButtonIcon()
: 기기에 있는 버튼의 일반적인 위치를 나타내는 아이콘을 반환합니다.
참고: 버튼과 그 기능을 설명할 때 텍스트 설명자를 사용하지 않는 것이 좋습니다. 대신 시각적 표시기를 사용하세요. 그러나 버튼에 관한 설명을 제공하는 것이 더 나은 경우도 있을 수 있습니다.
위의 메서드는 간단한 설명을 위한 것으로, 이러한 API가 앱의 요구사항에 맞지 않는 경우 WearableButtons.getButtonInfo()
API를 사용하여 화면상의 버튼 위치를 가져와 좀 더 맞춤설정된 방식으로 이를 처리할 수도 있습니다. API에 관한 자세한 내용은 Wear API 참조를 확인하세요.