PanelTVやOperatorSTBなど、一部のクラスのAndroid TVデバイスには、ライブTVコンテンツを再生するTVアプリケーションが必要です。参照TVアプリケーション( Live TV )がAndroidプラットフォームと一緒に提供されており、カスタマイズ、拡張、または置換することができます。ソースコードはAndroidオープンソースプロジェクトで入手できます。
この記事では、AndroidTVデバイス用のライブTVに基づいてシステムTVアプリを構築およびカスタマイズする方法を要約します。 (TVアプリケーションを拡張して、デバイスの製造元または国固有の機能を実装できますが、これは参照TVアプリの範囲外です。)
依存関係
TVアプリケーションはTV入力フレームワーク(TIF)のコンポーネントであり、他のコンポーネントとは独立して使用することはできません。これは、TIFを備えたデバイスのみがライブTVアプリケーションを実行できることを意味します。
LiveTVアプリケーションはAndroidAPIに依存しています。ブランチが異なれば、APIレベルへの依存関係も異なります。
表1.ライブTVブランチ。
ブランチ | ターゲットAPIレベル | 最小APIレベル |
---|---|---|
主人 | 24(Android 7.0) | 23 |
android-live-tv | 23(Android 6.0) | 21 |
android-live-tv-l-mr1 | 22(Android 5.1) | 21 |
ソースを入手する
開始するには、Gitから希望するライブTVのバージョンを選択します。以下の手順はLiveTVの現在のバージョンを対象としていますが、ブランチをマスターから上記の表にリストされている別のバージョンに変更することで、以前のバージョンを簡単に選択できます。
mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8 -c
ビルド
ライブTVコードを作成するには、次のコマンドを実行します。
. build/envsetup.sh
tapas LiveTv x86
make LiveTv
押す
ライブTVをテストデバイスにプッシュするには:
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk
開発者がLIVETVアプリにシステム権限を持たせたい場合は、最初にインストールするときに、次のコマンドを使用して/ system / priv-appにプッシュする必要があります。
adb push $OUT/system/priv-app/LiveTv/LiveTv.apk /system/priv-app/LiveTv/
テスト
ライブTVがデバイスにインストールされたら、正しく統合されていることをテストする必要があります。 TVアプリの互換性テストスイートとCTSVerifierテストの実行に加えて、以下のテストを使用できます。
ユニットテスト
LiveTVアプリにはユニットテストと機能テストがあります。テストを実行するには、デバイス(またはエミュレーター)が接続されている必要があります。
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'
ジャンクテスト
Jankテストは、ドロップされたフレームとレンダリングの遅延を探します。
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'