Framework Input Android TV (TIF) menyederhanakan pengiriman konten live ke Android TV. TIF Android menyediakan API standar bagi produsen untuk membuat modul input guna mengontrol Android TV, serta memungkinkan penelusuran dan rekomendasi TV langsung melalui metadata yang dipublikasikan oleh Input TV.
Framework ini tidak berupaya menerapkan standar TV atau persyaratan wilayah, tetapi mempermudah produsen perangkat untuk memenuhi standar siaran TV digital regional tanpa implementasi ulang. Dokumentasi di bagian ini mungkin juga berguna bagi developer aplikasi pihak ketiga yang ingin membuat Input TV kustom.
Komponen
Implementasi Android TV Input Framework mencakup TV Input Manager. TIF berfungsi dengan Aplikasi TV, sebuah aplikasi sistem yang tidak dapat diganti oleh aplikasi pihak ketiga, untuk mengakses saluran bawaan dan IP tuner. Aplikasi TV berkomunikasi dengan modul Input TV yang disediakan oleh produsen perangkat atau pihak lain melalui TV Input Manager.
Framework Input TV terdiri dari:
- Penyedia TV (
com.android.providers.tv.TvProvider
): database channel, program, dan izin terkait - Aplikasi TV (
com.android.tv.TvActivity
): aplikasi yang menangani interaksi pengguna - TV Input Manager (
android.media.tv.TvInputManager
): memungkinkan Input TV berkomunikasi dengan Aplikasi TV - Input TV: aplikasi yang merepresentasikan tuner dan port input fisik atau virtual
- HAL Input TV (modul
tv_input
): definisi hardware yang memungkinkan Input TV sistem mengakses hardware khusus TV saat diimplementasikan - Kontrol Orang Tua: teknologi untuk mengizinkan pemblokiran saluran dan program
- HDMI-CEC: teknologi untuk mengizinkan kontrol jarak jauh berbagai perangkat melalui HDMI
- Framework Tuner: framework untuk input TV Tuner Bawaan
- MediaCas: framework untuk akses bersyarat
- Tuner Resource Manager: layanan untuk mengelola resource hardware untuk input TV, MediaCas, dan input Built-in-Tuner
Komponen ini dibahas secara mendetail di bawah. Lihat diagram berikut untuk tampilan mendetail arsitektur Framework Input Android TV.
Aliran
Berikut cara penerapan arsitektur:
- Pengguna melihat dan berinteraksi dengan Aplikasi TV, sebuah aplikasi sistem yang tidak dapat digantikan oleh aplikasi pihak ketiga.
- Aplikasi TV menampilkan konten AV dari Input TV.
- Aplikasi TV tidak dapat berbicara langsung dengan Input TV. Pengelola Input TV mengidentifikasi status Input TV untuk Aplikasi TV. Lihat Pengelola Input TV di bawah untuk mengetahui detail selengkapnya tentang batasan ini.
Izin
- Hanya
signatureOrSystem
Input TV dan Aplikasi TV yang memiliki akses penuh ke database Penyedia TV dan dapat menerima KeyEvents. - Hanya Input TV sistem yang dapat mengakses TV Input HAL melalui layanan TV Input Manager. Input TV diakses secara one-to-one melalui sesi Pengelola Input TV.
- Input TV pihak ketiga memiliki akses terkunci paket ke database Penyedia TV dan hanya dapat MEMBACA/MENULIS ke baris paket yang cocok.
- Input TV pihak ketiga dapat menampilkan kontennya sendiri atau kontennya dari input TV passthrough produsen perangkat, seperti HDMI1. TV ini tidak dapat menampilkan konten dari input TV non-passthrough, seperti tuner bawaan atau IPTV.
- Izin
TV_INPUT_HARDWARE
untuk aplikasi Input TV hardware, memberi sinyal ke Layanan Pengelola Input TV untuk memberi tahu layanan Input TV saat booting untuk memanggil Layanan Pengelola Input TV dan menambahkan Input TV-nya. Izin ini memungkinkan aplikasi Input TV hardware mendukung beberapa Input TV per layanan Input TV, serta dapat menambahkan dan menghapus Input TV yang didukung secara dinamis.
Penyedia TV
Database Penyedia TV menyimpan saluran dan program dari Input TV. Penyedia TV juga memublikasikan dan mengelola izin terkait sehingga Input TV hanya dapat melihat datanya sendiri. Misalnya, Input TV tertentu hanya dapat melihat saluran dan program yang telah disediakannya dan dilarang mengakses saluran dan program Input TV lainnya.
Penyedia TV memetakan "genre siaran" ke "genre kanonis" secara internal. Input
TV bertanggung jawab untuk mengisi "genre siaran" dengan nilai dalam
standar siaran yang mendasarinya, dan kolom "genre kanonis" akan
otomatis diisi dengan genre terkait yang benar dari
android.provider.TvContract.Genres
. Misalnya, dengan standar siaran ATSC A/65 dan program dengan genre 0x25 (yang berarti “Olahraga”), Input TV akan mengisi “genre siaran” dengan String “Olahraga” dan Penyedia TV akan mengisi kolom “genre kanonis” dengan nilai yang dipetakan android.provider.TvContract.Genres.SPORTS
.
Lihat diagram di bawah untuk tampilan mendetail Penyedia TV.
Hanya aplikasi di partisi sistem dengan hak istimewa yang dapat membaca seluruh database Penyedia TV.
Input TV passthrough tidak menyimpan saluran dan program.
Selain kolom standar untuk saluran dan program, database Penyedia TV
juga menawarkan kolom jenis BLOB, COLUMN_INTERNAL_PROVIDER_DATA
,
di setiap tabel yang dapat digunakan Input TV untuk menyimpan data arbitrer. Data BLOB tersebut
dapat menyertakan informasi kustom, seperti frekuensi tuner terkait, dan
dapat diberikan dalam buffering protokol atau bentuk lainnya. Kolom yang Dapat Ditelusuri
tersedia untuk membuat channel tertentu tidak tersedia di penelusuran (seperti untuk memenuhi
persyaratan khusus negara untuk perlindungan konten).
Contoh kolom database
Penyedia TV mendukung data terstruktur dalam tabel saluran
(android.provider.TvContract.Channels
) dan program
(android.provider.TvContract.Programs
). Tabel ini
diisi dan diakses oleh Input TV dan aplikasi sistem
seperti Aplikasi TV. Tabel ini memiliki empat jenis kolom:
- Tampilan: Kolom tampilan berisi informasi yang mungkin
ingin ditampilkan aplikasi kepada pengguna, seperti nama channel
(
COLUMN_DISPLAY_NAME
) atau nomor (COLUMN_DISPLAY_NUMBER
), atau judul program yang sedang ditonton. - Metadata: Ada tiga kolom untuk mengidentifikasi konten,
sesuai dengan standar yang relevan, seperti ID aliran transpor channel
(
COLUMN_TRANSPORT_STREAM_ID
), ID jaringan asli (COLUMN_ORIGINAL_NETWORK_ID
), dan ID layanan (COLUMN_SERVICE_ID
). - Data internal: Kolom yang ditujukan untuk penggunaan kustom Input
TV.
Beberapa kolom, sepertiCOLUMN_INTERNAL_PROVIDER_DATA
, adalah kolom BLOB yang dapat disesuaikan tempat Input TV dapat menyimpan metadata arbitrer tentang saluran atau programnya. - Flag: Kolom flag menunjukkan apakah channel harus dibatasi dari penelusuran, penjelajahan, atau penayangan. Hal ini hanya dapat ditetapkan di tingkat channel. Semua program tunduk pada setelan di channel.
COLUMN_SEARCHABLE
: Membatasi penelusuran dari beberapa channel mungkin merupakan persyaratan di wilayah tertentu.COLUMN_SEARCHABLE = 0
berarti channel tidak boleh ditampilkan dalam hasil penelusuran.COLUMN_BROWSABLE
: Hanya terlihat oleh aplikasi sistem. Membatasi saluran agar tidak dijelajahi oleh aplikasi.COLUMN_BROWSABLE = 0
berarti channel tidak boleh disertakan dalam daftar channel.COLUMN_LOCKED
: Hanya terlihat oleh aplikasi sistem. Membatasi saluran agar tidak dapat ditonton oleh akun yang tidak valid tanpa memasukkan kode PIN.COLUMN_LOCKED = 1
berarti channel harus dilindungi oleh kontrol orang tua.
Untuk mengetahui daftar kolom yang lebih lengkap, lihat
android/frameworks/base/media/java/android/media/tv/TvContract.java
Izin dan kontrol akses
Semua kolom dapat dilihat oleh siapa saja yang memiliki akses ke baris yang sesuai. Tidak ada kolom yang dapat diakses langsung oleh pengguna; mereka hanya melihat apa yang ditampilkan Aplikasi TV, aplikasi Sistem, atau Input TV.
- Setiap baris memiliki
PACKAGE_NAME
, paket (aplikasi) yang memiliki baris tersebut, yang diperiksa pada Kueri, Sisipkan, Perbarui melalui TvProvider.java. Input TV hanya dapat mengakses informasi yang ditulisnya dan dipisahkan dari informasi yang disediakan oleh Input TV lainnya. - Izin BACA, TULIS melalui AndroidManifest.xml (memerlukan izin pengguna) untuk menentukan saluran yang tersedia.
- Hanya aplikasi
signatureOrSystem
yang dapat memperoleh izinACCESS_ALL_EPG_DATA
untuk mengakses seluruh database.
Pengelola Input TV
TV Input Manager menyediakan API sistem terpusat untuk keseluruhan Android TV Input Framework. API ini menengahi interaksi antara aplikasi dan Input TV serta memberikan fungsi kontrol orang tua. Sesi Pengelola Input TV harus dibuat satu per satu dengan Input TV. TV Input Manager memungkinkan akses ke Input TV yang diinstal sehingga aplikasi dapat:
- Mencantumkan input TV dan memeriksa statusnya
- Membuat sesi dan mengelola pemroses
Untuk sesi, Input TV dapat disetel oleh Aplikasi TV hanya ke URI yang telah ditambahkan
ke database Penyedia TV, kecuali untuk Input TV passthrough yang dapat
disetel menggunakan TvContract.buildChannelUriForPassthroughInput()
.
Input TV juga dapat disetel volumenya. Input TV yang disediakan dan ditandatangani oleh
produsen perangkat (aplikasi tanda tangan) atau aplikasi lain yang diinstal di partisi
sistem akan memiliki akses ke seluruh database Penyedia TV. Akses ini dapat
digunakan untuk membuat aplikasi yang akan dijelajahi dan ditelusuri di semua saluran
dan program TV yang tersedia.
Aplikasi dapat membuat dan mendaftarkan TvInputCallback
dengan
android.media.tv.TvInputManager
yang akan dipanggil kembali saat perubahan status
Input TV atau pada saat penambahan atau penghapusan
Input TV. Misalnya, Aplikasi TV dapat bereaksi saat Input TV terputus
dengan menampilkannya sebagai terputus dan mencegah pemilihannya.
Pengelola Input TV memisahkan komunikasi antara Aplikasi TV dan Input TV. Antarmuka standar TV Input Manager dan TV Input memungkinkan beberapa produsen perangkat membuat Aplikasi TV mereka sendiri sekaligus membantu semua Input TV pihak ketiga berfungsi di semua Aplikasi TV.
Input TV
Input TV adalah aplikasi Android dalam arti memiliki AndroidManifest.xml dan diinstal (melalui Play, bawaan, atau sideload). Android TV mendukung aplikasi sistem yang diprainstal, aplikasi yang ditandatangani oleh produsen perangkat, dan Input TV pihak ketiga.
Beberapa input, seperti input HDMI atau input tuner bawaan, hanya dapat disediakan oleh produsen karena input tersebut berkomunikasi langsung dengan hardware yang mendasarinya. Lainnya, seperti IPTV, place-shifting, dan STB eksternal, dapat disediakan oleh pihak ketiga sebagai APK di Google Play Store. Setelah didownload dan diinstal, input baru dapat dipilih dalam Aplikasi TV.
Contoh input passthrough
Dalam contoh ini, Input TV yang disediakan oleh produsen perangkat tepercaya
dan memiliki akses penuh ke Penyedia TV. Sebagai Input TV passthrough, Input TV ini tidak
mendaftarkan saluran atau program apa pun ke Penyedia TV. Untuk mendapatkan URI yang digunakan
untuk mereferensikan input passthrough, gunakan metode utilitas
android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
.
Aplikasi TV berkomunikasi dengan Pengelola Input TV untuk menjangkau Input TV HDMI.
Contoh tuner bawaan
Dalam contoh ini, Input TV Tuner Bawaan yang disediakan oleh produsen perangkat dipercaya dan memiliki akses penuh ke Penyedia TV.
Contoh input pihak ketiga
Dalam contoh ini, Input TV STB eksternal disediakan oleh pihak ketiga. Karena Input TV tersebut tidak dapat langsung mengakses feed video HDMI yang masuk, input tersebut harus melalui Pengelola Input TV dan menggunakan Input TV HDMI yang disediakan oleh produsen perangkat.
Melalui Pengelola Input TV, Input TV STB eksternal dapat berkomunikasi dengan Input TV HDMI dan memintanya untuk menampilkan video di HDMI1. Jadi, Input TV STB dapat mengontrol TV saat Input TV HDMI yang disediakan produsen merender video.
Contoh Picture-in-picture (PIP)
Diagram di atas menunjukkan cara tombol pada remote control diteruskan ke
Input TV untuk tampilan picture-in-picture (PIP) tertentu. Penekanan tombol tersebut
ditafsirkan oleh driver hardware yang disediakan oleh produsen perangkat,
yang mengonversi kode pemindaian hardware menjadi kode tombol Android dan meneruskannya ke
fungsi pipeline input
InputReader
dan InputDispatcher
Android standar sebagai
KeyEvents.
Hal ini pada akhirnya memicu peristiwa di Aplikasi TV jika sedang difokuskan.
Hanya Input TV sistem yang memenuhi syarat untuk menerima InputEvents
, dan
hanya jika memiliki izin sistem RECEIVE_INPUT_EVENT
.
Input TV bertanggung jawab untuk menentukan InputEvents mana yang akan digunakan dan harus
memungkinkan Aplikasi TV menangani kunci yang tidak perlu digunakan.
Aplikasi TV bertanggung jawab untuk mengetahui Input TV sistem mana yang aktif,
yang berarti dipilih oleh pengguna, dan untuk membedakan KeyEvents
yang masuk
dan merutekannya ke sesi Pengelola Input TV yang benar, memanggil
dispatchInputEvent()
untuk meneruskan peristiwa ke Input TV terkait.
Contoh input MHEG-5
Diagram berikut menunjukkan tampilan yang lebih mendetail tentang cara KeyEvents
diarahkan melalui TIF Android.
Diagram ini menggambarkan alur aplikasi Tombol merah, yang umum di Eropa untuk memungkinkan pengguna mengakses aplikasi interaktif di televisi mereka. Aplikasi dapat dikirim melalui streaming transpor ini. Saat diklik, tombol ini memungkinkan pengguna berinteraksi dengan aplikasi siaran ini. Misalnya, Anda dapat menggunakan aplikasi siaran ini untuk mengakses halaman web atau skor olahraga terkait.
Lihat bagian Aplikasi siaran untuk mempelajari cara aplikasi siaran berinteraksi dengan Aplikasi TV.
Dalam contoh ini:
- Aplikasi TV berada dalam fokus dan menerima semua kunci.
KeyEvents
(misalnya, tombol Merah) diteruskan ke Input TV aktif sebagaiInputEvents.
- Input TV sistem terintegrasi dengan stack MHEG-5 dan memiliki
izin sistem
RECEIVE_INPUT_EVENT
. - Saat menerima kode tombol aktivasi (misalnya, tombol Merah), Input TV mengaktifkan aplikasi siaran.
- Input TV menggunakan
KeyEvents
sebagaiInputEvents
dan aplikasi siaran menjadi fokus dan menanganiInputEvents
hingga ditutup.
Catatan: Input TV pihak ketiga tidak pernah menerima kunci.
HAL Input TV
TV Input HAL membantu pengembangan Input TV untuk mengakses hardware khusus TV.
Seperti HAL Android lainnya, HAL Input TV (tv_input
)
tersedia di hierarki sumber AOSP dan vendor mengembangkan implementasinya.
Catatan: Mulai Android 14, antarmuka HAL input TV ditentukan menggunakan AIDL.
Aplikasi TV
Aplikasi TV sistem menampilkan konten TV live kepada pengguna. Aplikasi TV referensi (TV Live) disediakan bersama platform Android, yang dapat digunakan apa adanya, disesuaikan, diperluas, atau diganti oleh produsen perangkat. Kode sumber tersedia di Proyek Open Source Android, dan Anda dapat memulainya di artikel Referensi aplikasi TV.
Produsen perangkat dapat memperluas Aplikasi TV mereka untuk mengimplementasikan produsen perangkat atau fitur khusus negara, tetapi hal ini tidak termasuk dalam cakupan TIF atau Aplikasi TV referensi.
Minimal, Aplikasi TV sistem harus menangani tugas berikut:
Penyiapan dan konfigurasi
- Mendeteksi Input TV secara Otomatis
- Mengizinkan Input TV memulai penyiapan saluran
- Mengontrol setelan orang tua
- Edit channel
Membaca
- Mengakses dan menjelajahi semua saluran TV
- Mengakses panel informasi program TV
- Menampilkan data Electronic Programming Guide (EPG)
- Mendukung beberapa trek audio dan subtitel
- Memberikan tantangan PIN kontrol orang tua
- Mengizinkan overlay UI Input TV untuk standar TV (HbbTV, dll.)
- Mengisi hasil penelusuran untuk saluran dan program TV
- Menampilkan kartu penautan aplikasi
- Mendukung API pergeseran waktu
- Menangani fungsi DVR dan mendukung API perekaman TV
Kumpulan fitur ini akan meningkat seiring dengan versi Android baru tempat API TIF platform diperluas. CTS Verifier memberikan cakupan pengujian kompatibilitas.
Dukungan untuk Input TV pihak ketiga
Android TV menyediakan API developer untuk input TV pihak ketiga, sehingga aplikasi yang diinstal dapat menghadirkan saluran software ke dalam pengalaman TV live. Untuk memastikan penerapan perangkat Android yang kompatibel, Aplikasi TV sistem memiliki beberapa tanggung jawab terkait menampilkan input dan saluran TV pihak ketiga kepada pengguna. Aplikasi Live TV referensi menyediakan implementasi yang kompatibel; jika mengganti Aplikasi TV yang ada pada sistem, produsen perangkat harus memastikan bahwa aplikasi mereka menyediakan kompatibilitas serupa, untuk memenuhi ekspektasi developer di semua perangkat Android TV.
Aplikasi TV sistem harus menampilkan input pihak ketiga bersama dengan layanan TV live default perangkat. Keunggulan API developer adalah pengguna akan dapat menemukan saluran (setelah diinstal) dalam pengalaman TV standar mereka.
Diferensiasi visual antara channel bawaan dan channel pihak ketiga diizinkan, seperti yang ditentukan di bagian Aplikasi TV pada CDD Android.
Bagian berikut menunjukkan cara aplikasi TV Live memenuhi persyaratan CDD.
Penyiapan channel baru
Penambahan input/saluran pihak ketiga baru dimulai dengan pengguna menemukan dan menginstal Input TV dari app store, seperti Google Play.
Beberapa input TV pihak ketiga otomatis menambahkan saluran ke database TvProvider. Namun, sebagian besar akan menyediakan aktivitas Penyiapan agar pengguna dapat menyiapkan saluran, memberikan detail login, dan tindakan lainnya. Aplikasi TV sistem harus memastikan pengguna dapat mengaktifkan aktivitas Penyiapan ini, itulah sebabnya CDD memerlukan input pihak ketiga sebagai tindakan navigasi minimal dari Aplikasi TV utama.
Aplikasi Live TV referensi menyediakan menu Sumber Saluran untuk mengakses input.
Selain itu, kartu notifikasi ditampilkan di bagian atas menu Aplikasi TV setelah TvInput baru diinstal, untuk mengarahkan pengguna langsung ke Penyiapan:
Jika pengguna mengambil tindakan melalui notifikasi, mereka dapat memilih untuk menyiapkan sumber seperti yang terlihat pada Gambar 10.
Lihat Menentukan Layanan Input TV Anda untuk mengetahui ekspektasi developer dalam bidang ini.
Menyesuaikan daftar saluran
Produsen perangkat dapat menyediakan UI untuk menyembunyikan saluran tertentu dan memungkinkan pengguna mengelola EPG mereka sendiri. TV live mencakup fasilitas ini.
EPG
Developer input pihak ketiga harus yakin bahwa pengguna dapat dengan mudah membuka saluran mereka selama penggunaan umum, di semua perangkat Android TV yang kompatibel.
Saluran dari input pihak ketiga harus ditampilkan sebagai bagian dari EPG pengalaman TV live standar perangkat. Pemisahan visual atau kategori terpisah untuk saluran pihak ketiga dapat digunakan (lihat bagian Aplikasi TV di Android CDD) —kuncinya adalah pengguna dapat menemukan saluran yang telah mereka instal.
Telusuri
Produsen harus menerapkan Aplikasi TV untuk menyertakan hasil penelusuran untuk permintaan penelusuran global guna memastikan pengalaman pengguna terbaik. TV Live menyediakan implementasi (lihat yang memberikan hasil dari input pihak ketiga (diperlukan untuk kompatibilitas platform) serta input bawaan.
Pergeseran waktu
Untuk perangkat yang menjalankan Android 6.0 dan yang lebih baru, Aplikasi TV harus mendukung API time shifting framework Android. Selain itu, produsen harus menerapkan kontrol pemutaran di Aplikasi TV, yang memungkinkan pengguna menjeda, melanjutkan, memundurkan, dan mempercepat pemutaran.
Untuk Input TV yang mendukung pergeseran waktu, Aplikasi TV harus menampilkan kontrol pemutaran.
DVR
Untuk perangkat yang menjalankan Android 7.0 dan yang lebih baru, Aplikasi TV harus mendukung API perekaman TV framework Android, untuk mendukung, mencantumkan, dan memutar program yang direkam.
Hal ini memungkinkan produsen perangkat untuk menghubungkan subsistem DVR mereka ke TIF dan secara drastis mengurangi upaya integrasi yang diperlukan untuk mengaktifkan atau mengintegrasikan fungsi DVR di perangkat TV. Hal ini juga memungkinkan pihak ketiga menyediakan sistem DVR aftermarket yang dapat dicolokkan ke perangkat Android TV.
Selain merekam konten live, Aplikasi TV juga menangani konflik resource. Misalnya, jika memiliki dua tuner, perangkat dapat merekam dua program secara bersamaan. Jika pengguna meminta untuk merekam tiga acara, Aplikasi TV harus menangani konflik dan harus menampilkan notifikasi atau meminta pengguna menjadwalkan prioritas untuk permintaan ini.
Aplikasi TV juga dapat menerapkan logika yang lebih canggih seperti menanyakan kepada pengguna apakah mereka ingin merekam semua episode mendatang dalam sebuah serial saat mereka meminta untuk merekam satu episode.
Lihat diagram berikut untuk melihat kemungkinan implementasi DVR di Android TV.
- Layanan Input TV memberi tahu Aplikasi TV jumlah tuner yang tersedia sehingga Aplikasi TV dapat menangani kemungkinan konflik resource.
- Aplikasi TV menerima permintaan yang dimulai pengguna untuk merekam program TV.
- Aplikasi TV menyimpan jadwal perekaman di database internalnya.
- Saat tiba waktunya untuk merekam, Aplikasi TV akan meneruskan permintaan untuk menyetel ke saluran yang terkait dengan rekaman.
- Layanan Input TV menerima permintaan ini, merespons apakah ada resource yang sesuai atau tidak, dan melakukan tuning ke saluran tersebut.
- Kemudian, Aplikasi TV meneruskan permintaan untuk mulai merekam ke TV Input Manager.
- Layanan Input TV menerima permintaan ini dan mulai merekam.
- Layanan Input TV menyimpan data video yang sebenarnya di penyimpanannya, yang dapat berupa penyimpanan eksternal atau penyimpanan cloud.
- Saat tiba waktunya untuk menyelesaikan perekaman, Aplikasi TV akan meneruskan permintaan berhenti merekam ke Pengelola Input TV.
- Setelah menerima permintaan, Layanan Input TV akan menghentikan perekaman dan menambahkan metadata terkaitnya ke Penyedia TV sehingga Aplikasi TV dapat menampilkan rekaman kepada pengguna saat diminta.
Untuk mengetahui informasi selengkapnya tentang cara menerapkan fitur Perekaman di layanan Input TV, lihat artikel Rekaman TV ini.
Referensi yang berguna
- CDD Android dan API developer yang didokumentasikan adalah referensi definitif.
- CTS Verifier menjalankan API sebagai bagian dari program pengujian kompatibilitas. Menjalankan ini terhadap Live TV mungkin merupakan cara yang berguna untuk melihat EPG, Penelusuran, Kontrol Orang Tua, dan persyaratan lainnya dalam konteks input pihak ketiga.
- Lihat Menentukan Layanan Input TV untuk mengetahui ekspektasi developer di area ini.
Kontrol orang tua
Kontrol orang tua memungkinkan pengguna memblokir channel dan program yang tidak diinginkan, tetapi mengabaikan pemblokiran dengan memasukkan kode PIN.
Tanggung jawab untuk fungsi kontrol orang tua dibagikan di antara Aplikasi TV, layanan TV Input Manager, Penyedia TV, dan Input TV.
Kontrol orang tua bersifat wajib, dan tercakup dalam CTS Verifier.
Sejumlah negara telah menentukan sistem rating yang dapat digunakan Input TV melalui TVContentRating API. Selain itu, Input TV dapat mendaftarkan sistem rating kustomnya sendiri seperti yang ditunjukkan oleh pengujian CTS Verifier, yang memperkenalkan rating 'palsu'. Untuk negara yang memiliki sistem rating standar, produsen perangkat dianjurkan untuk menggabungkan Kontrol Orang Tua Framework Input TV dengan mekanisme lain yang mungkin disertakan.
Penyedia TV
Setiap baris saluran memiliki kolom COLUMN_LOCKED
yang digunakan untuk mengunci
saluran tertentu agar tidak dapat ditonton tanpa memasukkan kode PIN. Kolom program
COLUMN_CONTENT_RATING
ditujukan untuk ditampilkan dan tidak digunakan untuk
menerapkan kontrol orang tua.
Pengelola Input TV
Pengelola Input TV menyimpan setiap TvContentRating
yang diblokir dan
merespons isRatingBlocked()
untuk memberi tahu apakah konten dengan rating
tertentu harus diblokir.
Input TV
Input TV memeriksa apakah konten saat ini harus diblokir dengan memanggil
isRatingBlocked()
di Pengelola Input TV saat rating
konten yang ditampilkan telah berubah
(saat program atau saluran berubah), atau setelan kontrol orang tua telah berubah (di
ACTION_BLOCKED_RATINGS_CHANGED
dan
ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
). Jika konten harus
diblokir, Input TV akan menonaktifkan audio dan video
serta memberi tahu aplikasi TV bahwa konten saat ini diblokir dengan memanggil
notifyContentBlocked(TvContentRating)
. Jika konten tidak boleh
diblokir, Input TV akan mengaktifkan audio dan video serta memberi tahu Aplikasi TV
bahwa konten saat ini diizinkan dengan memanggil notifyContentAllowed()
.
Aplikasi TV
Untuk mematuhi API kontrol orang tua, sehingga membuat platform yang kompatibel, Aplikasi TV yang ada pada sistem harus menyediakan cara bagi pengguna untuk mengelola kontrol orang tua, termasuk untuk setiap rating kustom yang didaftarkan oleh aplikasi tertentu.
Aplikasi TV menampilkan UI kode PIN saat diberi tahu oleh Input TV bahwa konten saat ini diblokir atau saat pengguna mencoba melihat saluran yang diblokir.
Aplikasi TV tidak menyimpan setelan kontrol orang tua secara langsung. Saat
pengguna mengubah setelan kontrol orang tua, setiap
TvContentRating
yang diblokir akan disimpan oleh Pengelola Input TV, dan saluran
yang diblokir akan disimpan oleh Penyedia TV.
Aplikasi TV harus mendeklarasikan izin
android.permission.MODIFY_PARENTAL_CONTROLS
untuk mengubah
setelan kontrol orang tua.
Produsen perangkat dianjurkan untuk:
- Lakukan pengujian kontrol orang tua CTS Verifier terhadap aplikasi Live TV referensi untuk demonstrasi persyaratan kompatibilitas.
- Menggunakan aplikasi TV Live sebagai referensi untuk Aplikasi TV mereka sendiri: khususnya lihat ContentRatingsManager dan RatingSystemsFragment, serta cara menangani rating kustom.
HDMI-CEC
HDMI-CEC memungkinkan satu perangkat mengontrol perangkat lain, sehingga memungkinkan satu remote mengontrol beberapa peralatan di home theater. Fitur ini digunakan oleh Android TV untuk mempercepat penyiapan dan memungkinkan kontrol jarak jauh atas berbagai Input TV melalui Aplikasi TV pusat. Misalnya, fitur ini dapat mengalihkan input, mengaktifkan atau menonaktifkan perangkat, dan lainnya.
TIF Android menerapkan HDMI-CEC sebagai Layanan Kontrol HDMI sehingga produsen perangkat hanya perlu mengembangkan driver tingkat rendah yang berinteraksi dengan HAL Android TV yang ringan, sehingga logika bisnis yang lebih kompleks dapat dilewati. Dalam menyediakan implementasi standar, Android berupaya mengurangi masalah kompatibilitas dengan mengurangi implementasi yang terfragmentasi dan dukungan fitur selektif. Layanan Kontrol HDMI menggunakan layanan Android yang ada, termasuk input dan daya.
Artinya, implementasi HDMI-CEC yang ada harus didesain ulang agar dapat berinteraksi dengan TIF Android. Sebaiknya platform hardware berisi mikroprosesor untuk menerima daya CEC dan perintah lainnya.
- Bus CEC menerima perintah dari sumber yang saat ini aktif untuk beralih ke sumber lain.
- Pengemudi meneruskan perintah ke HAL HDMI-CEC.
- HAL memberi tahu semua
ActiveSourceChangeListeners
. - Layanan Kontrol HDMI diberi tahu tentang perubahan sumber melalui
ActiveSourceChangeListener
. - Layanan Pengelola Input TV menghasilkan intent untuk Aplikasi TV agar mengalihkan sumber.
- Aplikasi TV kemudian membuat Sesi Pengelola Input TV untuk Input TV
yang dialihkan dan memanggil
setMain
pada sesi tersebut. - Sesi Pengelola Input TV meneruskan informasi ini ke Input TV HDMI.
- Input TV HDMI meminta untuk menetapkan platform sideband.
- Layanan Pengelola Input TV menghasilkan perintah kontrol pemilihan rute yang sesuai kembali ke Layanan Kontrol HDMI saat platform ditetapkan.
Panduan integrasi TV
Aplikasi siaran
Karena setiap negara memiliki persyaratan khusus siaran (MHEG, Teletext, HbbTV, dan lainnya), produsen diharapkan untuk menyediakan solusi mereka sendiri untuk aplikasi siaran, misalnya:
- MHEG: stack native
- Teleteks: stack native
- HbbTV: Solusi HbbTV dari Vewd Software
Dalam rilis Android L, Android TV mengharapkan produsen perangkat menggunakan integrator sistem atau solusi Android untuk stack TV regional, meneruskan platform ke stack software TV, atau meneruskan kode kunci yang diperlukan untuk berinteraksi dengan stack lama.
Berikut cara aplikasi siaran dan Aplikasi TV berinteraksi:
- Aplikasi TV sedang difokuskan, menerima semua tombol.
- Aplikasi TV meneruskan tombol (misalnya, Tombol merah) ke perangkat Input TV.
- Perangkat Input TV terintegrasi secara internal dengan stack TV lama.
- Saat menerima kode kunci aktivasi (misalnya, Tombol merah), perangkat Input TV akan mengaktifkan aplikasi siaran.
- Aplikasi siaran mendapatkan fokus di Aplikasi TV dan menangani tindakan pengguna.
Untuk penelusuran/rekomendasi suara, aplikasi siaran dapat mendukung Penelusuran dalam aplikasi untuk penelusuran suara.