Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

TV アプリのリファレンス

ライブテレビ コンテンツを再生する TV アプリは、パネルテレビやオペレーター STB などの一部のクラスの Android TV デバイスで必要とされます。リファレンス テレビ アプリケーション(ライブテレビ)は、Android プラットフォームとともに提供され、カスタマイズ、拡張、または交換できます。ソースコードは Android オープンソース プロジェクトで入手できます。

この記事では、Android TV デバイスのライブ TV をベースにして、システム テレビアプリを作成およびカスタマイズする方法の概要について説明します(デバイス メーカーまたは国固有の機能を実装するように TV アプリケーションを拡張することはできますが、これはリファレンス TV アプリの対象ではありません)。

依存関係

TV アプリケーションは、TV 入力フレームワーク(TIF)のコンポーネントであり、他のコンポーネントとは別に使用することはできません。つまり、TIF を備えたデバイスだけがライブテレビ アプリケーションを実行できます。

ライブテレビ アプリは Android API に依存します。ブランチによって、API レベルへの依存関係は異なります。

表 1. ライブテレビのブランチ

ブランチ 対象 API レベル 最小 API レベル
master 24(Android 7.0) 23
android-live-tv 23(Android 6.0) 21
android-live-tv-l-mr1 22(Android 5.1) 21

情報源を入手

まず、Git から公開するライブテレビのバージョンを選択します。以下の手順はライブテレビの最新バージョンを対象としていますが、ブランチをマスターから上記の表に示すものに変更することで、以前のバージョンを簡単に選択できます。

mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8 -c

ビルド

ライブテレビのコードをビルドするには、次のコマンドを実行します。

. build/envsetup.sh
tapas LiveTv x86
make LiveTv

プッシュ

ライブテレビをテストデバイスにプッシュするには:

adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk

デベロッパーがライブテレビ アプリにシステム権限を付与する場合は、初めてインストールされるときに、次のようにして /system/priv-app に push する必要があります。

adb push $OUT/system/priv-app/LiveTv/LiveTv.apk  /system/priv-app/LiveTv/

テスト

ライブテレビがデバイスに表示されたら、正しく統合されていることをテストする必要があります。TV アプリの互換性テストスイートCTS 検証ツールテストの実行以外にも、次のテストを使用できます。

単体テスト

ライブテレビ アプリには単体テストと機能テストがあります。テストを実行するには、デバイス(またはエミュレータ)が接続されている必要があります。

adb shell logcat -c
m LiveTv TVTestInput TVUnitTests -j20 &&\
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\
adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \
adb install -r -d $OUT/data/app/TVUnitTests/TVUnitTests.apk && \
adb shell pm clear com.android.providers.tv && \
adb shell pm clear com.google.android.tv && \
adb shell am instrument \
  -e testSetupMode unit \
  -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\
adb shell input keyevent KEYCODE_HOME &&\
adb shell am instrument \
  -w 'com.android.tv.tests/android.support.test.runner.AndroidJUnitRunner'

機能テスト

adb shell logcat -c
m LiveTv TVTestInput TVFuncTests -j20 &&\
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\
adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \
adb install -r -d $OUT/data/app/TVFuncTests/TVFuncTests.apk && \
adb shell pm clear com.android.providers.tv && \
adb shell pm clear com.google.android.tv && \
adb shell am instrument \
  -e testSetupMode func \
  -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\
adb shell input keyevent KEYCODE_HOME &&\
adb shell am instrument \
  -w 'com.android.tv.tests.ui/android.support.test.runner.AndroidJUnitRunner'

ジャンクテスト

ジャンクテストは、フレーム落ちとレンダリングの遅延を検出します。

adb shell logcat -c
m LiveTv TVTestInput TVJankTests -j20 &&\
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\
adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk &&\
adb install -r -d $OUT/data/app/TVJankTests/TVJankTests.apk &&\
adb shell pm clear com.android.providers.tv &&\
adb shell pm clear com.google.android.tv &&\
echo "Creating a lot of channels and EPG data, this may take a while" &&\
adb shell am instrument \
  -e testSetupMode jank \
  -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\
adb shell input keyevent KEYCODE_HOME &&\
adb shell am instrument \
  -w 'com.android.tv.tests.jank/android.support.test.runner.AndroidJUnitRunner'