Menyesuaikan aplikasi TV referensi

TV Live adalah aplikasi TV referensi yang dirancang untuk perangkat televisi Android. Namun, produsen perangkat mungkin ingin menambahkan fungsi spesifik produk, yang tidak tercakup dalam implementasi default TV Live, penyesuaian, mode game, atau mode 3D. Untuk mendukung fungsi khusus perangkat ini atau tertentu, TV Live mendukung penyesuaian ini:

  • Mengaktifkan mode pergeseran waktu, yang memungkinkan pengguna berhenti sejenak, mempercepat, dan mundur. Mengonfigurasi mode pergeseran waktu yang akan digunakan penyimpanan eksternal, bukan penyimpanan internal.
  • Menambahkan opsi ke baris opsi TV.
  • Menambahkan baris kustom dan menambahkan opsi di dalamnya.

Catatan: Langsung Saluran adalah penerapan Google untuk TV Live yang dapat digunakan sebagaimana adanya di perangkat dengan layanan Google. Untuk menyesuaikan Saluran Langsung, ganti com.android.tv.* dengan com.google.android.tv.* di ini petunjuk.

Menyesuaikan TV Live

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

TV live menelusuri paket sistem dengan izin ini, memeriksa resource file, dan mendeteksi Aktivitas paket ditandai dengan kategori spesifik untuk melakukan penyesuaian proses.

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

Mengonfigurasi mode pergeseran waktu

Pengalihan waktu (trickplay) memungkinkan perangkat televisi Android untuk menjeda, memutar ulang, dan mempercepat pemutaran saluran. Dalam implementasi Live TV, pergeseran waktu dapat digunakan melalui UI kontrol Play. Pergeseran waktu diaktifkan secara default di TV live, tetapi dapat dinonaktifkan. Pergeseran waktu juga dapat dikonfigurasi untuk menggunakan ke 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 {i>default<i} saat tidak ada opsi yang diberikan.
  • disabled: Menonaktifkan pergeseran waktu.
  • use_external_storage_only: Mengonfigurasi pergeseran waktu yang akan digunakan dan 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 Play diaktifkan setelah menekan tombol Tombol tengah D-pad.

Menyesuaikan opsi TV

Produsen perangkat dapat menambahkan opsi kustom untuk setelan TV Live ke setelan Menu opsi TV, 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 khusus diimplementasikan oleh produsen perangkat dalam aktivitas tersebut. Aktivitas diluncurkan jika opsi diklik. Judul dan ikon aktivitas digunakan untuk memilih opsi tersebut. Opsi TV yang disesuaikan harus cocok dengan UI yang ada untuk memberikan pengalaman pengguna terbaik.

Catatan: Suatu aktivitas hanya dapat menangani satu opsi karena TV Live tidak bisa membedakan filter intent dalam aktivitas dengan karena keterbatasan Android. Lihat Menangani beberapa opsi dengan aktivitas untuk solusi.

Produsen perangkat juga dapat menempatkan opsi kustom sebelum atau setelah opsi dengan menentukan android:priority di AndroidManifest.xml. Opsi dengan nilai prioritas yang ditetapkan lebih rendah dari 100 akan ditampilkan sebelum item dan nilai yang lebih tinggi dari 100 akan ditampilkan setelahnya. Beberapa opsi kustom (salah satu sebelum atau setelah opsi yang ada) diurutkan berdasarkan prioritasnya dalam urutan menaik pesanan. Jika opsi memiliki prioritas yang sama, urutan di antara opsi tersebut 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 Hemat Energi).

Contoh opsi TV kustom.

Gambar 3. Contoh opsi TV kustom.

Menangani beberapa opsi dalam suatu aktivitas

Opsi memetakan 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 suatu aktivitas, gunakan <activity-alias> dalam AndroidManifest.xml. Di kolom 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>

Buat 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.

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

Opsi khusus

Untuk menambahkan opsi kustom ke baris kustom, ikuti proses penambahan opsi ke menu opsi TV, tetapi ubah nama kategori menjadi Sebagai gantinya, 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.