Menyesuaikan Aplikasi TV Referensi

Live TV 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 implementasi default Live TV, seperti penyesuaian gambar, mode permainan, atau mode 3D. Untuk mendukung fungsi atau opsi khusus perangkat ini, Live TV mendukung penyesuaian berikut:

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

Catatan : Saluran Langsung adalah implementasi TV Langsung Google yang dapat digunakan apa adanya pada perangkat dengan layanan Google. Untuk menyesuaikan Saluran Langsung, ganti com.android.tv.* dengan com.google.android.tv.* dalam petunjuk ini.

Menyesuaikan TV Langsung

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

TV langsung mencari paket sistem dengan izin ini, memeriksa file sumber daya, dan mendeteksi Aktivitas paket yang ditandai dengan kategori khusus untuk memproses penyesuaian.

Poin utama : Hanya satu paket yang dapat menyesuaikan TV Langsung.

Mengonfigurasi mode pergeseran waktu

Pergeseran waktu (trickplay) memungkinkan perangkat televisi Android untuk menjeda, memundurkan, dan memutar saluran maju cepat. Dalam implementasi Live TV, pergeseran waktu dapat digunakan melalui UI kontrol Play . Pergeseran waktu diaktifkan secara default di TV Langsung, tetapi dapat dinonaktifkan. Pergeseran waktu juga dapat dikonfigurasi untuk menggunakan penyimpanan eksternal saja.

Untuk mengonfigurasi pergeseran waktu, tambahkan sumber daya string trickplay_mode dan atur nilainya ke salah satu opsi berikut:

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

Gambar 1 . Putar kontrol UI diaktifkan setelah menekan tombol tengah D-pad.

Menyesuaikan opsi TV

Produsen perangkat dapat menambahkan opsi khusus untuk pengaturan TV Langsung ke menu opsi TV yang ada, seperti menambahkan pintasan ke pengaturan Gambar Suara.

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

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

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

Dalam contoh ini, opsi muncul pertama kali 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 khusus.

Gambar 3 . Contoh opsi TV khusus.

Menangani beberapa opsi dalam suatu aktivitas

Opsi memetakan ke filter maksud aktivitas dan sebaliknya. Karena Android tidak membedakan filter maksud dengan kategori dan tindakan yang sama, aktivitas hanya menangani satu opsi, meskipun beberapa filter maksud dideklarasikan di dalamnya. Untuk menangani beberapa opsi dalam suatu 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 khusus

Produsen perangkat dapat menambahkan dan menyesuaikan baris di atas baris opsi TV. Baris kustom ini 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 khusus ke baris khusus, 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.