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 mengganti port inputnya secara otomatis, sehingga Anda tidak perlu menelusuri 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 HDMI CEC One Touch Play. Jika masuk mode tidur saat menjadi sumber aktif saat ini, perangkat akan mencoba untuk mematikan 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 standar HDMI-CEC dengan cara yang berbeda, sehingga perangkat tidak selalu memahami satu sama lain dan fitur yang didukung 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
menggabungkan semua perangkat yang terhubung dan meminimalkan masalah kompatibilitas.
Android telah membuat layanan sistem yang disebut HdmiControlService
untuk
mengurangi poin masalah 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 riset ketat tentang masalah kompatibilitas yang ditemukan di antara produk-produk dan mengumpulkan saran yang berguna dari pelaksana perangkat yang berpengalaman dalam teknologi. 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 seluruh sistem seperti
TV Input Framework (TIF), Layanan audio, dan Layanan daya untuk menerapkan
berbagai fitur yang ditentukan standar.
Lihat diagram berikut untuk melihat penggambaran pengalihan dari pengontrol CEC kustom ke implementasi lapisan abstraksi hardware HDMI-CEC (HAL) yang lebih sederhana.
Implementasi
Lihat diagram berikut untuk melihat detail layanan kontrol HDMI.
Berikut adalah bahan-bahan utama untuk implementasi HDMI-CEC Android yang tepat:
- Class pengelola
HdmiControlManager
menyediakan API dengan hak istimewa untuk aplikasi. Layanan sistem seperti layanan TV Input Manager dan layanan Audio dapat menggunakan layanan ini secara langsung. - Layanan ini dirancang untuk memungkinkan hosting lebih dari satu jenis perangkat logika.
- HDMI-CEC terhubung dengan hardware melalui hardware abstraksi layer (HAL) untuk menyederhanakan penanganan perbedaan protokol dan mekanisme pensinyalan antarperangkat. Definisi HAL tersedia untuk digunakan produsen perangkat 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
Bergantung pada apakah perangkat Anda adalah perangkat sink 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 digunakan bersama
dengan
HdmiControlService
. Fitur 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 kepada produsen perangkat 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 ini. 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 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
HDMI-CEC HAL API memungkinkan HdmiControlService
memanfaatkan
resource hardware untuk mengirim/menerima perintah HDMI-CEC, mengonfigurasi setelan yang diperlukan,
dan (secara opsional) berkomunikasi dengan mikroprosesor di platform dasar yang
akan mengambil alih kontrol CEC saat sistem Android dalam mode standby.
Versi | Fitur | File HAL |
---|---|---|
1.0 | Mengonfigurasi 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 Android (pemutaran) dan sink (panel TV) mendukung HDMI-CEC 2.0. HDMI-CEC 2.0 menawarkan interoperabilitas yang lebih baik antara perangkat HDMI, peningkatan pada Remote Control Passthrough, dan pengujian sertifikasi yang lebih ekstensif. Secara umum, interaksi HDMI-CEC 2.0 dengan perangkat lain lebih efisien, sehingga menghasilkan lebih sedikit traffic HDMI-CEC serta interaksi yang lebih cepat.
Agar perangkat mendukung HDMI-CEC 2.0, perangkat dan konfigurasi 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 yang menggunakan RRO) dan runtime
(oleh HdmiControlManager
@SystemApi).
Contoh setelan HDMI-CEC:
Setelan | Opsi |
---|---|
Apakah HDMI-CEC diaktifkan atau dinonaktifkan. | Diaktifkan Nonaktif |
Cakupan pesan kontrol daya HDMI-CEC yang dikirim oleh perangkat pemutaran. | Hanya ke TV 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.