ラジオの制御の実装

ラジオの制御の実装は、MediaSessionMediaBrowse: メディア アプリと音声アシスタント アプリで以下を行えます 操作できます。詳細については、次をご覧ください: developer.android.com で自動車向けメディアアプリを作成する

メディア ブラウズ ツリーの実装は、car-broadcastradio-support で提供されています packages/apps/Car/libs のライブラリ。このライブラリには、 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 にあります。

詳細な制御の仕様

MediaSessionMediaSession.Callback まで) インターフェースは、現在再生中のラジオ番組に対する制御メカニズムを提供します。

  • onPlayonStop。ラジオの再生をミュート(またはミュートを解除)します。
  • onPause。タイムシフトが有効な一時停止(サポートされる場合)。
  • onPlayFromMediaId。最上位フォルダのコンテンツをすべて再生します。例: 「FM を再生」 「ラジオを再生」と話しかけます。
  • onPlayFromUri。特定の周波数を再生します。例: 「88.5 FM を再生」。
  • onSkipToNextonSkipToPrevious。次または前を選局する あります。
  • onSetRating。お気に入りに追加またはお気に入りから削除します。

MediaBrowser は調整可能な 次の 3 種類の最上位ディレクトリを対象とする MediaItem:

  • (省略可番組(ラジオ局)。このモードは通常、 デュアル チューナー ラジオ。ユーザーの現在地で利用可能な選局可能なラジオ局をすべて示します。
  • お気に入り。[お気に入り] リストに追加されるラジオ番組( 使用不可(受信範囲外)。
  • 周波数帯チャンネル。現在の地域で獲得可能なすべてのチャンネル(87.9 (例: 88.1、88.3、88.5、88.7、88.9、89.1 など)。すべての周波数帯が、最上位のディレクトリを個別に持ちます。
MediaBrowserService のツリー構造
図 2.MediaBrowserService のツリー構造

これらの各フォルダ(AM/FM/番組)の各要素は、使用可能な URI を含む MediaItem です。 調整する必要があります各最上位フォルダ(AM/FM/番組)は、 は MediaSession とともに使用して再生をトリガーできます。これは OEM の裁量に任されています。対象 「FM を流して」「AM を流して」「ラジオを再生」特定のラジオクエリではない OEM ラジオアプリに送信する mediaId。ラジオから何を再生するかは、ラジオアプリによって 汎用リクエストと mediaId を関連付けます。

MediaSession

ブロードキャスト ストリームを一時停止するという概念はないため、再生、一時停止、停止のアクション ラジオには適用されないことがあります。ラジオでは、停止アクションがストリームのミュートに関連付けられます。 ミュートの解除と関連付けられます。

一部のラジオ チューナー(またはアプリ)では、ブロードキャスト ストリームの一時停止をシミュレートできます。 コンテンツをキャッシュに保存して後で再生することもできます。このような場合には、onPause を使用します。

mediaId および URI アクションからの再生は、ラジオ局を選局するためである MediaBrowser インターフェースから取得されます。mediaId は任意の文字列です 固有の値を設定して、各 ID が 1 つのアイテムのみを参照するようにします。 固定値(セッション全体を通して特定のアイテムが同じ ID を持ちます) 識別しますこの URI は、明確に定義されたスキーマです。要するに、URI 化された 示されます。これにより uniquity 属性は保持されますが、 安定している(ただし、周波数が変われば変わることがあります)。

設計により、onPlayFromSearch は使用されません。お客様の責任 (コンパニオン アプリ)を使用して、MediaBrowser ツリーから検索結果を選択します。引越し ラジオアプリに対する責任があると複雑さが増し 文字列クエリが表示され、異なるハードウェアでユーザー エクスペリエンスが不均一になる 説明します。

注: ラジオアプリには、 クライアントに公開されていないステーション名の検索に役立つ情報 ブラウザインタフェースからアクセスできます

前後のラジオ局へのスキップについては、そのときの状況によって処理が異なります。

  • お気に入りリストからラジオ局を選局するアプリの場合、 お気に入りリストから次のステーションに移動できます。
  • プログラム リストからラジオ局を聴くと、次のラジオ局に選局される場合があります ラジオ局がチャンネル番号で並べ替えられます。
  • 任意のチャンネルを聞くと、次の物理チャンネルに合わせて調整される場合があります。 受信できます。

これらのアクションはラジオアプリによって処理されます。

エラー処理

TransportControls アクション(再生、停止、次へ)からは、そのアクションが 評価しますエラーを示す唯一の方法は、MediaSession を設定する 状態を STATE_ERROR エラー メッセージが表示されます。

ラジオアプリは、これらのアクションを処理し、アクションを実行するか、エラー状態を設定する必要があります。 再生コマンドがすぐに実行されない場合は、再生状態を STATE_CONNECTING (直接選局している場合)または STATE_SKIPPING_TO_PREVIOUS または NEXT 実行されるようにします。

クライアントは PlaybackState を監視する必要があります。 セッションによって現在のプログラムがリクエストされたもの(または入力された)に変更されたことを 表示されます。STATE_CONNECTING は 30 秒を超えないようにする必要があります。特定の曲を直接選局して AM/FM 周波数のほうがはるかに速くなります。

お気に入りの追加、削除

MediaSession は評価機能をサポートしており、お気に入りを整理するために使用できます。onSetRating 呼び出されたときに、タイプ RATING_HEART は、現在選局されているラジオ局をお気に入りリストから追加または削除します。

このモデルでは、以前のプリセットとは異なり、順序や制限のないお気に入りを前提としています。 保存した各お気に入りが数値スロット(通常は 1 ~ 6)に割り当てられたとき。 そのため、プリセットに基づくシステムは onSetRating に対応していません あります。

MediaSession API の制限により、現在ラジオ局のみが選局している 追加または削除できます。たとえば、アイテムを最初に選択しなければ、 削除できます。これは、 使用します。ラジオアプリにも同様の制限はありません。この部分は省略可能です。 アプリが [お気に入り] に対応していない場合。

MediaBrowser

どの周波数または物理チャンネル名を表せるか(チューニング 特定の無線技術に適しているなど)が、 すべての有効なチャネル(周波数)が帯域ごとに一覧表示されます。 米国地域では、これは 87.8 から 101 の FM チャンネルに相当します。 108.0 MHz 範囲(0.2 MHz 間隔を使用)および 530 の範囲で 117 AM チャネル 1700 kHz まで帯域(10 kHz の間隔を使用)HD ラジオは同じチャンネル空間を使用するため、 個別に表示されることはありません。

現在利用可能なラジオ番組のリストはフラットで、 Direct Audio Broadcast(DAB)アンサンブルによるグループ化など、

お気に入りリストのエントリに選局できない場合があります。たとえば、特定の プログラムが範囲外です。ラジオアプリによって、エントリが 事前に調整できます検出できる場合、受信圏外のエントリについては、ラジオアプリで再生可能として表示しないこともできます。

最上位フォルダの特定には、Bluetooth と同じメカニズムが適用されます。 つまり、 MediaDescription の Extras バンドルです。 Bluetooth が 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)。 MediaDescription.getMediaUri は ProgramSelector で解析。

    通常、エントリの FM 周波数を取得する必要はありません。 (クライアントはメディア上で動作するため)現在の番組またはお気に入りリスト あります。ただし、そのようなニーズが発生した場合(表示目的など)、 URI に存在し、ProgramSelector に解析できます。 ただし、現在の URL 内のアイテムを選択するために URI を使用することはおすすめしません。 あります。詳しくは、 ProgramSelector

    パフォーマンスやバインダ関連の問題を回避するために、MediaBrowser サービスでページネーションがサポートされている必要があります。

    注: デフォルトでは、ページ分けは onLoadChildren() オプション処理なしのバリエーションです。

    あらゆる種類のリストからの関連エントリ(未加工のチャンネル、検出された番組、 お気に入りなど)に異なる mediaId がある可能性があります(ラジオアプリによって異なります。サポート ライブラリによって異なります)。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 の タイトルはバンド名を表すローカライズされた文字列です。ほとんどの場合は 英語の翻訳と同じですが、クライアントはその仮定に依存できません。

    特定の周波数帯を検索するための安定したメカニズムとして、 周波数帯フォルダ EXTRA_BCRADIO_BAND_NAME_EN にタグが追加されました。これは、 ローカライズされていない周波数帯名です。以下の事前定義の値のいずれかのみを使用できます。

    • AM
    • FM
    • DAB

    このリストにない周波数帯には、周波数帯名のタグを設定できません。 リストにある周波数帯については、タグを設定する必要があります。HD ラジオが動作しない AM/FM と同じ基盤となるメディアを使用しているため、個別の周波数帯を列挙します。

    一般的な再生インテント

    特定のソース(ラジオや CD など)の再生専用の各アプリは、 一般的な再生インテントで、コンテンツの再生を開始します。 非アクティブ状態(起動後など)に設定できます。表示するコンテンツの選択方法はアプリによって異なります。 通常は最近再生したラジオ番組または CD トラックです。 インテントが使用されます。

    • android.car.intent.action.PLAY_BROADCASTRADIO
    • android.car.intent.action.PLAY_AUDIOCD: CD-DA または CD テキスト
    • 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: ローカル メディア ストレージ (内蔵フラッシュ)

    一般的な再生コマンドにはインテントが 一般的な play コマンド自体とサービス ディスカバリの 2 つの問題が同時に発生します。 このようなインテントを持つことによるさらなる利点は、このようなインテントを実行できることにもなります。 MediaBrowser セッションを開かずに簡単な操作を実行できます。

    サービス ディスカバリは、これらのソリューションで解決されるより重要な問題です。 作成します。この方法では、サービス ディスカバリの手順が簡単で明確になります( 接続の検出およびサービスへの接続)。

    クライアントの実装を容易にするために、 再生コマンドを発行します(ラジオアプリでも実装する必要があります)。 playFromMediaId をルートノードの rootId( mediaId)。一方、 ルートノード rootId は任意の文字列です。 mediaId として消費可能にできます。ただしクライアントは、 このニュアンスを理解する必要があります

    ProgramSelector

    チャンネルを選択するには、mediaId で十分ですが、 MediaBrowserService の場合、セッションにバインドされ、整合性がとれません。 通信できます。場合によっては、クライアントが絶対ポインタ( 絶対的な頻度など)を使用して、セッションとデバイス間でキーを維持します。

    デジタルラジオ放送の時代では、単純な周波数だけでは不十分です。 特定のラジオ局を選局しますそのため、ProgramSelector を使用してチューニング アナログまたはデジタルのチャネルに 変換しますProgramSelector は次の 2 つのパートで構成されます。

    • プライマリ ID。特定の無線通信の一意で不変の識別子 そのラジオ局は変化しませんが、そのラジオ局を選局するためには不十分な場合があります。たとえば RDS PI コード(米国ではコールサインに変換されることがあります)。
    • セカンダリ ID。チューニングに役立つ追加の識別子 (周波数など)。他の機関の識別子が含まれることがあります。 開発していますたとえば、アナログ放送では DAB ラジオ局のフォールバックが起きることがあります。

    ProgramSelectorMediaBrowser に適合させるには、次のようにします。 MediaSession ベースのソリューションの場合は、URI スキーマを定義してシリアル化します。スキーマは 次のように定義されます。

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

    この例では、セカンダリ 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 の欠落は、正当な理由がある場合に予約されます。

    初期の設計では、:// シーケンスの代わりに単一のコロンを使用していた スキーマ部分の後に挿入しますただし、前者は Google Cloud の android.net.Uri: 絶対階層 URI 参照。

    他のソースタイプ

    他のオーディオ ソースも同様に処理されます。たとえば、補助入力(AUX 入力)や オーディオ CD プレーヤー。

    1 つのアプリが複数のタイプのソースを提供することもあります。このような場合 ブラウザ用に別の MediaBrowserService を作成することをおすすめします。 ソースタイプごとに確認できます複数のソース/MediaBrowserService が配信される設定でも、 単一の MediaSession 内に単一の MediaSession を持たせることを強く推奨します。 。

    オーディオ CD

    オーディオ CD と同様に、オーディオ CD を提供するアプリでは、 単一のブラウズ可能なエントリ(システムに CD チェンジャーなど)を使用して、特定の CD のすべてのトラックを含めることもできます。システムが すべての CD のトラックに関する情報がない 一度カートリッジに挿入され、その一部しか読み取られない場合) ディスク全体の MediaItem は PLAYABLE のみになり、 BROWSABLE+PLAYABLE。インスタンスにディスクが挿入されていない場合、 指定されたスロットでは、アイテムは PLAYABLE でも BROWSABLE でもない (ただし、各スロットは常にツリー内に存在する必要があります)。

    オーディオ CD のツリー構造
    図 3. オーディオ CD のツリー構造

    これらのエントリは、ラジオ放送のフォルダと同様の方法でマークされます。 次のとおりです。MediaDescription API で定義された以下の追加フィールドが含まれます。

    • EXTRA_CD_TRACK: オーディオ CD の MediaItem ごと 1 から始まるトラック番号。
    • EXTRA_CD_DISK: 1 から始まるディスク番号。

    CD-Text 対応システムと互換ディスクの場合、最上位の MediaItem は ディスクのタイトルがあります。同様に、トラックの MediaItem には トラックのタイトル。

    補助入力(AUX 入力)

    補助入力を処理するアプリは、単一エントリ(複数可)を含む MediaBrowser ツリーを公開します。 (複数のポートが存在する場合)は、ポート内の AUX を表します。それぞれの 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 前面(再生可能)EXTRA_AUX_PORT_NAME="front"
    • AUX 背面(再生可能)EXTRA_AUX_PORT_NAME="rear"