Kerangka Masukan TV

Ikon HAL TV Android

Android TV Input Framework (TIF) menyederhanakan pengiriman konten langsung ke Android TV. Android TIF menyediakan API standar bagi produsen untuk membuat modul input guna mengontrol Android TV, dan memungkinkan penelusuran TV langsung dan rekomendasi melalui metadata yang diterbitkan oleh TV Input.

Kerangka kerja ini tidak berusaha untuk menerapkan standar TV atau persyaratan regional, tetapi mempermudah produsen perangkat untuk memenuhi standar siaran TV digital regional tanpa implementasi ulang. Dokumentasi di bagian ini mungkin juga berguna bagi pengembang aplikasi pihak ketiga yang ingin membuat Input TV khusus.

Komponen

Implementasi Android TV Input Framework mencakup TV Input Manager. TIF bekerja dengan Aplikasi TV, aplikasi sistem yang tidak dapat digantikan oleh aplikasi pihak ketiga, untuk mengakses saluran tuner IP dan built-in. Aplikasi TV berkomunikasi dengan modul Input TV yang disediakan oleh produsen perangkat atau pihak lain melalui TV Input Manager.

Kerangka Masukan TV terdiri dari:

  • Penyedia TV ( com.android.providers.tv.TvProvider ): database saluran, 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 untuk berkomunikasi dengan Aplikasi TV
  • Input TV: aplikasi yang mewakili tuner fisik atau virtual dan port input
  • TV Input HAL ( tv_input module): definisi perangkat keras yang memungkinkan Masukan TV sistem mengakses perangkat keras khusus TV saat diimplementasikan
  • Kontrol Orang Tua: teknologi yang memungkinkan pemblokiran saluran dan program
  • HDMI-CEC: teknologi yang memungkinkan kendali jarak jauh berbagai perangkat melalui HDMI
  • Kerangka Tuner: kerangka kerja untuk input TV Built-in-Tuner
  • MediaCas: kerangka kerja untuk akses bersyarat
  • Tuner Resource Manager: layanan untuk mengelola sumber daya perangkat keras untuk input TV, MediaCas, dan input Tuner Bawaan

Komponen-komponen ini dibahas secara rinci di bawah ini. Lihat diagram berikut untuk tampilan detail arsitektur Kerangka Masukan Android TV.

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

Mengalir

Berikut adalah bagaimana arsitektur dilakukan:

  1. Pengguna melihat dan berinteraksi dengan Aplikasi TV, 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. TV Input Manager mengidentifikasi status Input TV untuk Aplikasi TV. Lihat Manajer Input TV di bawah untuk detail selengkapnya tentang batasan ini.

Izin

  • Hanya Input TV dan Aplikasi TV signatureOrSystem 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 satu-ke-satu melalui sesi TV Input Manager.
  • Input TV pihak ketiga memiliki akses yang dikunci paket ke database Penyedia TV dan hanya dapat MEMBACA/MENULIS ke baris paket yang cocok.
  • Input TV pihak ketiga dapat menampilkan konten mereka sendiri atau konten dari input TV passthrough dari produsen perangkat, seperti HDMI1. Mereka tidak dapat menampilkan konten dari input TV non-passthrough, seperti tuner built-in atau IPTV.
  • Izin TV_INPUT_HARDWARE untuk aplikasi Input TV perangkat keras, memberi sinyal Layanan Manajer Input TV untuk memberi tahu layanan Input TV saat boot untuk memanggil Layanan Manajer Input TV dan menambahkan Input TV-nya. Izin ini memungkinkan aplikasi Input TV perangkat keras untuk mendukung beberapa Input TV per layanan Input TV, serta dapat secara dinamis menambah dan menghapus Input TV yang didukungnya.

Penyedia TV

Basis data Penyedia TV menyimpan saluran dan program dari Input TV. Penyedia TV juga menerbitkan dan mengelola izin terkait sehingga Input TV hanya dapat melihat rekaman mereka sendiri. Misalnya, Input TV tertentu hanya dapat melihat saluran dan program yang telah disediakan dan dilarang mengakses saluran dan program Input TV lainnya.

Penyedia TV memetakan "genre siaran" ke "genre kanonik" secara internal. Masukan TV bertanggung jawab untuk mengisi "genre siaran" dengan nilai dalam standar siaran yang mendasarinya, dan bidang "genre kanonik" akan secara otomatis diisi dengan genre terkait yang benar dari android.provider.TvContract.Genres . Misalnya, dengan standar siaran ATSC A/65 dan program dengan genre 0x25 (artinya "Olahraga"), Input TV akan mengisi "genre siaran" dengan String "Olahraga" dan Penyedia TV akan mengisi bidang "genre kanonik" dengan nilai yang dipetakan android.provider.TvContract.Genres.SPORTS .

Lihat diagram di bawah untuk tampilan detail Penyedia TV.

Penyedia TV Android
Gambar 2. Penyedia Android TV

Hanya aplikasi di partisi sistem yang memiliki hak istimewa yang dapat membaca seluruh database Penyedia TV.

Input TV passthrough tidak menyimpan saluran dan program.

Selain bidang standar untuk saluran dan program, database Penyedia TV juga menawarkan bidang tipe BLOB, COLUMN_INTERNAL_PROVIDER_DATA , di setiap tabel yang mungkin digunakan oleh Input TV untuk menyimpan data arbitrer. Data BLOB tersebut dapat mencakup informasi khusus, seperti frekuensi tuner terkait, dan dapat disediakan dalam buffer protokol atau bentuk lain. Bidang yang Dapat Dicari tersedia untuk membuat saluran tertentu tidak tersedia dalam pencarian (seperti untuk memenuhi persyaratan khusus negara untuk perlindungan konten).

Contoh bidang basis data

Penyedia TV mendukung data terstruktur di 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 bidang:

  • Tampilan: Bidang tampilan berisi informasi yang mungkin ingin ditampilkan oleh aplikasi kepada pengguna, seperti nama saluran ( COLUMN_DISPLAY_NAME ) atau nomor ( COLUMN_DISPLAY_NUMBER ), atau judul program yang sedang dilihat.
  • Metadata: Ada tiga bidang untuk mengidentifikasi konten, menurut standar yang relevan, seperti ID aliran transportasi saluran ( COLUMN_TRANSPORT_STREAM_ID ), ID jaringan asli ( COLUMN_ORIGINAL_NETWORK_ID ) dan id layanan ( COLUMN_SERVICE_ID ).
  • Data internal : Bidang yang digunakan untuk Input TV secara khusus.
    Beberapa bidang, seperti COLUMN_INTERNAL_PROVIDER_DATA , adalah bidang BLOB yang dapat disesuaikan tempat Input TV dapat menyimpan metadata arbitrer tentang saluran atau programnya.
  • Bendera: Bidang bendera menunjukkan apakah saluran harus dibatasi dari penelusuran, penelusuran, atau penayangan. Ini hanya dapat diatur pada tingkat saluran. Semua program tunduk pada pengaturan pada saluran.
    • COLUMN_SEARCHABLE : Membatasi pencarian dari beberapa saluran mungkin menjadi persyaratan di wilayah tertentu. COLUMN_SEARCHABLE = 0 berarti saluran tidak boleh diekspos dalam hasil pencarian.
    • COLUMN_BROWSABLE : Hanya dapat dilihat oleh aplikasi sistem. Membatasi saluran agar tidak dijelajahi oleh aplikasi. COLUMN_BROWSABLE = 0 berarti saluran tidak boleh dimasukkan dalam daftar saluran.
    • COLUMN_LOCKED : Hanya dapat dilihat oleh aplikasi sistem. Membatasi saluran agar tidak dilihat oleh akun yang tidak valid tanpa memasukkan kode PIN. COLUMN_LOCKED = 1 berarti saluran harus dilindungi oleh kontrol orang tua.

Untuk daftar bidang yang lebih lengkap, lihat android/frameworks/base/media/java/android/media/tv/TvContract.java

Izin dan kontrol akses

Semua bidang dapat dilihat oleh siapa saja yang memiliki akses ke baris yang sesuai. Tidak ada bidang 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, dicentang pada Query, Insert, Update melalui TvProvider.java. Input TV hanya dapat mengakses informasi yang ditulisnya dan ditutup dari informasi yang diberikan oleh Input TV lainnya.
  • BACA, TULIS izin melalui AndroidManifest.xml (memerlukan persetujuan pengguna) untuk menentukan saluran yang tersedia.
  • Hanya aplikasi signatureOrSystem yang dapat memperoleh izin ACCESS_ALL_EPG_DATA untuk mengakses seluruh database.

Manajer Masukan TV

TV Input Manager menyediakan API sistem pusat ke Kerangka Input TV Android secara keseluruhan. Ini menengahi interaksi antara aplikasi dan Input TV dan menyediakan fungsionalitas kontrol orang tua. Sesi TV Input Manager harus dibuat satu-ke-satu dengan TV Inputs. TV Input Manager memungkinkan akses ke TV Input yang terpasang sehingga aplikasi dapat:

  • Buat daftar input TV dan periksa statusnya
  • Buat sesi dan kelola pendengar

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 mungkin juga telah 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 untuk menelusuri dan mencari di semua saluran dan program TV yang tersedia.

Aplikasi dapat membuat dan mendaftarkan TvInputCallback dengan android.media.tv.TvInputManager untuk dipanggil kembali pada perubahan status Input TV atau pada penambahan atau penghapusan Input TV. Misalnya, Aplikasi TV dapat bereaksi saat Input TV terputus dengan menampilkannya sebagai terputus dan mencegah pemilihannya.

TV Input Manager mengabstraksi komunikasi antara Aplikasi TV dan Input TV. Antarmuka standar TV Input Manager dan TV Input memungkinkan beberapa produsen perangkat membuat Aplikasi TV mereka sendiri sambil membantu semua Input TV pihak ketiga bekerja di semua Aplikasi TV.

Masukan TV

TV Inputs adalah aplikasi Android dalam arti mereka memiliki AndroidManifest.xml dan diinstal (melalui Play, pra-instal, atau sideload). Android TV mendukung aplikasi sistem yang telah diinstal sebelumnya, aplikasi yang ditandatangani oleh produsen perangkat, dan Input TV pihak ketiga.

Beberapa input, seperti input HDMI atau input tuner internal, hanya dapat disediakan oleh pabrikan saat mereka berbicara langsung dengan perangkat keras yang mendasarinya. Lainnya, seperti IPTV, perpindahan tempat, dan STB eksternal, dapat disediakan oleh pihak ketiga sebagai APK di Google Play Store. Setelah diunduh dan dipasang, input baru dapat dipilih dalam Aplikasi TV.

Contoh masukan passthrough

Masukan Sistem TV Android
Gambar 3. Masukan 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, ia tidak mendaftarkan saluran atau program apa pun ke Penyedia TV. Untuk mendapatkan URI yang digunakan untuk mereferensikan masukan passthrough, gunakan metode utilitas android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) . Aplikasi TV berkomunikasi dengan Manajer Input TV untuk mencapai Input TV HDMI.

Contoh tuner bawaan

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

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

Contoh masukan pihak ketiga

Masukan pihak ketiga Android TV
Gambar 5. Masukan pihak ketiga Android TV

Dalam contoh ini, Input TV STB eksternal disediakan oleh pihak ketiga. Karena Input TV tersebut tidak dapat secara langsung mengakses feed video HDMI yang masuk, input tersebut harus melalui TV Input Manager dan menggunakan Input TV HDMI yang disediakan oleh pabrikan perangkat.

Melalui TV Input Manager, STB TV Input eksternal dapat berbicara dengan HDMI TV Input dan memintanya untuk menampilkan video di HDMI1. Jadi Input TV STB dapat mengontrol TV saat Input TV HDMI yang disediakan pabrikan merender video.

Contoh gambar dalam gambar (PIP)

Acara Kunci Android TV
Gambar 6. Acara Utama Android TV

Diagram di atas menunjukkan bagaimana tombol pada remote control diteruskan ke Input TV tertentu untuk tampilan gambar dalam gambar (PIP). Penekanan tombol tersebut ditafsirkan oleh driver perangkat keras yang disediakan oleh produsen perangkat, mengonversi pindaian perangkat keras ke kode kunci Android dan meneruskannya ke saluran input Android standar InputReader dan InputDispatcher berfungsi sebagai KeyEvents . Ini pada gilirannya memicu peristiwa di Aplikasi TV jika sedang fokus.

Hanya Input TV sistem yang memenuhi syarat untuk menerima InputEvents , dan hanya jika mereka memiliki izin sistem RECEIVE_INPUT_EVENT . Input TV bertanggung jawab untuk menentukan InputEvents mana yang akan digunakan dan harus mengizinkan Aplikasi TV untuk menangani kunci yang tidak perlu digunakan.

Aplikasi TV bertanggung jawab untuk mengetahui Sistem Input TV mana yang aktif, artinya dipilih oleh pengguna, dan untuk membedakan KeyEvents yang masuk dan merutekannya ke sesi TV Input Manager yang benar, memanggil dispatchInputEvent() untuk meneruskan acara ke Input TV terkait .

Contoh masukan MHEG-5

Diagram berikut menunjukkan tampilan yang lebih mendetail tentang bagaimana KeyEvents dirutekan melalui TIF Android.

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

Ini menggambarkan aliran aplikasi tombol Merah, umum di Eropa untuk memungkinkan pengguna mengakses aplikasi interaktif di televisi mereka. Sebuah aplikasi dapat dikirimkan melalui aliran transportasi ini. Saat tombol diklik, ini memungkinkan pengguna berinteraksi dengan aplikasi siaran ini. Misalnya, Anda dapat menggunakan aplikasi siaran ini untuk mengakses halaman web terkait atau skor olahraga.

Lihat bagian Aplikasi siaran untuk mempelajari bagaimana aplikasi siaran berinteraksi dengan Aplikasi TV.

Dalam contoh ini:

  1. Aplikasi TV dalam fokus dan menerima semua kunci.
  2. KeyEvents (misalnya tombol Merah) diteruskan ke Input TV aktif sebagai InputEvents.
  3. Input TV sistem terintegrasi dengan tumpukan MHEG-5 dan memiliki izin sistem RECEIVE_INPUT_EVENT .
  4. Saat menerima kode kunci aktivasi (misalnya tombol Merah), Input TV mengaktifkan aplikasi siaran.
  5. Input TV menggunakan KeyEvents sebagai InputEvents dan aplikasi siaran adalah fokus dan menangani InputEvents hingga ditutup.

Catatan : Input TV pihak ketiga tidak pernah menerima kunci.

Masukan TV HAL

TV Input HAL membantu pengembangan Input TV untuk mengakses perangkat keras khusus TV. Seperti HAL Android lainnya, TV Input HAL ( tv_input ) tersedia di pohon sumber AOSP dan vendor mengembangkan implementasinya.

Aplikasi TV

Aplikasi TV sistem menyajikan konten TV langsung kepada pengguna. Aplikasi TV referensi (TV Langsung) disediakan di samping platform Android, yang dapat digunakan apa adanya, disesuaikan, diperluas, atau diganti oleh produsen perangkat. Kode sumber tersedia di Android Open Source Project, dan Anda dapat memulainya di artikel aplikasi Referensi TV .

Produsen perangkat dapat memperluas Aplikasi TV mereka untuk menerapkan produsen perangkat atau fitur khusus negara, namun ini tidak dalam cakupan TIF atau Aplikasi TV referensi.

Minimal, Aplikasi TV sistem perlu menangani tugas-tugas berikut:

Pengaturan dan konfigurasi

  • Deteksi Otomatis Input TV
  • Biarkan Input TV memulai penyiapan saluran
  • Kontrol pengaturan orang tua
  • Edit saluran

Melihat

  • Akses dan navigasikan semua saluran TV
  • Akses bilah informasi program TV
  • Tampilkan data Panduan Pemrograman Elektronik (EPG)
  • Mendukung beberapa trek audio dan subtitle
  • Berikan tantangan PIN kontrol orang tua
  • Izinkan overlay UI Input TV untuk standar TV (HbbTV, dll.)
  • Isi hasil pencarian untuk saluran dan program TV
  • Tampilkan kartu tautan aplikasi
  • Mendukung API timeshifting
  • Tangani fungsionalitas DVR dan dukung API perekaman TV

Kumpulan fitur ini akan meningkat sejalan dengan versi Android baru di mana platform TIF API diperluas. CTS Verifier menyediakan cakupan uji kompatibilitas.

Dukungan untuk Input TV pihak ketiga

Android TV menyediakan API pengembang untuk masukan TV pihak ketiga, memungkinkan aplikasi yang diinstal untuk mengirimkan saluran perangkat lunak ke dalam pengalaman TV langsung. Untuk memastikan implementasi perangkat Android yang kompatibel, Aplikasi TV sistem memiliki beberapa tanggung jawab terkait menampilkan masukan dan saluran TV pihak ketiga kepada pengguna. Aplikasi TV Langsung referensi menyediakan implementasi yang kompatibel; jika mengganti Aplikasi TV sistem, produsen perangkat harus memastikan aplikasi mereka sendiri menyediakan kompatibilitas yang serupa, untuk memenuhi harapan pengembang di semua perangkat Android TV.

Aplikasi TV sistem harus menampilkan input pihak ketiga di samping layanan TV langsung default perangkat. Janji dari API pengembang adalah bahwa pengguna akan dapat menemukan saluran (setelah diinstal) dalam pengalaman TV standar mereka.

Diferensiasi visual antara saluran bawaan dan saluran pihak ketiga diperbolehkan, seperti yang ditentukan di bagian Aplikasi TV pada CDD Android.

Bagian berikut menunjukkan bagaimana aplikasi Live TV memenuhi persyaratan CDD.

Pengaturan saluran baru

Penambahan input/saluran pihak ketiga baru dimulai dengan pengguna menemukan dan menginstal Input TV dari toko aplikasi, seperti Google Play.

Beberapa input TV pihak ketiga secara otomatis menambahkan saluran ke database TvProvider. Namun sebagian besar akan menyediakan aktivitas Penyiapan untuk memungkinkan pengguna menyiapkan saluran mereka, memberikan detail login, dan tindakan lainnya. Aplikasi TV sistem perlu memastikan pengguna dapat mengaktifkan aktivitas Pengaturan ini, itulah sebabnya CDD memerlukan input pihak ketiga berupa tindakan navigasi minimal dari Aplikasi TV utama.

Aplikasi TV Langsung referensi menyediakan menu Sumber Saluran untuk mengakses input.

Pergi ke pengaturan
Gambar 8. Buka Pengaturan .

Buka sumber Saluran di Pengaturan
Gambar 9. Buka Sumber saluran di Pengaturan.

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

Tambahkan saluran dari sumber Anda
Gambar 11. Tambahkan saluran dari sumber Anda.

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

Pemberitahuan yang menunjukkan sumber saluran baru tersedia.
Gambar 12. Pemberitahuan yang menunjukkan sumber saluran baru tersedia.

Jika pengguna mengambil tindakan melalui notifikasi, mereka dapat memilih untuk mengatur sumber mereka seperti yang terlihat pada Gambar 10.

Lihat Menentukan Layanan Input TV Anda untuk mengetahui ekspektasi pengembang di area ini.

Sesuaikan daftar saluran

Produsen perangkat dapat menyediakan UI untuk menyembunyikan saluran tertentu dan memungkinkan pengguna mengelola EPG mereka sendiri. TV langsung termasuk fasilitas ini.

Buka daftar saluran di Pengaturan.
Gambar 13. Buka daftar saluran di Pengaturan .

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

EPG

Pengembang masukan pihak ketiga harus yakin bahwa pengguna dapat dengan mudah menavigasi ke saluran mereka selama penggunaan umum, di semua perangkat Android TV yang kompatibel.

Saluran dari masukan pihak ketiga harus disajikan sebagai bagian dari pengalaman TV langsung standar perangkat EPG. Pemisahan visual atau kategori terpisah untuk saluran pihak ketiga dapat digunakan (lihat bagian Aplikasi TV di CDD Android) —apa 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. Live TV menyediakan implementasi (lihat com.android.tv.search.TvProviderSearch ) yang memberikan hasil dari input pihak ketiga (diperlukan untuk kompatibilitas platform) serta input bawaan.

Pergeseran waktu

Untuk perangkat di Android 6.0 dan yang lebih baru, Aplikasi TV harus mendukung API pergeseran waktu kerangka kerja Android . Selain itu, produsen harus menerapkan kontrol pemutaran di Aplikasi TV, yang memungkinkan pengguna untuk menjeda, melanjutkan, memundurkan, dan mempercepat pemutaran.

Untuk Input TV yang mendukung pergeseran waktu, Aplikasi TV perlu menampilkan kontrol pemutaran.

Kontrol pemutaran
Gambar 15. Kontrol pemutaran

DVR

Untuk perangkat di Android 7.0 dan yang lebih baru, Aplikasi TV harus mendukung API perekaman TV kerangka Android , untuk mendukung, membuat daftar, dan memutar program yang direkam.

Hal ini memungkinkan produsen perangkat untuk menyambungkan subsistem DVR mereka ke TIF dan secara dramatis mengurangi upaya integrasi yang diperlukan untuk mengaktifkan atau mengintegrasikan fungsionalitas DVR pada perangkat TV. Ini juga memungkinkan pihak ketiga untuk menyediakan sistem DVR aftermarket yang dapat dicolokkan ke perangkat Android TV.

Selain merekam konten langsung, Aplikasi TV juga menangani konflik sumber daya. Misalnya, jika perangkat memiliki dua tuner, perangkat dapat merekam dua program sekaligus. Jika pengguna meminta untuk merekam tiga, Aplikasi TV harus menangani konflik dan harus memunculkan pemberitahuan atau permintaan agar 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 satu rangkaian saat mereka meminta untuk merekam satu episode.

Lihat diagram berikut untuk melihat kemungkinan penerapan 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 berapa banyak tuner yang tersedia sehingga Aplikasi TV dapat menangani kemungkinan konflik sumber daya.
  2. Aplikasi TV menerima permintaan yang dimulai oleh pengguna untuk merekam program TV.
  3. Aplikasi TV menyimpan jadwal perekaman dalam database internalnya.
  4. Saat tiba waktunya untuk merekam, Aplikasi TV akan mengirimkan permintaan untuk menyetel saluran yang terkait dengan rekaman tersebut.
  5. Layanan Input TV menerima permintaan ini, merespons dengan apakah ada sumber daya yang sesuai atau tidak, dan menyetel saluran.
  6. Kemudian Aplikasi TV meneruskan permintaan untuk mulai merekam ke Manajer Input TV.
  7. Layanan Input TV menerima permintaan ini dan mulai merekam.
  8. Layanan Input TV menyimpan data video aktual dalam penyimpanannya, yang dapat berupa penyimpanan eksternal atau penyimpanan cloud.
  9. Saat tiba waktunya untuk menyelesaikan perekaman, Aplikasi TV meneruskan permintaan berhenti merekam ke Manajer Input TV.
  10. Setelah Layanan Input TV menerima permintaan, layanan akan menghentikan perekaman dan menambahkan metadata terkait ke Penyedia TV sehingga Aplikasi TV dapat menampilkan rekaman kepada pengguna saat diminta.

Untuk informasi selengkapnya tentang menerapkan fitur Perekaman di layanan Input TV Anda, lihat artikel Perekaman TV ini.

Sumber daya yang berguna

  • CDD Android dan API pengembang yang didokumentasikan adalah referensi definitif.
  • CTS Verifier menjalankan API sebagai bagian dari program pengujian kompatibilitas. Menjalankan ini di TV Langsung mungkin merupakan cara yang berguna untuk melihat EPG, Penelusuran, Kontrol Orang Tua, dan persyaratan lainnya dalam konteks masukan pihak ketiga.
  • Lihat Menentukan Layanan Input TV Anda untuk mengetahui ekspektasi pengembang di area ini.

Bimbingan orang tua

Kontrol orang tua memungkinkan pengguna memblokir saluran dan program yang tidak diinginkan, tetapi melewati pemblokiran dengan memasukkan kode PIN.

Tanggung jawab untuk fungsi kontrol orang tua dibagi di antara Aplikasi TV, layanan Manajer Input TV, Penyedia TV, dan Input TV.

Kontrol orang tua adalah wajib, dan dicakup oleh CTS Verifier.

Sejumlah negara telah menetapkan sistem rating yang dapat digunakan TV Inputs melalui TVContentRating API . Selain itu, Input TV dapat mendaftarkan sistem peringkat khusus mereka sendiri seperti yang ditunjukkan oleh tes Verifier CTS, yang memperkenalkan peringkat 'palsu'. Untuk negara yang memiliki sistem peringkat standar, produsen perangkat didorong untuk menggabungkan Kontrol Orang Tua Kerangka Masukan TV dengan mekanisme lain yang mungkin mereka sertakan.

Penyedia TV

Setiap baris saluran memiliki bidang COLUMN_LOCKED yang digunakan untuk mengunci saluran tertentu agar tidak ditayangkan tanpa memasukkan kode PIN. Bidang program COLUMN_CONTENT_RATING dimaksudkan untuk ditampilkan dan tidak digunakan untuk menerapkan kontrol orang tua.

Manajer Masukan TV

TV Input Manager menyimpan setiap TvContentRating diblokir dan merespons isRatingBlocked() untuk memberi tahu apakah konten dengan rating yang diberikan harus diblokir.

Masukan TV

Input TV memeriksa apakah konten saat ini harus diblokir dengan memanggil isRatingBlocked() di TV Input Manager ketika peringkat konten yang ditampilkan telah berubah (pada perubahan program atau saluran), atau pengaturan kontrol orang tua telah berubah (pada ACTION_BLOCKED_RATINGS_CHANGED dan ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) . Jika konten harus diblokir, Input TV menonaktifkan audio dan video dan memberi tahu aplikasi TV bahwa konten saat ini diblokir dengan memanggil notifyContentBlocked(TvContentRating) . Jika konten tidak boleh diblokir, Input TV mengaktifkan audio dan video dan memberi tahu Aplikasi TV bahwa konten saat ini diizinkan dengan memanggil notifyContentAllowed() .

Aplikasi TV

Untuk menghormati API kontrol orang tua, dan oleh karena itu membuat platform yang kompatibel, Aplikasi TV sistem perlu menyediakan cara bagi pengguna untuk mengelola kontrol orang tua, termasuk untuk setiap peringkat khusus yang didaftarkan oleh aplikasi tertentu.

Aplikasi TV menampilkan UI kode PIN saat diberi tahu oleh TV Input bahwa konten saat ini diblokir atau saat pengguna mencoba melihat saluran yang diblokir.

Aplikasi TV tidak secara langsung menyimpan pengaturan kontrol orang tua. Saat pengguna mengubah pengaturan kontrol orang tua, setiap TvContentRating yang diblokir disimpan oleh TV Input Manager, dan saluran yang diblokir disimpan oleh Penyedia TV.

Aplikasi TV perlu mendeklarasikan izin android.permission.MODIFY_PARENTAL_CONTROLS untuk mengubah pengaturan kontrol orang tua.

Produsen perangkat didorong untuk:

  • Lakukan uji kontrol orang tua Verifier CTS terhadap aplikasi TV Langsung referensi untuk mendemonstrasikan persyaratan kompatibilitas.
  • Gunakan aplikasi TV Langsung sebagai referensi untuk Aplikasi TV mereka sendiri: khususnya lihat sumber ContentRatingsManager dan RatingSystemsFragment , dan cara mereka menangani peringkat khusus.

HDMI-CEC

HDMI-CEC memungkinkan satu perangkat untuk mengontrol yang lain, sehingga memungkinkan satu remote untuk mengontrol beberapa peralatan di home theater. Ini digunakan oleh Android TV untuk mempercepat pengaturan dan memungkinkan kontrol jarak jauh atas berbagai Input TV melalui Aplikasi TV pusat. Misalnya, ini dapat mengganti input, menyalakan atau mematikan perangkat, dan banyak lagi.

Android TIF mengimplementasikan HDMI-CEC sebagai Layanan Kontrol HDMI sehingga produsen perangkat hanya perlu mengembangkan driver tingkat rendah yang berinteraksi dengan Android TV HAL yang ringan, melewatkan logika bisnis yang lebih kompleks. 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.

Ini berarti implementasi HDMI-CEC yang ada perlu didesain ulang agar dapat dioperasikan dengan TIF Android. Kami merekomendasikan platform perangkat keras 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 yang berbeda.
  2. Pengemudi meneruskan perintah ke HDMI-CEC HAL.
  3. HAL memberi tahu semua ActiveSourceChangeListeners .
  4. Layanan Kontrol HDMI diberi tahu tentang perubahan sumber melalui ActiveSourceChangeListener .
  5. Layanan TV Input Manager menghasilkan maksud untuk Aplikasi TV untuk mengalihkan sumber.
  6. Aplikasi TV kemudian membuat Sesi Manajer Input TV untuk Input TV yang dialihkan dan memanggil setMain pada sesi itu.
  7. Sesi Manajer Input TV meneruskan informasi ini ke Input TV HDMI.
  8. Input TV HDMI meminta untuk mengatur permukaan sideband.
  9. Layanan Manajer Input TV menghasilkan perintah kontrol perutean yang sesuai kembali ke Layanan Kontrol HDMI saat permukaan disetel.

Pedoman integrasi TV

Aplikasi siaran

Karena setiap negara memiliki persyaratan khusus siaran (MHEG, Teletext, HbbTV, dan lainnya), produsen diharapkan menyediakan solusi mereka sendiri untuk aplikasi siaran, misalnya:

  • MHEG: tumpukan asli
  • Teleteks: tumpukan asli
  • HbbTV: Solusi HbbTV dari Vewd Software

Dalam rilis Android L, Android TV mengharapkan produsen perangkat untuk menggunakan integrator sistem atau solusi Android untuk tumpukan TV regional, meneruskan permukaan ke tumpukan perangkat lunak TV, atau meneruskan kode kunci yang diperlukan untuk berinteraksi dengan tumpukan lama.

Berikut cara aplikasi siaran dan Aplikasi TV berinteraksi:

  1. Aplikasi TV dalam fokus, menerima semua tombol.
  2. Aplikasi TV meneruskan tombol (misalnya tombol Merah) ke perangkat Input TV.
  3. Perangkat Input TV terintegrasi secara internal dengan tumpukan TV lama.
  4. Saat menerima kode kunci aktivasi (misalnya tombol Merah), perangkat Input TV mengaktifkan aplikasi siaran.
  5. Aplikasi siaran mengambil fokus di Aplikasi TV dan menangani tindakan pengguna.

Untuk pencarian/rekomendasi suara, aplikasi siaran dapat mendukung pencarian dalam aplikasi untuk pencarian suara.