TV 컨트롤러 관리

TV 기기는 앱과 상호작용하기 위해 보조 하드웨어 기기(기본 하드웨어 기기)가 게임 컨트롤러입니다. 따라서 앱이 방향 패드 (D패드) 입력을 지원해야 합니다. 또한 앱이 컨트롤러의 오프라인 전환과 둘 이상의 입력을 처리해야 할 수 있습니다. 지정할 수 있습니다.

이 가이드에서는 TV 기기용 컨트롤러 처리 요구사항을 설명합니다.

D패드 최소 컨트롤

TV 기기용 기본 컨트롤러는 D패드입니다. 일반적으로 앱은 위, 아래, 왼쪽, 오른쪽, 선택, 뒤로, 홈 버튼만 있는 리모컨입니다. 앱이 일반적으로 추가 컨트롤이 포함된 게임 컨트롤러가 필요한 게임입니다. 이러한 D패드 컨트롤로만 게임플레이를 지원하려고 시도해서는 안 됩니다. 그렇지 않은 경우 사용자에게 컨트롤러가 필요하며 D패드 컨트롤러를 사용하여 게임을 정상적으로 종료하도록 합니다.

TV 기기용 D패드 컨트롤러를 사용한 탐색에 관한 자세한 내용은 다음을 참고하세요. TV 탐색.

컨트롤러 연결 해제 처리

TV용 컨트롤러는 블루투스 기기인 경우가 많으며, 이 기기는 주기적으로 전력을 절약하려고 절전 모드로 전환되고 TV 기기와 연결이 끊깁니다. 즉, 앱이 서비스가 중단되거나 다시 시작됨(재연결 이벤트를 처리하도록 구성되지 않은 경우) 이 이벤트 다음과 같은 상황에서 발생할 수 있습니다.

  • 몇 분 길이의 동영상이 재생되는 동안 D패드 또는 게임 컨트롤러가 절전 모드로 전환되고 TV 기기와 연결을 해제했다가 나중에 다시 연결할 수 있습니다.
  • 게임플레이 중에 신규 플레이어가 다음과 같은 시점에 있는 게임 컨트롤러를 사용하여 아직 연결되지 않았습니다.
  • 게임플레이 중에 플레이어가 게임을 종료하고 게임 컨트롤러의 연결을 해제할 수 있습니다.

연결 해제 및 재연결 이벤트가 적용되는 모든 TV 앱 활동은 재연결 이벤트를 처리할 수 있습니다. 다음 코드 샘플은 활동이 키보드나 탐색 기기를 비롯한 구성 변경을 처리할 수 있게 합니다. 연결, 연결 해제 또는 다시 연결:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

이 구성 변경으로 앱은 재연결을 통해 계속 실행할 수 있습니다. 이벤트로 다시 시작하는 것이 아니라 Android 프레임워크에 의해 사용자 환경을 개선할 수 있습니다.

다양한 D패드 입력 처리

TV 기기 사용자는 TV에 사용하는 컨트롤러의 종류를 두 개 이상 사용할 수 있습니다. 대상 사용자가 기본 D패드 컨트롤러와 게임 컨트롤러를 모두 가지고 있을 수 있습니다. 키 코드 게임 컨트롤러가 D패드 기능용으로 사용할 때 제공하는 값은 기본 D-패드에서 전송하는 코드가 생성됩니다.

사용자가 다음과 같이 하지 않도록 D패드 입력의 다양한 입력 처리 컨트롤러를 전환해야 하는 상황입니다. 처리 방법에 대한 자세한 내용은 입력 변형입니다. 페이지를 참조하세요. 방향 패드 입력 처리.

버튼 이벤트 처리

사용자가 컨트롤러의 버튼을 클릭하면 앱이 KeyEvent 의도된 버튼의 동작은 재생, 일시중지 또는 중지와 같은 미디어 이벤트이거나 선택할 수 있습니다. 우수한 사용자 환경을 제공하려면 동작에 영향을 줄 수 있습니다.

TV UI 이벤트

KeyEvent를 생성하는 버튼에 TV UI 동작을 할당합니다. 유형을 선택해야 합니다.

KeyEvent동작
KEYCODE_BACK KEYCODE_BUTTON_B뒤로
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER KEYCODE_NUMPAD_ENTERKEYCODE_DPAD_CENTER선택
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHT탐색

미디어 이벤트

사용자가 미디어를 시청할 때 광고를 생성하는 버튼에 동작을 할당합니다. KeyEvent 유형을 사용해야 합니다. 앱에서 MediaSession님, MediaControllerAdapter 사용 MediaControllerCompat.TransportControls 중 하나를 호출 메서드를 참조하세요. 선택 버튼은 재생 또는 일시중지와 같은 역할을 합니다. 버튼을 사용할 수 있습니다.

KeyEventTransportControls 호출동작
BUTTON_SELECT, BUTTON_A, ENTER KEYCODE_NUMPAD_ENTERDPAD_CENTER play()재생
BUTTON_START, BUTTON_SELECT, BUTTON_A ENTER님, DPAD_CENTER님, KEYCODE_NUMPAD_ENTER pause()일시중지
BUTTON_R1skipToNext()다음으로 건너뛰기
BUTTON_L1skipToPrevious()이전으로 건너뛰기
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER AXIS_THROTTLEfastForward()빨리 감기
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER AXIS_BRAKErewind()뒤로 이동
해당 사항 없음stop()중지

참고: MediaSession를 사용할 때는 미디어별 버튼(예: KEYCODE_MEDIA_PLAY 또는 KEYCODE_MEDIA_PAUSE입니다. 시스템에서 자동으로 적절한 MediaSession.Callback 드림 메서드를 사용하여 축소하도록 요청합니다.

적절한 뒤로 버튼 동작 제공

뒤로 버튼은 전환 버튼으로 작동해서는 안 됩니다. 예를 들어, Google 크롬 창을 열고 닫을 때 선택합니다. 뒤로 탐색, 탐색경로 스타일, 플레이어의 이전 화면에서만 사용할 수 있습니다. 표시됩니다.

뒤로 버튼은 선형 뒤로 탐색만 실행하므로 다른 버튼으로 인앱 메뉴를 연 다음 앱으로 돌아갈 수 있습니다. 뒤로 버튼을 연속으로 누르면 항상 Android TV 홈 화면으로 연결되어야 합니다. 예: 게임 플레이 > 게임 일시중지 화면 > 게임 메인 화면 > Android TV 홈 화면 또는 TV 프로그램 재생 > TV 앱 기본 화면 > Android TV 홈 화면

탐색 디자인에 대한 자세한 내용은 을(를) 참조하세요. 뒤로 및 위로 탐색 기능 디자인을 참조하세요. 구현에 대한 자세한 내용은 다음을 참조하세요. 적절한 뒤로 탐색 기능 제공.

게임 컨트롤러 처리

D패드 컨트롤 지원

D패드 컨트롤을 중심으로 컨트롤 스킴을 계획하세요. 이 컨트롤 세트가 Android TV 기기의 기본 설정입니다. 플레이어는 기기의 모든 측면에 D패드를 사용할 수 있어야 함 핵심 게임플레이 제어뿐만 아니라 메뉴와 광고 탐색도 지원합니다. 따라서 Android TV 게임이 "계속하려면 여기를 하세요."

플레이어와 컨트롤러의 상호작용을 어떻게 구성하는지가 우수한 사용자를 달성하는 데 핵심적인 역할을 할 수 있습니다. 경험해 볼 수 있습니다 다음 권장사항을 고려해 보세요.

  • 컨트롤러 요구사항 미리 전달: Google Play 설명을 사용합니다. 플레이어에게 컨트롤러에 대한 기대치를 전달할 수 있어야 합니다. 게임에 더 적합하다면 D패드만 있는 게임패드보다 조이스틱이 있는 게임패드의 경우 이 점을 명확히 밝힙니다. 플레이어 게임을 하기에 적합하지 않은 컨트롤러는 사용자 경험이 저하되고 부정적인 평가로 작용할 수 있습니다.
  • 일관된 버튼 매핑 사용: 직관적인 버튼 매핑이 핵심입니다. 좋은 사용자 경험을 제공하는 방법을 알아보겠습니다 예를 들어 A 버튼을 사용하여 허용되는 관습을 준수합니다. 수락으로, B 버튼을 취소로 전환할 수 있습니다. 또한 유연하고 확장 가능한 재매핑 가능성의 형태로 제공됩니다 버튼 매핑에 대한 자세한 내용은 핸들 컨트롤러 작업을 참조하세요.
  • 컨트롤러 기능을 감지하고 적절하게 조정:컨트롤러를 쿼리합니다. 을 공개했습니다. 예를 들어 플레이어가 컨트롤러를 공중에서 흔들어 물체를 조종하도록 할 수 있습니다. 하지만 플레이어의 컨트롤러에 가속도계와 자이로스코프 하드웨어가 없어서 흔들기가 작동하지 않습니다. 컨트롤러를 쿼리하고 움직임이 감지되지 않는 경우 사용 가능한 대체 제어 스키마로 전환합니다. 자세한 내용은 자세한 내용은 지원 및 컨트롤러입니다.

적절한 버튼 사용

일부 게임 컨트롤러는 시작, 검색 또는 메뉴 버튼을 제공하지 않습니다. UI가 종속되지 않는지 확인 자세히 알아보겠습니다.

여러 컨트롤러 처리

여러 플레이어가 각자의 컨트롤러를 가지고 게임을 하는 경우 각 플레이어-컨트롤러 쌍을 매핑합니다. 컨트롤러 번호(Controller-number) 구현 방법에 대한 자세한 내용은 자세한 내용은 페이지를 참조하세요. getControllerNumber()

컨트롤러 연결 해제 처리

게임플레이 도중에 컨트롤러의 연결이 끊어지면 게임을 일시중지하고 연결 해제된 플레이어에 컨트롤러를 다시 연결하라는 대화상자입니다.

또한 대화상자에서 문제 해결 팁을 제공합니다. 예를 들어 '블루투스 연결 확인'으로 이동합니다. 입력 기기 구현에 관한 자세한 내용은 자세한 내용은 컨트롤러 처리 작업블루투스 개요.

컨트롤러 안내 표시

게임에서 시각적 게임 컨트롤 안내를 제공하는 경우 컨트롤러 이미지에는 브랜딩이 없고 Android와 호환되는 버튼만 포함되어야 합니다.

Android 호환 컨트롤러의 샘플 이미지를 보려면 Android TV 게임패드 템플릿 (ZIP). 검은색 배경에 흰색 컨트롤러가 있고 흰색 바탕에 검은색 컨트롤러가 있습니다. PNG 파일 및 Adobe® Illustrator® 파일로 저장할 수 있습니다.

그림 1. Android TV 게임패드 템플릿