Android は、高解像度テレビなどの大画面デバイスで動作するアプリ向けに最適化された、リッチなユーザー エクスペリエンスを提供します。Android TV 向けにアプリを開発することで、アプリのユーザー層を拡大できます。このドキュメントでは、これを効果的に行う方法について説明します。
TV アプリを作成する
TV アプリには、スマートフォンやタブレット向けのアプリと同じ構造を使用します。このアプローチにより、Android 向けアプリの作成に関する既存の知識に基づいて新しい TV アプリを作成したり、既存のアプリを拡張して TV デバイスでも実行できるようにしたりできます。
ただし、テレビのユーザー インタラクション モデルは、スマートフォンやタブレット デバイスとは大きく異なります。TV デバイスでアプリを成功させるには、3 メートル離れた場所からでもはっきりとわかる新しいレイアウトを設計し、方向パッドと選択ボタンだけで操作できるナビゲーションを提供する必要があります。
TV ハードウェア コントローラの処理方法、TV レイアウトの作成、TV ナビゲーションの作成などの考慮事項について詳しくは、TV アプリを作成するをご覧ください。
Media3 ExoPlayer を使用する
Jetpack Media3 には、再生、一時停止、シーク、トラック情報の表示などの基本機能を定義する Player インターフェースが用意されています。ExoPlayer は、Media3 におけるこのインターフェースのデフォルト実装です。
Android の MediaPlayer API と比較すると、複数のストリーミング プロトコルのサポート、デフォルトのオーディオ レンダラと動画レンダラ、メディア バッファリングを処理するコンポーネントなど、さらに便利な機能が追加されています。
ExoPlayer はカスタマイズや拡張が可能で、Google Play ストアのアプリ アップデートを通じて更新できます。詳細については、Media3 ExoPlayer をご覧ください。
Media3 MediaSession を使用する
メディア セッションは、システムがアプリの音声プレーヤーや動画プレーヤーを操作するための汎用的な手段を提供します。Media3 と以前のメディア API を区別する主な特徴の一つは、コンポーネント間のコネクタが不要になったことです。
新しい MediaSession クラスは、Player インターフェースを実装する任意のクラスを受け取ります。ExoPlayer と MediaController は、どちらもこのインターフェースを実装するクラスです。これにより、コンポーネント間のやり取りがはるかに簡単になります。詳細については、Player インターフェースをご覧ください。
メディア再生アプリの作成の詳細については、ExoPlayer を使用して基本的なメディア プレーヤーを作成するをご覧ください。
メディアアプリのエンドユーザーに最適なエクスペリエンスを提供するには、MediaSession を実装する必要があります。これを行うには、Player を初期化して、次のように MediaSession.Builder に渡します。
Kotlin
val player = ExoPlayer.Builder(context).build() val mediaSession = MediaSession.Builder(context, player).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build(); MediaSession mediaSession = new MediaSession.Builder(context, player).build();
状態の自動処理
Media3 ライブラリは、プレーヤーの状態を使用してメディア セッションを自動的に更新します。そのため、プレーヤーからセッションへのマッピングを手動で処理する必要はありません。これにより、この曲なに? カードなど、再生中のメディアに関する最新情報が常にユーザーに表示されるようになります。
再生を制御およびアドバタイズする
Media3 のデフォルトのプレーヤーは、Player インターフェースを実装する ExoPlayer クラスです。メディア セッションをプレーヤーに接続すると、アプリはメディア再生を外部にアドバタイズし、外部ソースから再生コマンドを受信できるようになります。メディア セッションは、これらのコマンドをメディアアプリのプレーヤーに委任します。
メディア セッションは、再生を制御するための鍵です。これにより、外部ソースからのコマンドを、メディアを再生するプレーヤーにルーティングできます。外部クライアントは、メディア コントローラを使用して、メディアアプリに再生コマンドを発行できます。これらのコマンドはメディア セッションによって受信され、最終的にメディア プレーヤーに委任されます。
再生コマンドの動作をカスタマイズする方法など、再生の詳細については、MediaSession を使用して再生を制御およびアドバタイズするをご覧ください。
アプリの中断を回避する
MediaSession を使用すると、次のような不要な中断を回避できます。
テレビの電源を切ったり、テレビ入力を切り替えたりしたときに、予期しない再生が継続する。また、テレビのハードウェアのエネルギー消費量も増加します。
MediaSessionを使用すると、アプリはメディアを再生していることをプラットフォームに通知でき、プラットフォームは再生を停止できることをアプリに通知できます。アプリを切り替えたり、テレビのディスプレイをオフにしたりすると、音楽の再生が突然停止する。
MediaSessionAPI を使用すると、バックグラウンド サービスで再生を継続できます。コンテンツとのインタラクションの制限。ユーザーが再生を制御できないようにします。たとえば、バックグラウンドで音楽を再生しているアプリに戻る場合や、音声コマンドをサポートする場合です。アプリに
MediaSessionを実装すると、ユーザーは音声コマンドを使用して、曲やエピソードをシークしたりスキップしたりできます。
注意事項
メディアアプリを Android for TV に拡張する際は、ユーザー補助の問題、エンゲージメントを促進する方法、ユーザーがコンテンツを見つけられるようにする方法、ゲームや TV 入力サービスを構築する方法を考慮する必要があります。
テレビのユーザー補助
支援技術はロービジョンのユーザーをサポートできますが、TV アプリのコンテンツ検索ジャーニーでユーザー補助をサポートすることが重要です。
たとえば、ナビゲーション ガイダンスの提供や要素の適切なラベル付けに特に注意を払い、TV アプリが TalkBack などのユーザー補助機能と適切に連携するようにします。これらの手順により、視覚障がいのあるユーザーのエクスペリエンスを大幅に改善できます。
ユーザー補助機能を改善するための最初のステップは、認識することです。テキスト スケーリング、キーボード レイアウト、音声による説明の詳細については、ユーザー補助リソースをご覧ください。
Google TV でエンゲージメントを高めるためのおすすめの方法
Android TV 向けに作成されたアプリはすべて、Google TV を搭載したデバイスで動作します。Google TV で優れたユーザー エクスペリエンスを提供するには、次のベスト プラクティスを適用することをおすすめします。
MediaSession を使用して、オーディオ プレーヤーまたは動画プレーヤーを操作する汎用的な方法を提供する必要があります。この実装方法について詳しくは、Media3 MediaSession を使用するをご覧ください。
アプリは、Google Cast をサポートしている必要があります。Android、iOS、Chrome アプリを拡張して、Android TV、Chromecast デバイス、アシスタント デバイスへの音声と動画のストリーミングを可能にします。詳細については、Google Cast のドキュメントをご覧ください。
また、ユーザーが次の操作を行えるようにすることもできます。
メディア アクション フィードを提供するか、次のおすすめを統合することで、さまざまなサーフェスでコンテンツを検出できるようにします。
アカウントのリンクと利用資格の同期をサポートし、音声キャストを提供して、Cast Connect を有効にすることで、音声とエンゲージメントを活用します。
Google Play 請求サービスを統合し、スムーズな定期購入を提供することで、支払いを簡単にします。
TV 入力フレームワークを構築する
ライブテレビ番組やその他の連続したチャンネルベースのコンテンツを視聴することは、テレビ エクスペリエンスの大きな部分を占めます。ユーザーは、チャンネルをブラウジングしてテレビ番組を選択して視聴することに慣れています。TV 入力フレームワークは、TV 番組ガイドで動画または音楽コンテンツを公開するためのチャンネルを作成します。
TV 入力フレームワークは、ハードウェア ソース(HDMI ポートや内蔵チューナーなど)やソフトウェア ソース(インターネット経由でストリーミングされる動画など)からライブ動画コンテンツを受信して再生するための統一された方法を提供します。詳細については、TV 入力サービスを構築するをご覧ください。