Standar High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) memungkinkan produk konsumen multimedia untuk berkomunikasi dan bertukar informasi satu sama lain. HDMI-CEC mendukung banyak fitur, seperti Remote Control Passthrough dan System Audio Control, tetapi salah satu yang paling populer adalah One Touch Play. One Touch Play memungkinkan perangkat sumber media menyalakan TV dan mengalihkan port inputnya secara otomatis, sehingga Anda tidak perlu mencari TV untuk beralih dari Chromecast ke pemutar Blu-ray.
Dengan Android 12, kontrol daya layar yang terhubung ke HDMI selaras dengan daya layar internal. Saat perangkat pemutaran HDMI aktif, perangkat akan mencoba untuk mengaktifkan TV yang terhubung dan menjadi sumber aktif saat ini melalui HDMI CEC One Touch Play. Jika perangkat beralih ke mode tidur saat menjadi sumber aktif saat ini, perangkat akan mencoba menonaktifkan TV yang terhubung.
Mendukung HDMI-CEC umumnya bersifat opsional. Namun, sebagian besar produsen telah mengadopsi HDMI-CEC sehingga perangkat mereka berfungsi dengan perangkat perusahaan lain. Setiap produsen menerapkan HDMI-CEC standar dengan cara yang berbeda, sehingga perangkat tidak selalu memahami satu sama lain dan fitur bervariasi di antara perangkat. Karena varian ini, konsumen tidak dapat dengan aman menganggap bahwa dua produk yang mengklaim dukungan CEC sepenuhnya kompatibel.
Dukungan untuk HDMI-CEC 2.0 membantu meningkatkan kompatibilitas antar 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
mengurangi {i>pain point <i}ini.
Dengan menawarkan HdmiControlService
sebagai bagian dari ekosistem
Android, Android berharap dapat memberikan:
- Penerapan HDMI-CEC standar untuk semua produsen, yang akan mengurangi inkompatibilitas perangkat. Sebelumnya, produsen harus mengembangkan implementasi HDMI-CEC mereka sendiri atau menggunakan solusi pihak ketiga.
- Layanan yang telah diuji dengan baik terhadap banyak perangkat HDMI-CEC yang sudah ada di pasar. Android telah melakukan penelitian ketat tentang kompatibilitas masalah yang ditemukan pada produk dan mengumpulkan saran yang berguna dari perangkat para pelaksana yang berpengalaman dalam teknologi tersebut. Layanan CEC dirancang untuk menjaga keseimbangan yang sehat antara standar dan modifikasi pada standar itu sehingga bahwa ia bekerja dengan produk yang sudah digunakan orang-orang.
Desain keseluruhan
HdmiControlService
terhubung dengan seluruh sistem seperti
TV Input Framework (TIF), Layanan audio, dan Layanan daya untuk mengimplementasikan
berbagai fitur yang ditentukan standar.
Lihat diagram berikut untuk penggambaran tombol dari CEC kustom pengontrol ke implementasi abstraksi perangkat keras HDMI-CEC yang lebih sederhana {i>layer<i} (HAL).

Gambar 1. Layanan Kontrol HDMI penggantian
Implementasi
Lihat diagram berikut untuk mengetahui tampilan mendetail layanan kontrol HDMI.

Gambar 2. Detail Layanan Kontrol HDMI
Berikut adalah komponen utama untuk implementasi HDMI-CEC Android yang tepat:
- Class pengelola
HdmiControlManager
menyediakan aplikasi dengan hak istimewa dengan API. Layanan sistem seperti layanan TV Input Manager dan layanan Audio bisa langsung menggunakan layanan. - Layanan ini dirancang untuk memungkinkan hosting lebih dari satu jenis perangkat seluler.
- HDMI-CEC terhubung dengan hardware melalui lapisan abstraksi hardware (HAL) untuk menyederhanakan penanganan perbedaan protokol dan mekanisme pensinyalan antar perangkat. Definisi HAL tersedia untuk produsen perangkat yang akan digunakan untuk 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
Tergantung apakah perangkat Anda adalah perangkat sink HDMI atau perangkat sumber HDMI,
produsen perangkat perlu menetapkan ro.hdmi.device_type
di
device.mk
agar HdmiControlService
berfungsi dengan benar.
Untuk perangkat sumber HDMI, seperti perangkat Over the Top (OTT) atau Dekoder (STB), setel:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Untuk perangkat sink HDMI, seperti TV panel, setel:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Pengontrol CEC eksklusif yang disediakan produsen perangkat tidak dapat digunakan bersama
dengan
HdmiControlService
. Opsi ini harus dinonaktifkan atau dihapus. Persyaratan umum untuk hal ini berasal dari kebutuhan untuk menangani perintah khusus produsen. Pengendali perintah khusus produsen harus digabungkan ke dalam layanan dengan memperluas/mengubahnya. Pekerjaan ini diserahkan ke perangkat produsen dan tidak ditentukan oleh Android. Perhatikan bahwa setiap perubahan yang dilakukan dalam layanan untuk perintah khusus produsen tidak boleh mengganggu cara perintah standar ditangani atau perangkat tidak akan kompatibel dengan Android. - Akses ke layanan HDMI-CEC dijaga dengan tingkat perlindungan
SignatureOrSystem
. Hanya komponen sistem atau aplikasi yang ditempatkan di/system/priv-app
yang dapat mengakses layanan. Hal ini 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 agar menjadi aktif
sumber dan Audio System (5)
yang menangani mode audio sistem dan ARC.
Jenis perangkat lainnya (Tuner dan Perekam Suara) saat ini tidak didukung.
HAL HDMI-CEC
HDMI-CEC HAL API memungkinkan HdmiControlService
menggunakan
sumber daya perangkat keras untuk mengirim/menerima
perintah HDMI-CEC, mengkonfigurasi pengaturan yang diperlukan,
dan (opsional) berkomunikasi dengan mikroprosesor di platform yang mendasari 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. Daftarkan 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 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 antarperangkat HDMI, peningkatan pada Remote Control Passthrough, dan pengujian sertifikasi yang lebih luas. Umumnya, interaksi HDMI-CEC 2.0 dengan perangkat lain lebih efisien, yang menghasilkan lebih sedikit traffic HDMI-CEC dan mempercepat interaksi.
Agar perangkat mendukung HDMI-CEC 2.0, konfigurasi perangkat dan pengguna harus
ditetapkan 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 yang menggunakan RRO) dan runtime
(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. | Ke TV saja Ke TV dan Sistem Audio Siaran Tidak ada |
Untuk setiap setelan yang saat ini tersedia dan opsi yang diizinkan dapat dikueri oleh aplikasi pada waktu proses.