미디어 컨트롤러 테스트 앱 사용

Android 휴대전화, 자동차, TV, 헤드폰에서 Google 어시스턴트와 음성으로 상호작용하는 미디어 앱은 Android 미디어 세션 API를 기반으로 하며 미디어 작업을 사용합니다. 미디어 작업 수명 주기는 따라가기가 어려울 수 있습니다. 검색 요청에서 간단한 재생 경우에도 단순화된 타임라인과 같이 문제가 발생할 수 있는 여러 중간 단계가 있습니다.

미디어 작업 수명 주기

그림 1. 미디어 작업 수명 주기

미디어 컨트롤러 테스트 (MCT) 앱을 사용하면 Android에서 미디어 재생의 복잡한 문제를 테스트하고 미디어 세션 구현을 확인할 수 있습니다.

MCT는 PlaybackState 및 메타데이터와 같은 앱의 MediaController에 관한 정보를 표시하며 앱 간 미디어 컨트롤을 테스트하는 데 사용할 수 있습니다. MCT에는 QA 테스트를 자동화할 수 있는 인증 테스트 프레임워크도 포함되어 있습니다.

MCT를 사용하려면 앱에 미디어 브라우저 서비스가 있어야 하며 MCT가 서비스에 연결하도록 허용해야 합니다. 자세한 내용은 미디어 브라우저 서비스 빌드를 참고하세요.

MCT 시작

MCT 시작 페이지
그림 2. MCT 시작 페이지

MCT를 실행하면 다음 두 가지 목록이 표시됩니다.

  • Active MediaSessions - 처음에는 MCT를 시작할 때 이 목록이 비어 있으며 'No media apps found. 활성 미디어 세션을 검색하려면 알림 리스너 권한이 필요합니다." 설정을 클릭하여 권한 화면으로 이동하고 MCT의 권한을 사용 설정합니다.
  • MediaBrowserService 구현 - 이 목록은 미디어 브라우저 서비스를 구현한 앱을 보여줍니다. 미디어 브라우저 서비스를 구현한 경우 앱이 이 목록에 표시되지만 앱이 모든 연결을 수락하거나 MCT를 허용 목록에 추가한 경우에만 MCT를 사용할 수 있습니다. 자세한 내용은 onGetRoot()로 클라이언트 연결 제어를 참고하세요.

수동으로 전화 앱 테스트

MCT가 앱의 미디어 브라우저 서비스에 연결하도록 허용한 경우 앱이 미디어 브라우저 서비스 목록 구현 목록에 표시됩니다. 이 콘솔에서 Control을 클릭하여 백그라운드에서 앱을 시작합니다.

그렇지 않으면 먼저 백그라운드에서 앱을 직접 시작한 다음 활성 미디어 세션 목록에 표시되면 Control을 클릭해야 합니다.

테스트 준비 및 플레이

MCT가 앱 제어를 시작하면 앱의 현재 세션 메타데이터(현재 선택된 미디어 및 세션에서 처리할 준비가 된 작업)가 표시됩니다.

제어 페이지
그림 3. 관리 페이지

MCT 컨트롤 페이지 상단에는 검색, URI, 미디어 ID 또는 없음을 선택할 수 있는 드롭다운 메뉴와 함께 검색, URI 또는 미디어 ID와 연결된 입력 데이터를 지정하는 텍스트 필드가 포함되어 있습니다(이러한 옵션 중 하나를 선택하는 경우).

텍스트 필드 바로 아래에 있는 PreparePlay 버튼은 선택한 작업에 따라 적절한 호출 (onPrepare(), onPrepareFromSearch(), onPrepareFromUri(), onPrepareFromMediaId(), onPlay(), onPlayFromSearch(), onPlayFromUri(),onPlayFromMediaId())을 실행합니다.

오디오 포커스 테스트

제대로 작동하는 미디어 앱은 오디오 포커스를 처리할 수 있어야 합니다. 앱과 함께 다른 오디오 앱을 실행하여 오디오 포커스를 테스트할 수 있습니다. MCT 컨트롤 페이지에는 오디오 포커스를 요청하고 해제하는 버튼이 있습니다.

오디오 포커스를 테스트하려면 다음 단계를 따르세요.

  1. 오디오 포커스 드롭다운 메뉴를 사용하여 세 가지 길이 힌트, AUDIOFOCUS_GAIN, AUDIOFOCUS_GAIN_TRANSIENT, AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 중 하나를 선택합니다.
  2. 포커스를 요청하려면 버튼을 누르세요.
  3. 버튼을 다시 누르면 포커스가 해제됩니다.

전송 컨트롤 테스트

전송 제어 테스트
그림 4. 전송 제어 테스트

왼쪽으로 스와이프하여 MCT의 UI 뷰를 표시합니다. 이 뷰에는 표준 미디어 컨트롤러 전송 버튼이 있으며 세션의 프로그램 이미지와 데이터가 표시됩니다. 사용 중지된 전송 버튼에는 주황색 원이 표시됩니다. 나머지는 모두 활성 상태입니다.

전송 버튼을 사용하여 플레이어를 테스트하세요. 전송 버튼의 상태는 예상대로 변경되어야 합니다. 예를 들어 PLAY 버튼을 누르면 버튼이 사용 중지되고 PAUSE 버튼과 STOP 버튼이 사용 설정됩니다.

선택적 작업을 표시하는 보기를 보려면 다시 왼쪽으로 스와이프합니다. 각 작업에는 활성 상태인지 여부를 표시하는 컨트롤이 있습니다. 활성 상태이면 클릭하여 작업을 실행할 수 있습니다.

미디어 브라우저 서비스가 있는 앱 목록에서 연결한 경우 왼쪽으로 두 번 더 스와이프하여 앱의 콘텐츠 계층 구조를 위아래로 이동하거나 콘텐츠 트리를 검색할 수 있는 뷰를 볼 수 있습니다.

수동으로 동영상 앱 테스트

화면 분할 모드를 사용하여 동영상 앱 컨트롤러를 테스트합니다. 먼저 동영상 앱을 하나의 창에서 연 다음 화면 분할 모드에서 MCT를 엽니다.

인증 테스트 실행

검증 테스트 프레임워크는 미디어 앱이 재생 요청에 올바르게 응답하는지 확인하기 위해 실행할 수 있는 원클릭 테스트를 제공합니다.

전화 앱 테스트

테스트 버튼
그림 5. 테스트 버튼

인증 테스트에 액세스하려면 미디어 앱 옆에 있는 Test 버튼을 클릭합니다.

MCT 상태

미디어 제어 상태
그림 6. 미디어 제어 상태

다음 뷰에는 MCT의 MediaController(예: PlaybackState, 메타데이터, 큐) 정보가 자세히 표시됩니다. 툴바의 오른쪽 상단에 두 개의 버튼이 있습니다. 왼쪽 버튼은 파싱 가능한 로그와 형식이 지정된 로그 간에 전환합니다. 오른쪽 버튼을 사용하면 뷰가 새로고침되어 최신 정보가 표시됩니다.

테스트 선택

테스트 선택 페이지
그림 7. 테스트 선택 페이지

왼쪽으로 스와이프하면 인증 테스트 뷰가 표시되며, 스크롤 가능한 사용 가능한 테스트 목록을 볼 수 있습니다. 테스트에서 쿼리를 사용하는 경우(그림 7의 검색 테스트에서 재생) 쿼리 문자열을 입력할 수 있는 텍스트 필드가 있습니다.

MCT에는 다음 미디어 작업 테스트가 포함되어 있으며 더 많은 테스트가 계속해서 프로젝트에 추가됩니다.

  • 재생
  • Play From Search
  • Play From Media ID
  • Play From URI
  • 일시중지
  • 중지
  • Skip To Next
  • Skip To Previous
  • Skip To Queue Item
  • Seek To

테스트 결과

성공적인 테스트 결과
그림 8. 성공적인 테스트 결과

처음에는 뷰 하단의 결과 영역이 비어 있습니다. 테스트 실행 시 결과가 표시됩니다. 예를 들어 검색 시 재생 테스트를 실행하려면 텍스트 필드에 검색어를 입력하고 Run Test를 클릭합니다. 다음 스크린샷은 성공적인 테스트 결과를 보여줍니다.

Android TV 앱 테스트

Android TV에서 MCT를 실행하면 설치된 미디어 앱 목록이 표시됩니다. 앱은 미디어 브라우저 서비스를 구현하는 경우에만 이 목록에 표시됩니다.

TV의 MCT 출시 페이지

그림 9. TV의 MCT 출시 페이지

앱을 선택하면 테스트 화면으로 이동하며, 이 화면에는 오른쪽에 인증 테스트 목록이 표시됩니다.

TV의 인증 테스트 페이지

그림 10. TV의 인증 테스트 페이지

테스트를 실행하면 화면 왼쪽에 선택한 MediaController에 관한 정보가 표시됩니다. 자세한 내용은 Logcat에서 MCT 로그를 확인하세요.

TV의 테스트 정보 페이지

그림 11. TV의 테스트 정보 페이지

쿼리가 필요한 테스트는 키보드 아이콘과 함께 표시됩니다. 이러한 테스트 중 하나를 클릭하면 쿼리 입력란이 열립니다. Enter를 클릭하여 테스트를 실행합니다.

텍스트를 더 쉽게 입력할 수 있도록 adb 명령어를 사용할 수도 있습니다.

adb shell input text your-query

단어 사이에 공백을 추가하려면 '%s'를 사용합니다. 예를 들어 다음 명령어는 입력란에 'hello world' 텍스트를 추가합니다.

adb shell input text hello%sworld

테스트 빌드

유용하다고 생각되는 더 많은 테스트로 pull 요청을 제출할 수 있습니다. 새로운 테스트를 빌드하는 방법을 알아보려면 MCT GitHub 위키를 방문하여 인증 테스트 안내를 참고하세요.

참여 안내를 검토하시기 바랍니다.

추가 리소스

MCT는 미디어 API를 구현하는 앱과 함께 사용하기 위한 것입니다. 이러한 앱의 예는 범용 Android 뮤직 플레이어를 참고하세요.

버그 수정 및 개선은 언제든지 환영합니다. 참여 안내를 참고하세요.