Menyesuaikan aplikasi TV referensi

TV Live adalah aplikasi TV referensi yang dirancang untuk perangkat televisi Android. Namun, produsen perangkat mungkin ingin menambahkan lebih banyak fungsi khusus produk, yang tidak tercakup dalam penerapan default Live TV, seperti penyesuaian gambar, mode game, atau mode 3D. Untuk mendukung fungsi atau opsi khusus perangkat ini, Live TV mendukung penyesuaian berikut:

  • Mengaktifkan mode pergeseran waktu, yang memungkinkan pengguna menjeda, mempercepat, dan memundurkan. Mengonfigurasi mode pergeseran waktu untuk menggunakan penyimpanan eksternal, bukan penyimpanan internal.
  • Menambahkan opsi ke baris opsi TV.
  • Menambahkan baris kustom dan menambahkan opsi di dalamnya.

Catatan: Channel Live adalah penerapan Live TV oleh Google yang dapat digunakan apa adanya di perangkat dengan layanan Google. Untuk menyesuaikan Channel Live, ganti com.android.tv.* dengan com.google.android.tv.* dalam petunjuk ini.

Menyesuaikan TV Live

Untuk menyesuaikan TV Live, perangkat Android TV target memerlukan paket penyesuaian yang diinstal, yang harus berupa aplikasi sistem bawaan dengan izin com.android.tv.permission.CUSTOMIZE_TV_APP.

Live TV menelusuri paket sistem dengan izin ini, memeriksa file resource, dan mendeteksi Aktivitas paket yang ditandai dengan kategori tertentu untuk memproses penyesuaian.

Poin penting: Hanya satu paket yang dapat menyesuaikan TV Live.

Mengonfigurasi mode pergeseran waktu

Pergeseran waktu (trickplay) memungkinkan perangkat televisi Android menjeda, memutar ulang, dan mempercepat pemutaran saluran. Dalam penerapan Live TV, pergeseran waktu dapat digunakan melalui UI Kontrol putar. Penundaan waktu diaktifkan secara default di Live TV, tetapi dapat dinonaktifkan. Pergeseran waktu juga dapat dikonfigurasi untuk menggunakan penyimpanan eksternal saja.

Untuk mengonfigurasi pergeseran waktu, tambahkan resource string trickplay_mode dan tetapkan nilainya ke salah satu opsi berikut:

  • enabled: Mengaktifkan pergeseran waktu. Ini adalah nilai default saat tidak ada opsi yang diberikan.
  • disabled: Menonaktifkan pergeseran waktu.
  • use_external_storage_only: Mengonfigurasi pergeseran waktu untuk menggunakan penyimpanan eksternal.
<string name="trickplay_mode">use_external_storage_only</string>
UI kontrol Play diaktifkan setelah
menekan tombol tengah D-pad.

Gambar 1. UI Kontrol putar diaktifkan setelah menekan tombol tengah D-pad.

Menyesuaikan opsi TV

Produsen perangkat dapat menambahkan opsi kustom untuk setelan TV Live ke menu opsi TV yang ada, seperti menambahkan pintasan ke setelan Gambar Suara.

Untuk menunjukkan opsi kustom, deklarasikan filter intent yang memfilter kategori com.android.tv.category.OPTIONS_ROW dalam aktivitas. Fitur kustom diimplementasikan oleh produsen perangkat dalam aktivitas. Aktivitas akan diluncurkan jika opsi diklik. Judul dan ikon aktivitas digunakan untuk opsi. Opsi TV yang disesuaikan harus cocok dengan UI yang ada untuk memberikan pengalaman pengguna terbaik.

Catatan: Aktivitas hanya dapat menangani satu opsi karena Live TV tidak dapat membedakan filter intent dalam aktivitas dengan kategori yang sama karena batasan Android. Lihat Menangani beberapa opsi dalam aktivitas untuk solusinya.

Produsen perangkat juga dapat menempatkan opsi kustom sebelum atau setelah opsi yang ada dengan menentukan android:priority di AndroidManifest.xml. Opsi dengan nilai prioritas yang ditentukan lebih rendah dari 100 akan ditampilkan sebelum item yang ada dan nilai yang lebih tinggi dari 100 akan ditampilkan setelahnya. Beberapa opsi kustom (baik sebelum maupun setelah opsi yang ada) diurutkan berdasarkan prioritasnya dalam urutan menaik. Jika opsi memiliki prioritas yang sama, urutannya tidak ditentukan.

Dalam contoh ini, opsi muncul terlebih dahulu di baris opsi TV, dan PictureSettingsActivity diluncurkan jika opsi diklik.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

Contoh baris opsi TV yang disesuaikan

Gambar 2. Contoh baris opsi TV yang disesuaikan (Kecerahan dan Penghematan Energi).

Contoh opsi TV kustom.

Gambar 3. Contoh opsi TV kustom.

Menangani beberapa opsi dalam aktivitas

Opsi dipetakan ke filter intent aktivitas dan sebaliknya. Karena Android tidak membedakan filter intent dengan kategori dan tindakan yang sama, aktivitas hanya menangani satu opsi, meskipun beberapa filter intent dideklarasikan di dalamnya. Untuk menangani beberapa opsi dalam aktivitas, gunakan <activity-alias> di AndroidManifest.xml. Dalam aktivitas, gunakan getIntent().getComponent() untuk mengidentifikasi opsi yang diklik.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

Membuat baris kustom

Produsen perangkat dapat menambahkan dan menyesuaikan baris di atas baris opsi TV. Baris kustom ini bersifat opsional.

Judul baris

Tentukan string partner_row_title di res/values/strings.xml. Nilai string digunakan untuk judul baris kustom.

<string name="partner_row_title">Partner Row</string>

Opsi khusus

Untuk menambahkan opsi kustom ke baris kustom, ikuti proses untuk menambahkan opsi ke menu opsi TV, tetapi ubah nama kategori menjadi com.android.tv.category.PARTNER_ROW.

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

Contoh baris kustom opsional.

Gambar 4. Contoh baris kustom opsional.

Contoh dialog opsi kustom.

Gambar 5. Contoh dialog opsi kustom.