メディアを使用したラジオの実装

Radio UI は独立したアプリとして実装されます。無線 UI を無線ハードウェアに統合する方法については、 「無線の実装」を参照してください。

次のセクションでは、ラジオ UI をメディアと統合して、ユーザーが単一のアプリであるかのようにメディア ソースとラジオを操作できるシームレスなエクスペリエンスをユーザーに提供する方法について説明します。

メディアソース切り替えのユーザーフロー

次の図は、ラジオとメディアのリファレンス実装がアプリ切り替えユーザー フローを実装する方法を示しています。

メディアソース切り替えのユーザーフロー

図 1.メディア ソース切り替えのユーザー フロー

Radio と Media 内の他のアプリの間でシームレスな移行を提供するために、 car-media-commonライブラリは、メディア ソース セレクターの起動に使用できる Android インテントを定義します。 AOSP では、このセレクターはアプリ ランチャーに実装されており、アプリを起動するための同じ UI を表示しますが、メディア ソースのみを表示するようにフィルターされています。

OEM は、現在の App Launcher 実装をそのまま採用するか、カスタマイズされたメディア ソース セレクターを実装するかを選択できます。

セレクターは 2 つのモードで動作できます。

  • 通常の流れ。セレクターを使用すると、選択したソースがメディアに表示され、ユーザーはそのコンテンツを参照できるようになります。
  • スイッチとして。セレクターはソースを切り替えるために使用されますが、メディアはユーザーに表示されません。これは、ホームページのセレクター アイコンにも当てはまります。ソースを選択すると、直前の画面 (この場合はホームページ) がユーザーに表示されます。

メディア ソース間の切り替えに使用されるインテントは、 MediaSource#getSourceSelectorIntent()メソッドから取得できます。このメソッドは、上記の各フローを起動するインテントを返すpopupブール値を受け取ります。

実際のインテントpackages/apps/Car/libs/car-media-common/res/values/config.xmlで定義されています。この構成をカスタマイズするには、ビルド時のオーバーレイを使用します。

ラジオアプリを置き換える

ラジオ アプリがメディア ブラウズとメディア セッションを実装しているため、アプリ ランチャーにラジオが表示されます。ユーザーがアイコンをクリックしたときにメディアが起動しないようにするには、2 つの要素が必要です。ラジオは次のことを行う必要があります

  • ランチャーアクティビティを持っています。
  • カスタム ソースとして宣言される。これを行うには、 car-media-common/res/values/config.xmlcustom_media_packagesキーにコンポーネント名を追加します。

UXの運転制限

メディアは、UX 運転における注意散漫の制限をすべて遵守する必要があります。これを行うには、メディアはCarUXRestrictionManagerをリッスンし、そのすべてのポリシーを実装する必要があります。

  • メディアはCarライブラリに接続し、 CarUXRestrictionManagerのインスタンスを取得する必要があります。
  • メディアは、 CarUxRestrictionsのリスト内の更新をサブスクライブし、文書に従ってそれらを実装する必要があります。
  • メディアにとって特に重要なのは次のとおりです。
    • UX_RESTRICTIONS_NO_SETUP 。この場合、サインイン フローを無効にする必要があります。
    • UX_RESTRICTIONS_LIMIT_STRING_LENGTH 。メディア アプリによって提供されるエラー メッセージおよびその他のテキストは、指定された長さに制限する必要があります。