ラジオ UI は独立したアプリとして実装されます。ラジオ UI をラジオ ハードウェアに統合する手順については、ラジオの実装をご覧ください。
次のセクションでは、ラジオ UI をメディアと統合して、メディアソースとラジオを単一のアプリのように操作できるシームレスなユーザー エクスペリエンスを実現する方法について説明します。
メディアソース切り替えユーザーフロー
次の図は、ラジオとメディアのリファレンス実装によってアプリ切り替えユーザーフローが実装される方法を示しています。
図 1:メディアソース切り替えユーザーフロー
メディア内の他アプリとラジオとの間でシームレスな移行を実現するため、car-media-common
ライブラリではメディアソース セレクタの起動に使用できる Android インテントが定義されています。AOSP では、このセレクタはアプリ ランチャーに実装され、アプリを起動する場合と同じ UI を表示しますが、メディアソースのみを表示するフィルタが適用されています。
OEM は、現在のアプリ ランチャーの実装をそのまま使用するか、カスタマイズしたメディアソース セレクタを実装するか、選択できます。
セレクタは 2 つのモードで動作します。
- 通常のフロー。セレクタを使用すると、選択したソースがメディアに表示され、ユーザーがコンテンツを閲覧できます。
- スイッチとして。セレクタを使用することでソースが切り替わりますが、メディアはユーザーに表示されません。これは、ホームページのセレクタ アイコンに該当します。ソースを選択すると、最後に表示されていた画面がユーザーに表示されます(この場合はホームページ)。
メディアソースの切り替えに使用するインテントは MediaSource#getSourceSelectorIntent()
メソッドから取得できます。これは、上記の各フローを起動するインテントを返す popup
ブール値を受け入れます。
実際のインテントは packages/apps/Car/libs/car-media-common/res/values/config.xml
で定義されます。この設定をカスタマイズするには、ビルド時のオーバーレイを使用します。
ラジオアプリの置き換え
ラジオアプリによってメディア ブラウズとメディア セッションが実装されていると、アプリ ランチャーにラジオが表示されます。ユーザーがアイコンをクリックしてもメディアが起動しないようにするには、2 つの要素が必要になります。ラジオが次の条件を満たしている必要があります。
- ランチャー アクティビティがある。
- カスタムソースとして宣言されている。それには、
car-media-common/res/values/config.xml
のcustom_media_packages
キーにコンポーネント名を追加します。
UX の運転制限
メディアは、ドライバーの注意散漫に関する UX の制限をすべて遵守する必要があります。そのためには、メディアは CarUXRestrictionManager をリッスンし、そのポリシーをすべて実装する必要があります。
- メディアは、Car ライブラリに接続して CarUXRestrictionManager のインスタンスを取得する必要があります。
- メディアは CarUxRestrictions のリストのアップデートにサブスクライブし、ドキュメントのとおりにそれらを実装する必要があります。
- メディアにとって特に重要なのは次の要素です。
UX_RESTRICTIONS_NO_SETUP
。 この場合、ログインフローを無効にする必要があります。UX_RESTRICTIONS_LIMIT_STRING_LENGTH
。 メディアアプリで提供されるエラー メッセージやその他のテキストが、指定の長さに制限されている必要があります。