Layanan kontrol HDMI-CEC

Standar High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) memungkinkan produk konsumen multimedia berkomunikasi dan bertukar informasi satu sama lain. HDMI-CEC mendukung banyak fitur, seperti Remote Control Passthrough dan System Audio Control, tetapi salah satu fitur yang paling populer adalah One Touch Play. Putar Sekali Sentuh memungkinkan perangkat sumber media menyalakan TV dan mengalihkan port inputnya secara otomatis, sehingga Anda tidak perlu mencari remote TV untuk beralih dari Chromecast ke pemutar Blu-ray.

Dengan Android 12, kontrol daya layar yang terhubung ke HDMI selaras dengan kontrol daya layar internal. Saat perangkat pemutaran HDMI aktif, perangkat akan mencoba mengaktifkan TV yang terhubung dan menjadi sumber aktif saat ini melalui Pemutaran Sekali Sentuh HDMI CEC. Jika perangkat dalam mode tidur saat menjadi sumber aktif saat ini, perangkat akan mencoba mematikan TV yang terhubung.

Dukungan HDMI-CEC umumnya bersifat opsional. Namun, sebagian besar produsen telah mengadopsi HDMI-CEC sehingga perangkat mereka dapat berfungsi dengan perangkat perusahaan lain. Setiap produsen menerapkan standar HDMI-CEC dengan cara yang berbeda, sehingga perangkat tidak selalu saling memahami dan fitur yang didukung bervariasi antarperangkat. Karena perbedaan ini, konsumen tidak dapat dengan aman mengasumsikan bahwa dua produk yang mengklaim dukungan CEC sepenuhnya kompatibel.

Dukungan untuk HDMI-CEC 2.0 membantu meningkatkan kompatibilitas antara perangkat HDMI jika perangkat pengirim dan penerima mendukung versi standar ini.

Solusi

Dengan diperkenalkannya Framework Input Android TV (TIF), HDMI-CEC menyatukan semua perangkat yang terhubung dan meminimalkan masalah kompatibilitas. Android telah membuat layanan sistem yang disebut HdmiControlService untuk mengatasi masalah ini.

Dengan menawarkan HdmiControlService sebagai bagian dari ekosistem Android, Android berharap dapat menyediakan:

  • Penerapan HDMI-CEC standar untuk semua produsen, yang akan mengurangi ketidakcocokan perangkat. Sebelumnya, produsen harus mengembangkan sendiri penerapan HDMI-CEC atau menggunakan solusi pihak ketiga.
  • Layanan yang telah diuji dengan baik terhadap berbagai perangkat HDMI-CEC yang sudah ada di pasaran. Android telah melakukan riset yang ketat tentang masalah kompatibilitas yang ditemukan di antara produk dan mengumpulkan saran yang berguna dari para pelaksana perangkat yang berpengalaman dalam teknologi ini. Layanan CEC dirancang untuk menjaga keseimbangan yang sehat antara standar dan modifikasi pada standar tersebut sehingga dapat berfungsi dengan produk yang sudah digunakan orang.

Desain keseluruhan

HdmiControlService terhubung dengan sistem lainnya seperti TV Input Framework (TIF), layanan Audio, dan layanan Daya untuk menerapkan berbagai fitur yang ditentukan standar.

Lihat diagram berikut untuk penggambaran peralihan dari pengontrol CEC kustom ke penerapan hardware abstraction layer (HAL) HDMI-CEC yang lebih sederhana.

Diagram yang menunjukkan cara HDMI-CEC diimplementasikan sebelum dan setelah Android 5.0

Gambar 1. Penggantian Layanan Kontrol HDMI

Implementasi

Lihat diagram berikut untuk melihat layanan kontrol HDMI secara mendetail.

Gambar yang menunjukkan detail layanan Kontrol HDMI

Gambar 2. Detail Layanan Kontrol HDMI

Berikut adalah elemen utama untuk penerapan HDMI-CEC Android yang tepat:

  • Class pengelola HdmiControlManager menyediakan API untuk aplikasi istimewa. Layanan sistem seperti layanan TV Input Manager dan layanan Audio dapat menggunakan layanan secara langsung.
  • Layanan ini dirancang untuk memungkinkan hosting lebih dari satu jenis perangkat logis.
  • HDMI-CEC terhubung dengan hardware melalui lapisan abstraksi hardware (HAL) untuk menyederhanakan penanganan perbedaan protokol dan mekanisme pensinyalan antarperangkat. Definisi HAL tersedia bagi produsen perangkat untuk digunakan dalam menerapkan lapisan HAL.

Catatan: Produsen perangkat harus menambahkan baris berikut ke PRODUCT_COPY_FILES di device.mk.

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml

Bergantung pada apakah perangkat Anda adalah perangkat penerima HDMI atau perangkat sumber HDMI, produsen perangkat perlu menyetel ro.hdmi.device_type di device.mk agar HdmiControlService berfungsi dengan benar.

Untuk perangkat sumber HDMI, seperti perangkat Over the Top (OTT) atau Set-top box (STB), tetapkan:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Untuk perangkat sink HDMI, seperti TV panel, tetapkan:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Pengontrol CEC eksklusif yang disediakan produsen perangkat tidak dapat berjalan bersama dengan HdmiControlService. Fitur ini harus dinonaktifkan atau dihapus. Persyaratan umum untuk hal ini berasal dari kebutuhan untuk menangani perintah khusus produsen. Handler perintah khusus produsen harus dimasukkan ke dalam layanan dengan memperluas/memodifikasinya. Tugas ini diserahkan kepada produsen perangkat dan tidak ditentukan oleh Android. Perhatikan bahwa setiap perubahan yang dilakukan di layanan untuk perintah khusus produsen tidak boleh mengganggu cara perintah standar ditangani atau perangkat tidak akan kompatibel dengan Android.
  • Akses ke layanan HDMI-CEC dilindungi dengan tingkat perlindungan SignatureOrSystem. Hanya komponen sistem atau aplikasi yang ditempatkan di /system/priv-app yang dapat mengakses layanan. Hal ini dilakukan untuk melindungi layanan dari penyalahgunaan oleh aplikasi dengan niat jahat.

Android mendukung jenis TV/Display(0), Playback device(4) yang dapat mengeluarkan perintah One Touch Play untuk menjadi sumber aktif dan Audio System (5) yang menangani mode audio sistem dan ARC. Jenis perangkat lain (Tuner dan Perekam) saat ini tidak didukung.

HAL HDMI-CEC

API HAL HDMI-CEC memungkinkan HdmiControlService menggunakan resource hardware untuk mengirim/menerima perintah HDMI-CEC, mengonfigurasi setelan yang diperlukan, dan (opsional) berkomunikasi dengan mikroprosesor di platform yang mendasarinya yang akan mengambil alih kontrol CEC saat sistem Android dalam mode standby.

Versi Fitur File HAL
1.0 Konfigurasi data HAL (alamat, fitur). Mengirim perintah HDMI-CEC. Mendaftarkan callback untuk menerima perintah HDMI-CEC dan peristiwa hotplug. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 Memperkenalkan jenis HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Pengujian

Implementasi HDMI-CEC pada perangkat diuji dan diverifikasi melalui pengujian CTS sesuai dengan dokumentasi CTS HDMI-CEC.

HDMI-CEC 2.0

Perangkat sumber (pemutaran) dan sink (panel TV) Android mendukung HDMI-CEC 2.0. HDMI-CEC 2.0 menawarkan interoperabilitas yang lebih baik antara perangkat HDMI, peningkatan pada Penerusan Remote Control, dan pengujian sertifikasi yang lebih ekstensif. Secara umum, interaksi HDMI-CEC 2.0 dengan perangkat lain lebih efisien, sehingga menghasilkan traffic HDMI-CEC yang lebih sedikit serta interaksi yang lebih cepat.

Agar perangkat mendukung HDMI-CEC 2.0, konfigurasi perangkat dan pengguna harus disetel untuk menggunakan HDMI-CEC 2.0. Implementasi HAL juga harus melaporkan dukungan untuk HDMI-CEC 2.0 dalam panggilan ke IHdmiCec#getCecVersion.

Konfigurasi CEC

Perilaku HDMI-CEC dapat dikonfigurasi pada waktu build (oleh OEM menggunakan RRO) dan waktu proses (oleh HdmiControlManager @SystemApi).

Contoh setelan HDMI-CEC:

Setelan Opsi
Apakah HDMI-CEC diaktifkan atau dinonaktifkan. Aktif
Nonaktif
Cakupan pesan kontrol daya HDMI-CEC yang dikirim oleh perangkat pemutaran. Khusus TV
Ke TV dan Sistem Audio
Siaran
Tidak Ada

Untuk setiap setelan yang saat ini tersedia dan opsi yang diizinkan dapat dikueri oleh aplikasi saat runtime.