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

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

미디어 작업 수명 주기

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

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

미디어 컨트롤러 테스트 앱은 두 가지 버전으로 제공됩니다.

  • 클라이언트 앱은 기존 MediaControllerCompat를 기반으로 구현됩니다. 이렇게 하면 기존 MediaControllerCompat를 통해 외부 앱에서 액세스할 때 기존 MediaSessionCompat 또는 Media3 MediaSession 위에 빌드된 미디어 세션 앱을 테스트할 수 있습니다. GitHub에서 기존 버전의 소스 코드를 찾습니다.
  • 클라이언트 앱은 최신 Media3 MediaController를 기반으로 구현됩니다. 이렇게 하면 외부 앱이 Media3 MediaController를 통해 액세스할 때 기존 MediaSessionCompat 또는 Media3 MediaSession 위에 빌드된 미디어 세션 앱을 테스트할 수 있습니다. GitHub에서 Media3 버전의 소스 코드를 찾습니다.

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을 클릭해야 합니다.

테스트 준비 및 재생

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

제어 페이지
그림 3. 컨트롤 페이지

MCT 컨트롤 페이지 상단에는 드롭다운 메뉴가 있습니다. 이 메뉴에서 검색, URI, 미디어 ID 또는 없음을 선택할 수 있으며, 이러한 옵션 중 하나를 선택하면 검색, URI 또는 미디어 ID와 연결된 입력 데이터를 지정할 수 있는 텍스트 필드도 표시됩니다.

텍스트 필드 바로 아래에 있는 준비재생 버튼은 선택한 작업에 따라 적절한 호출 (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 뷰를 표시합니다. 이 뷰에는 표준 미디어 컨트롤러 전송 버튼이 있으며 세션의 프로그램 이미지와 데이터가 표시됩니다. 사용 중지된 전송 버튼은 주황색으로 원으로 표시됩니다. 나머지는 모두 활성 상태입니다.

전송 버튼을 사용하여 플레이어를 테스트합니다. 전송 버튼의 상태가 예상대로 변경됩니다. 예를 들어 재생 버튼을 누르면 재생 버튼이 사용 중지되고 일시중지 및 중지 버튼이 사용 설정됩니다.

다시 왼쪽으로 스와이프하면 선택적 작업이 표시된 뷰가 나타납니다. 각 작업에는 작업이 활성 상태인지 여부를 보여주는 컨트롤이 있습니다. 활성 상태인 경우 클릭하여 작업을 실행할 수 있습니다.

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

동영상 앱 수동 테스트

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

인증 테스트 실행

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

휴대전화 앱 테스트

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

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

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. 성공적인 테스트 결과

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

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

테스트 빌드

유용하다고 생각되는 더 많은 테스트가 포함된 풀 리퀘스트를 제출할 수 있습니다. 새 테스트를 빌드하는 방법을 알아보려면 MCT GitHub Wiki에서 인증 테스트 안내를 참고하세요.

참여 안내를 검토하세요.

추가 리소스

MCT는 미디어 API를 구현하는 앱과 함께 사용하도록 설계되었습니다. 이러한 앱의 예는 범용 Android 뮤직 플레이어를 참고하세요.

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