Framework Input TV

Ikon HAL Android TV

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.

Ringkasan arsitektur TIF Android
Gambar 1. Arsitektur Framework Input Android TV (TIF)

Aliran

Berikut cara penerapan arsitektur:

  1. Pengguna melihat dan berinteraksi dengan Aplikasi TV, sebuah aplikasi sistem yang tidak dapat digantikan oleh aplikasi pihak ketiga.
  2. Aplikasi TV menampilkan konten AV dari Input TV.
  3. 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.

Penyedia Android TV
Gambar 2. Penyedia Android 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, seperti COLUMN_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 izin ACCESS_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

Input Sistem Android TV
Gambar 3. Input Sistem Android TV

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

Input Tuner Bawaan Android TV
Gambar 4. Input Tuner Bawaan Android TV

Dalam contoh ini, Input TV Tuner Bawaan yang disediakan oleh produsen perangkat dipercaya dan memiliki akses penuh ke Penyedia TV.

Contoh input pihak ketiga

Input pihak ketiga Android TV
Gambar 5. Input pihak ketiga Android TV

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)

Peristiwa Tombol Android TV
Gambar 6. KeyEvents Android TV

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.

Contoh tombol Merah Android TV
Gambar 7. Contoh tombol Merah Android TV

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:

  1. Aplikasi TV berada dalam fokus dan menerima semua kunci.
  2. KeyEvents (misalnya, tombol Merah) diteruskan ke Input TV aktif sebagai InputEvents.
  3. Input TV sistem terintegrasi dengan stack MHEG-5 dan memiliki izin sistem RECEIVE_INPUT_EVENT.
  4. Saat menerima kode tombol aktivasi (misalnya, tombol Merah), Input TV mengaktifkan aplikasi siaran.
  5. Input TV menggunakan KeyEvents sebagai InputEvents dan aplikasi siaran menjadi fokus dan menangani InputEvents 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.

Buka Setelan
Gambar 8. Buka Setelan.

Buka Sumber saluran di Setelan
Gambar 9. Buka Sumber saluran di Setelan.

Pilih sumber Anda dari daftar.
Gambar 10. Pilih sumber Anda dari daftar.

Menambahkan channel dari sumber Anda
Gambar 11. Tambahkan channel dari sumber Anda.

Selain itu, kartu notifikasi ditampilkan di bagian atas menu Aplikasi TV setelah TvInput baru diinstal, untuk mengarahkan pengguna langsung ke Penyiapan:

Notifikasi yang menunjukkan bahwa sumber saluran baru tersedia.
Gambar 12. Notifikasi yang menampilkan sumber saluran baru tersedia.

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.

Buka daftar saluran di Setelan.
Gambar 13. Buka daftar saluran di Setelan.

Sesuaikan daftar saluran Anda.
Gambar 14. Sesuaikan daftar channel Anda.

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.

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.

Kontrol pemutaran
Gambar 15. 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.

Perekaman video digital di Android TV
Gambar 16. Perekaman video digital di Android TV

  1. Layanan Input TV memberi tahu Aplikasi TV jumlah tuner yang tersedia sehingga Aplikasi TV dapat menangani kemungkinan konflik resource.
  2. Aplikasi TV menerima permintaan yang dimulai pengguna untuk merekam program TV.
  3. Aplikasi TV menyimpan jadwal perekaman di database internalnya.
  4. Saat tiba waktunya untuk merekam, Aplikasi TV akan meneruskan permintaan untuk menyetel ke saluran yang terkait dengan rekaman.
  5. Layanan Input TV menerima permintaan ini, merespons apakah ada resource yang sesuai atau tidak, dan melakukan tuning ke saluran tersebut.
  6. Kemudian, Aplikasi TV meneruskan permintaan untuk mulai merekam ke TV Input Manager.
  7. Layanan Input TV menerima permintaan ini dan mulai merekam.
  8. Layanan Input TV menyimpan data video yang sebenarnya di penyimpanannya, yang dapat berupa penyimpanan eksternal atau penyimpanan cloud.
  9. Saat tiba waktunya untuk menyelesaikan perekaman, Aplikasi TV akan meneruskan permintaan berhenti merekam ke Pengelola Input TV.
  10. 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.

Integrasi CEC di Android TV
Gambar 17. Integrasi CEC di Android TV

  1. Bus CEC menerima perintah dari sumber yang saat ini aktif untuk beralih ke sumber lain.
  2. Pengemudi meneruskan perintah ke HAL HDMI-CEC.
  3. HAL memberi tahu semua ActiveSourceChangeListeners.
  4. Layanan Kontrol HDMI diberi tahu tentang perubahan sumber melalui ActiveSourceChangeListener.
  5. Layanan Pengelola Input TV menghasilkan intent untuk Aplikasi TV agar mengalihkan sumber.
  6. Aplikasi TV kemudian membuat Sesi Pengelola Input TV untuk Input TV yang dialihkan dan memanggil setMain pada sesi tersebut.
  7. Sesi Pengelola Input TV meneruskan informasi ini ke Input TV HDMI.
  8. Input TV HDMI meminta untuk menetapkan platform sideband.
  9. 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:

  1. Aplikasi TV sedang difokuskan, menerima semua tombol.
  2. Aplikasi TV meneruskan tombol (misalnya, Tombol merah) ke perangkat Input TV.
  3. Perangkat Input TV terintegrasi secara internal dengan stack TV lama.
  4. Saat menerima kode kunci aktivasi (misalnya, Tombol merah), perangkat Input TV akan mengaktifkan aplikasi siaran.
  5. 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.