라디오 컨트롤 구현

라디오 컨트롤 구현은 MediaSession에 기반하며 MediaBrowse: 미디어 및 음성 어시스턴트 앱에서 다음 작업을 할 수 있습니다. 라디오 제어 자세한 내용은 developer.android.com에서 자동차용 미디어 앱을 빌드하세요.

미디어 탐색 트리 구현은 car-broadcastradio-support에서 제공됩니다. packages/apps/Car/libs에 있습니다. 이 라이브러리에는 URI로 변환하거나 URI에서 변환할 ProgramSelector입니다. 라디오 구현 시에는 이 라이브러리를 사용하여 관련 탐색 트리를 빌드합니다.

미디어 소스 전환

라디오와 미디어에 표시되는 다른 앱 간에 원활하게 전환하려면 car-media-common 라이브러리에 라디오에 통합되어야 하는 클래스가 포함되어 있습니다. 있습니다. MediaAppSelectorWidget는 라디오 앱의 XML에 포함될 수 있습니다. (참조 미디어 및 라디오 앱에서 사용되는 아이콘과 드롭다운):

<com.android.car.media.common.MediaAppSelectorWidget
    android:id="@+id/app_switch_container"
    android:layout_width="@dimen/app_switch_widget_width"
    android:layout_height="wrap_content"
    android:background="@drawable/app_item_background"
    android:gravity="center" />

이 위젯은 다음을 표시하는 AppSelectionFragment를 실행합니다. 전환할 수 있는 미디어 소스의 목록입니다. 제공된 것 이외의 UI가 필요한 경우 맞춤 위젯을 만들어 AppSelectionFragment를 실행할 수 있습니다. 전환기가 표시됩니다.

AppSelectionFragment newFragment = AppSelectionFragment.create(widget,
            packageName, fullScreen);
    newFragment.show(mActivity.getSupportFragmentManager(), null);

샘플 구현은 참조 라디오 앱 구현에서 제공됩니다. packages/apps/Car/Radio에 있습니다.

세부 제어 사양

MediaSession (MediaSession.Callback를 통해) 인터페이스는 현재 재생 중인 라디오 프로그램에 대한 제어 메커니즘을 제공합니다.

  • onPlay, onStop. 라디오 재생 음소거(음소거 해제)
  • onPause. 시간 이동 시 일시중지(지원되는 경우)
  • onPlayFromMediaId. 최상위 폴더의 모든 콘텐츠 재생. 예: "FM 재생해 줘" 또는 "라디오 재생해 줘"
  • onPlayFromUri. 특정 주파수 재생. 예: "88.5 FM 틀어 줘"
  • onSkipToNext, onSkipToPrevious. 다음 또는 이전 동영상으로 맞춤 있습니다.
  • onSetRating. 즐겨찾기에 추가 또는 즐겨찾기에서 삭제

MediaBrowser는 조정 가능한 MediaItem을 정의합니다.

  • (선택사항) 프로그램(채널). 이 모드는 일반적으로 듀얼 튜너 라디오를 사용하여 사용자 위치에서 사용 가능한 모든 조정 가능한 라디오 채널을 나타냅니다.
  • 즐겨찾기. 즐겨찾기 목록에 추가된 라디오 프로그램(일부만 해당) 사용할 수 없습니다 (수신 범위 밖).
  • 대역 채널. 현재 지역에서 물리적으로 가능한 모든 채널 (87.9, 88.1, 88.3, 88.5, 88.7, 88.9, 89.1 등). 모든 대역에는 별도의 최상위 디렉터리가 있습니다.
<ph type="x-smartling-placeholder">MediaBrowserService 트리 구조</ph>
그림 2. MediaBrowserService 트리 구조
를 통해 개인정보처리방침을 정의할 수 있습니다.

이러한 각 폴더 (AM/FM/프로그램)의 각 요소는 사용할 수 있는 URI가 있는 MediaItem입니다. MediaSession과 함께 사용합니다. 각 최상위 폴더 (AM/FM/Programs)는 MediaSession과 함께 사용하여 재생을 트리거할 수 있으며 OEM의 재량에 따라 결정됩니다. 대상 예: "FM 재생해 줘" "AM 재생해 줘" 및 "라디오 재생해 줘" 는 OEM 라디오 앱에 전송할 mediaId입니다. 라디오 앱의 선택에 따라 일반 요청과 mediaId가 포함됩니다.

MediaSession

방송 스트림을 일시중지하는 개념이 없다고 가정할 때 재생, 일시중지, 중지 작업 항상 라디오에는 적용되지 않습니다. 라디오에서 중지 작업은 스트림 음소거와 관련이 있습니다. 재생은 음소거 해제와 관련이 있습니다.

일부 라디오 튜너 (또는 앱)는 콘텐츠를 캐시한 다음 나중에 재생할 수 있습니다. 이러한 경우에는 onPause를 사용합니다.

mediaId 및 URI 작업에서 재생은 채널에 맞추기 위한 것입니다. MediaBrowser 인터페이스에서 가져온 것입니다. mediaId는 임의의 문자열입니다. 라디오 앱에서 제공하여 고유한 값을 적용 (주어진 ID는 하나의 항목만 가리킴) 안정적 (주어진 항목이 전체 세션에서 동일한 ID를 가짐) 값을 가지며 특정 역을 식별합니다. URI는 잘 정의된 스키마입니다. 간단히 말해서, ProgramSelector 형식입니다. 이렇게 하면 uniquity 속성이 보존되지만 채널이 다른 주파수로 이동하면 변경될 수 있지만 안정적이어야 합니다.

의도적으로 onPlayFromSearch는 사용되지 않습니다. 고객의 책임입니다. (호환 앱)을 사용하여 MediaBrowser 트리에서 검색결과를 선택합니다. 이사 라디오 앱에 대한 책임이 복잡하게 될 것이고, 라디오를 어떻게 공급할 것인지에 대한 공식적인 계약이 문자열 쿼리가 표시되어야 하며 다른 하드웨어에서 사용자 환경이 고르지 않을 수 있습니다. 지원합니다

참고: 라디오 앱에는 클라이언트에 노출되지 않은 스테이션 이름을 검색하는 데 유용한 정보 MediaBrowser 인터페이스를 통해 액세스할 수 있습니다

다음 또는 이전 채널로 건너뛰기는 현재 컨텍스트에 따라 다릅니다.

  • 앱이 즐겨찾기 목록의 채널에 맞춰지면 즐겨찾기 목록에서 다음 채널로 이동할 수 있습니다.
  • 프로그램 목록에 있는 스테이션을 청취하면 다음 스테이션에 맞춰질 수 있습니다. 채널 번호 순으로 정렬됩니다.
  • 임의 채널을 청취하면 다음 물리적 채널에 맞출 수 있습니다. 데이터를 전송할 수 있습니다.

라디오 앱은 이러한 작업을 처리합니다.

오류 처리

TransportControls 재생, 중지, 다음 등)에 의해 실행된 작업은 성공 여부를 결정합니다. 오류를 나타내는 유일한 방법은 MediaSession을 설정하는 것입니다. 상태를 STATE_ERROR 오류 메시지가 표시됩니다.

라디오 앱은 이러한 작업을 처리하여 실행하거나 오류 상태를 설정해야 합니다. 재생 명령을 즉시 실행하지 않으면 재생 상태가 STATE_CONNECTING (직접 조정하는 경우) 또는 STATE_SKIPPING_TO_PREVIOUS 또는 NEXT 일어날 수 있습니다.

클라이언트는 PlaybackState를 시청해야 합니다. 그리고 세션이 현재 프로그램을 요청 또는 오류 상태를 반환합니다. STATE_CONNECTING은 30초를 초과할 수 없습니다. 그러나 특정 단어에 직접 맞추는 것은 AM/FM 주파수는 훨씬 빠르게 실행됩니다.

즐겨찾기 추가 및 삭제

MediaSession에는 즐겨찾기를 제어하는 데 사용할 수 있는 평가 지원 기능이 있습니다. onSetRating 유형 평점으로 호출 RATING_HEART 즐겨찾기 목록에 현재 맞춰진 채널을 추가하거나 삭제합니다.

기존 사전 설정과 달리 이 모델은 정렬되지 않고 제한되지 않은 즐겨찾기를 가정합니다. 할 수 있습니다. 따라서 사전 설정 기반 시스템은 onSetRating과(와) 호환되지 않습니다. 연산으로 해석됩니다.

MediaSession API의 한계는 현재 맞춰진 스테이션만 추가하거나 삭제할 수 있습니다. 예를 들어 항목을 먼저 선택해야 삭제할 수 있습니다 이는 다음과 같은 MediaBrowser 클라이언트의 제한사항일 뿐입니다. 확인할 수 있습니다. 라디오 앱은 이와 유사하게 제한되지 않습니다. 이 부분은 선택사항입니다. 앱에서 즐겨찾기를 지원하지 않을 때

MediaBrowser

어떤 주파수나 물리적 채널 이름을 표현하기 위해 (조정 시 지정된 무선 기술에 적합함)을 사용하는 것이 좋습니다. 모든 유효한 채널 (주파수)이 각 대역에 나열됩니다. 미국 지역에서는 87.8에서 101 사이의 FM 채널 101개에 해당합니다. 108.0MHz 범위 (0.2MHz 간격 사용) 및 530 범위의 117 AM 채널 ~1700kHz (10kHz 간격 사용) HD 라디오는 동일한 채널 공간을 사용하기 때문에 별도로 표시되지 않습니다

현재 사용 가능한 라디오 프로그램 목록은 디스플레이 스킴(예: 직접 오디오 방송(DAB) 앙상블로 그룹화)

즐겨찾기 목록의 항목은 조정이 불가능할 수 있습니다. 예를 들어 주어진 프로그램이 범위를 벗어났습니다. 라디오 앱은 이 항목이 사전에 조정할 수 있습니다 이 경우 항목을 재생 가능으로 표시하지 않을 수 있습니다.

최상위 폴더를 식별하기 위해 블루투스에서 사용하는 동일한 메커니즘이 적용됩니다. 즉, MediaDescription의 Extras 번들입니다. 객체에는 블루투스가 EXTRA_BT_FOLDER_TYPE에서처럼 튜너별 필드가 포함됩니다. 방송 라디오의 경우에는 공개 API:

  • EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE" 1개 다음 값 중 하나를 선택합니다.
    • BCRADIO_FOLDER_TYPE_PROGRAMS = 1. 현재 사용 가능한 프로그램
    • BCRADIO_FOLDER_TYPE_FAVORITES = 2. 즐겨찾기
    • BCRADIO_FOLDER_TYPE_BAND = 3. 특정 대역의 모든 실제 채널

    라디오별 커스텀 메타데이터 필드를 정의할 필요는 없습니다. 관련 데이터는 기존 MediaBrowser.MediaItem 스키마에 부합합니다.

    • 프로그램 이름 (RDS PS, DAB 서비스 이름). MediaDescription.getTitle입니다.
    • FM 주파수. URI( ProgramSelector) 또는 MediaDescription.getTitle 항목이 BROADCASTRADIO_FOLDER_TYPE_BAND 폴더에 있는 경우
    • 라디오 고유 식별자 (RDS PI, DAB SId). ProgramSelector로 파싱된 MediaDescription.getMediaUri

    일반적으로 단일 채널의 항목의 FM 주파수는 현재 프로그램 또는 즐겨찾기 목록 (클라이언트는 미디어에서 작동해야 함) 있습니다. 그러나 디스플레이 목적 등으로 인해 그러한 요구가 발생하는 경우에는 ProgramSelector로 파싱될 수 있습니다. 하지만 URI를 사용하여 현재 리소스 내에서 항목을 선택하는 것은 권장되지 않습니다. 세션입니다. 자세한 내용은 ProgramSelector

    성능 또는 바인더 관련 문제를 방지하기 위해 MediaBrowser 서비스는 페이지로 나누기를 지원해야 합니다.

    참고: 페이지로 나누기는 <ph type="x-smartling-placeholder">onLoadChildren()</ph> 옵션 처리 없이 변형할 수 있습니다.

    모든 유형의 목록 (원시 채널, 찾은 프로그램 및 미디어 ID가 다를 수 있음 (라디오 앱에 따라 다름), 지원 라이브러리에는 다르게 표시됩니다. URI (ProgramSelector 형식)는 원시 채널과 프로그램 사이의 증폭 (FM)을 제외한 대부분의 경우 RDS가 없는 경우), 찾은 프로그램과 즐겨찾기 간에는 대부분 동일합니다 (단, (예: AF가 업데이트된 경우)

    여러 목록 유형의 항목에 서로 다른 mediaId가 있으면 다른 조치를 취할 수 있습니다 즐겨찾기 목록이나 최근 폴더에 따라 onSkipToNext의 모든 프로그램 목록을 선택된 MediaItem( MediaSession)입니다.

    특별 미세 조정 작업

    프로그램 목록을 통해 사용자는 특정 채널에 맞출 수 있지만, 볼 수는 없음 "FM에 맞춰 줘"와 같은 일반적인 요청을 하면 최근의 FM 대역의 방송을 들었습니다.

    이러한 작업을 지원하기 위해 일부 최상위 디렉터리에는 FLAG_PLAYABLE 플래그 (FLAG_BROWSABLE와 함께 설정됨) )를 입력합니다.

    작업 맞춤 대상 실행 방법
    라디오 재생 모든 라디오 채널 startService(ACTION_PLAY_BROADCASTRADIO)

    또는

    playFromMediaId(MediaBrowser.getRoot())
    FM 재생 모든 FM 채널 FM 대역의 mediaId에서 재생

    어떤 프로그램에 맞출지는 앱에서 결정합니다. 이것은 일반적으로 주어진 목록에서 가장 최근에 맞추어진 채널입니다. 자세한 내용은 ACTION_PLAY_BROADCASTRADIO, 다음을 참고하세요. 일반 재생 인텐트.

    탐색 및 서비스 연결

    PackageManager는 방송 라디오를 제공하는 MediaBrowserService를 직접 찾을 수 있습니다. 있습니다. 이렇게 하려면 resolveService를 호출합니다. (ACTION_PLAY_BROADCASTRADIO 인텐트 참조) 일반 재생 인텐트) MATCH_SYSTEM_ONLY 플래그. 라디오를 제공하는 모든 서비스를 찾으려면 둘 이상일 수 있습니다. 별도의 AM/FM과 위성), queryIntentServices

    확인된 서비스는 android.media.browse.MediaBrowserService 바인드를 처리함 인텐트도 포함됩니다. GTS로 확인됩니다.

    선택한 MediaBrowserService에 연결하려면 다음을 실행합니다. 만들기 지정된 서비스 구성요소의 MediaBrowser 인스턴스 및 connect 연결을 설정한 후 다음을 통해 MediaSession 핸들을 가져올 수 있습니다. getSessionToken

    라디오 앱은 onGetRoot 서비스 구현입니다. 앱에서 시스템 앱이 연결하도록 허용해야 합니다. 만들 수 있습니다 허용 목록에 대한 자세한 내용은 다음을 참조하세요. 어시스턴트 앱 패키지 및 서명을 수락합니다.

    소스별 앱 (예: 라디오 앱)이 이러한 소스 지원이 없으면 여전히 ACTION_PLAY_BROADCASTRADIO 인텐트를 지원하지만 MediaBrowser 트리는 라디오 전용 태그가 포함되지 않아야 합니다. 따라서 클라이언트가 주어진 내용이 맞는지 소스는 기기에서 사용할 수 있으며 다음을 충족해야 합니다.

    1. 라디오 서비스를 탐색합니다 (resolveService 호출 ACTION_PLAY_BROADCASTRADIO).
    2. MediaBrowser를 만든 후 연결합니다.
    3. EXTRA_BCRADIO_FOLDER_TYPEMediaItem의 존재 확인 추가.

    참고: 대부분의 경우 클라이언트는 사용 가능한 MediaBrowser 트리를 사용하여 특정 기기에서 사용 가능한 모든 소스를 감지합니다.

    대역 이름

    대역 목록은 폴더 유형을 포함하는 일련의 최상위 디렉터리로 표현됩니다. 태그가 BCRADIO_FOLDER_TYPE_BAND로 설정됨 상대방의 MediaItem title은 밴드 이름을 나타내는 현지화된 문자열입니다. 대부분의 경우 영어 번역과 동일하지만 클라이언트는 이러한 가정에 의존할 수 없습니다.

    특정 대역을 찾기 위한 안정적인 메커니즘을 제공하기 위해 추가 태그(EXTRA_BCRADIO_BAND_NAME_EN)가 대역 폴더에 추가되었습니다. 이것은 현지화되지 않은 대역 이름으로, 사전 정의된 다음 값 중 하나만 사용할 수 있습니다.

    • AM
    • FM
    • DAB

    대역이 이 목록에 없으면 대역 이름 태그를 설정하면 안 됩니다. 그러나 대역이 목록에 있으면 태그 집합이 있어야 합니다. HD 라디오가 재생되지 않음 AM/FM과 동일한 기본 매체를 사용하므로 별도의 대역을 열거합니다.

    일반 재생 인텐트

    특정 소스 (예: 라디오 또는 CD) 재생 전용의 각 앱은 일부 콘텐츠 재생을 시작하기 위한 일반 play 인텐트 비활성 상태 (예: 부팅 후) 콘텐츠 선택 방법은 앱에 따라 다릅니다. 일반적으로 최근에 재생한 라디오 프로그램이나 CD 트랙입니다. 각 오디오 소스에 정의된 인텐트:

    • android.car.intent.action.PLAY_BROADCASTRADIO
    • android.car.intent.action.PLAY_AUDIOCD: CD-DA 또는 CD-Text
    • android.car.intent.action.PLAY_DATADISC: 광학 데이터 디스크 CD/DVD, CD-DA 아님 (혼합 모드 CD일 수 있음)
    • android.car.intent.action.PLAY_AUX: AUX 포트
    • android.car.intent.action.PLAY_BLUETOOTH
    • android.car.intent.action.PLAY_USB: USB 기기
    • android.car.intent.action.PLAY_LOCAL: 로컬 미디어 저장소 (내장 플래시)

    인텐트는 일반 재생 명령어에 사용되도록 선택되었습니다. 일반적인 재생 명령 자체와 서비스 검색이라는 두 가지 문제를 동시에 해결할 수 있습니다. 이러한 의도가 있으면 이러한 의도를 가지고 간단한 작업을 할 수 있습니다.

    서비스 검색은 실제로 이러한 기술로 해결되는 더 중요한 문제입니다. 인텐트를 지정할 수 있습니다. 서비스 검색 절차는 이와 같은 방식으로 간편하고 명확하지 않습니다( 검색 및 서비스 연결).

    일부 클라이언트 구현을 더 쉽게 하기 위해 이러한 재생 명령 (라디오 앱에 의해서도 구현되어야 함)을 발행해야 합니다. playFromMediaId 루트 노드의 rootId( mediaId). 반면 루트 노드 재생할 수 없으며 rootId는 임의의 문자열입니다. mediaId로 사용할 수 있습니다. 하지만 클라이언트가 이러한 미묘한 차이를 이해하는 것이 중요합니다

    ProgramSelector

    mediaId로 충분하며 MediaBrowserService: 세션에 바인딩되고 일관성이 없습니다. 있습니다. 어떤 경우에는 클라이언트가 절대 포인터 (예: 절대 주파수)을 사용하여 세션과 기기 간에 유지할 수 있습니다.

    디지털 라디오 방송 시대에 기본 주파수만으로는 특정 채널에 맞춰야 합니다. 따라서 ProgramSelector를 사용하여 아날로그나 디지털 채널로 연결할 수 있습니다. ProgramSelector는 두 부분으로 구성됩니다.

    • 기본 식별자. 특정 라디오의 안정적인 고유 식별자입니다. 그 방송국에 맞추기에는 충분하지 않을 수 있습니다. 예를 들어 RDS PI 코드로, 미국에서 호출 부호로 변환될 수 있습니다.
    • 보조 식별자. 조정에 유용한 추가 식별자 해당 방송국 (예: 주파수)로 전송하며, 이때 다른 채널의 식별자가 무선 기술입니다. 아날로그 방송 대체가 있을 수 있는 DAB 채널을 예로 들 수 있습니다.

    ProgramSelectorMediaBrowser에 맞도록 하려면 또는 MediaSession 기반 솔루션으로, 직렬화하도록 URI 스키마를 정의합니다. 스키마는 다음과 같이 정의됩니다.

    broadcastradio://program/<primary ID type>/<primary ID>?
    <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
    

    이 예에서 보조 식별자 부분 (물음표 (?) 뒤)은 선택사항이며 mediaId로 사용할 안정적인 식별자를 제공하기 위해 삭제할 수 있습니다. 예를 들면 다음과 같습니다.

    • broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=88500&AMFM_FREQUENCY=103300
    • broadcastradio://program/AMFM_FREQUENCY/102100
    • broadcastradio://program/DAB_SID_EXT/14895264?RDS_PI=1234

    program의 권한 부분 (일명 호스트)은 예정되어 있습니다. 식별자 유형 문자열이 정확하게 지정됨 IdentifierType의 HAL 2.x 정의에 있는 이름으로 형식은 10진수 또는 16진수 (0x 접두사 포함)입니다.

    모든 공급업체별 식별자는 VENDOR_로 표현됩니다. 를 입력합니다. 예를 들어 VENDOR_START의 경우 VENDOR_0VENDOR_START + 1에 VENDOR_1입니다. 이러한 URI는 생성된 무선 하드웨어이며 기기 간에 전송할 수 없습니다. 만들 수 있습니다.

    이러한 URI는 최상위 라디오의 각 MediaItem에 할당되어야 합니다. 폴더를 만들 수 있습니다 또한 MediaSession은 playFromMediaId를 모두 지원해야 합니다. 및 playFromUri. 그러나 URI는 주로 라디오, 메타데이터 추출 (예: FM 주파수) 및 영구 스토리지. 없음 URI를 모든 미디어 항목에 사용할 수 있음을 보장합니다 (예: 기본 아직 프레임워크에서 ID 유형을 지원하지 않음). 반면 미디어 ID는 항상 작동합니다. 클라이언트가 URI를 사용하여 현재 MediaBrowser 세션입니다. 대신 playFromMediaId를 사용하세요. 하지만 선택사항이 아니며 누락된 URI는 정당한 경우를 위해 예약됩니다.

    초기 설계에서는 :// 시퀀스 대신 단일 콜론을 사용했습니다. 를 추가합니다. 그러나 전자는 android.net.Uri: 계층적 절대 URI 참조의 경우

    기타 소스 유형

    다른 오디오 소스는 유사하게 처리할 수 있습니다. 예를 들어 보조 입력과 있습니다.

    단일 앱은 여러 유형의 소스를 제공할 수 있습니다. 이러한 경우 권장됩니다. 확인할 수 있습니다 제공된 여러 소스/MediaBrowserServices가 있는 설정에서도 단일 요청 내에 단일 MediaSession이 있는 것이 좋습니다. 있습니다.

    오디오 CD

    이러한 디스크를 제공하는 앱이 탐색 가능한 단일 항목으로 MediaBrowser를 노출 (또는 시스템에 CD 체인저)의 한 쌍입니다. 시스템에서 모든 CD의 트랙에 대한 지식이 없는 경우 (예: 모든 디스크가 삽입되어 모두 읽지는 않음) 전체 디스크의 MediaItem은 PLAYABLE이 아니라 BROWSABLE + PLAYABLE 모델에 디스크가 없는 경우 제공된 슬롯이 있는 경우 항목은 PLAYABLEBROWSABLE도 되지 않습니다. 하지만 각 슬롯은 항상 트리에 있어야 합니다.

    오디오 CD 트리 구조
    그림 3. 오디오 CD 트리 구조

    이러한 항목은 라디오 폴더를 방송하는 것과 비슷한 방식으로 표시됩니다. 있습니다. MediaDescription API에 정의된 추가 필드를 포함합니다.

    • EXTRA_CD_TRACK: 오디오 CD의 모든 MediaItem의 경우 1 기반 트랙 번호
    • EXTRA_CD_DISK: 1기반 디스크 번호

    CD-Text 지원 시스템 및 호환 디스크의 경우 최상위 MediaItem은 디스크 제목이 있어야 합니다 마찬가지로 트랙의 MediaItems에는 트랙의 제목입니다.

    보조 입력

    보조 입력을 제공하는 앱은 단일 항목 (또는 그 이상)이 있는 MediaBrowser 트리를 노출합니다. 여러 포트가 있는 경우) - AUX in 포트를 나타냅니다. 각 MediaSession은 mediaId에 도달하고 playFromMediaId 요청을 받은 후 이 소스로 전환합니다.

    AUX 트리 구조
    그림 4. AUX 트리 구조

    각 AUX MediaItem 항목에는 추가 필드가 있습니다. EXTRA_AUX_PORT_NAME을 현지화되지 않은 포트 이름으로 설정 'AUX' 버튼이 없는 있습니다. 예: 'AUX 1' '1', 'AUX'로 설정됩니다. 전면" "앞쪽"으로 'AUX' 빈 문자열로 변환합니다 영어가 아닌 언어의 경우 태그는 동일한 영어 문자열로 유지됩니다. 가능성 낮음 EXTRA_BCRADIO_BAND_NAME_EN: 값이 OEM에서 정의하며 사전 정의된 목록으로 제한됩니다.

    하드웨어가 AUX 포트에 연결된 기기를 감지할 수 있는 경우, 하드웨어는 입력이 연결된 경우에만 MediaItem을 PLAYABLE로 설정합니다. 하드웨어는 여기에 아무것도 연결되지 않은 경우 여전히 열거됩니다 (PLAYABLE은 아님). 포트 하드웨어에 이러한 기능이 없으면 MediaItem은 항상 다음과 같이 설정되어야 합니다. PLAYABLE

    추가 필드

    다음 필드를 정의합니다.

    • EXTRA_CD_TRACK = "android.media.extra.CD_TRACK"
    • EXTRA_CD_DISK = "android.media.extra.CD_DISK"
    • EXTRA_AUX_PORT_NAME = "android.media.extra.AUX_PORT_NAME"

    클라이언트는 최상위 MediaItem에서 EXTRA_CD_DISK 또는 EXTRA_AUX_PORT_NAME 추가 필드 설정합니다.

    자세한 예

    다음 예에서는 다음과 같은 소스 유형의 MediaBrowser 트리 구조를 다룹니다. 이 설계의 일부분입니다.

    방송 라디오 MediaBrowserService(ACTION_PLAY_BROADCASTRADIO 처리)

    • 채널(탐색 가능)EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
      • BBC One (재생 가능) URI: broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
      • ABC 88.1 (재생 가능) URI: broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
      • ABC 88.1 HD1 (재생 가능) URI: broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
      • ABC 88.1 HD2 (재생 가능) URI: broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
      • 90.5 FM (재생 가능) - RDS가 없는 FM URI: broadcastradio://program/AMFM_FREQUENCY/90500
      • 620 AM (재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/620
      • BBC One(재생 가능) URI: broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
    • 즐겨찾기(탐색 가능, 재생 가능) EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
      • BBC One(재생 가능) URI: broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
      • BBC Two(재생 불가) URI: broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
    • AM (탐색 가능, 재생 가능): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
      • 530 AM(재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/530
      • 540 AM(재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/540
      • 550 AM(재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/550
    • FM (탐색 가능, 재생 가능): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
      • 87.7 FM(재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/87700
      • 87.9 FM(재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/87900
      • 88.1 FM(재생 가능) URI: broadcastradio://program/AMFM_FREQUENCY/88100
    • DAB(재생 가능): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"

    오디오 CD MediaBrowserService(ACTION_PLAY_AUDIOCD 처리):

    • 디스크 1(재생 가능) EXTRA_CD_DISK=1
    • 디스크 2(탐색 가능, 재생 가능) EXTRA_CD_DISK=2
      • 트랙 1(재생 가능) EXTRA_CD_TRACK=1
      • 트랙 2(재생 가능) EXTRA_CD_TRACK=2
    • 내 음악 CD(탐색 가능, 재생 가능) EXTRA_CD_DISK=3
      • All By Myself(재생 가능) EXTRA_CD_TRACK=1
      • Reise, Reise(재생 가능) EXTRA_CD_TRACK=2
    • 빈 슬롯 4(재생 불가) EXTRA_CD_DISK=4

    AUX MediaBrowserService(ACTION_PLAY_AUX 처리)

    • AUX front(재생 가능) EXTRA_AUX_PORT_NAME="front"
    • AUX rear(재생 가능) EXTRA_AUX_PORT_NAME="rear"