Layanan kontrol HDMI-CEC

Standar Kontrol Elektronik Konsumen Antarmuka Multimedia Definisi Tinggi (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, namun 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 remote TV untuk beralih dari Chromecast ke pemutar Blu-ray.

Dengan Android 12, kontrol daya layar yang tersambung ke HDMI selaras dengan kontrol daya layar internal. Saat perangkat pemutaran HDMI diaktifkan, perangkat tersebut akan mencoba membangunkan TV yang tersambung dan menjadi sumber aktif saat ini melalui HDMI CEC One Touch Play. Jika perangkat memasuki mode tidur saat sumber aktif saat ini, perangkat akan mencoba mematikan TV yang tersambung.

Mendukung 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 memahami satu sama lain dan fitur yang didukung berbeda-beda antar perangkat. Karena perbedaan ini, konsumen tidak dapat berasumsi bahwa dua produk yang mengklaim dukungan CEC benar-benar kompatibel.

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

Larutan

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

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

  • Penerapan standar HDMI-CEC untuk semua produsen, yang akan mengurangi ketidakcocokan perangkat. Sebelumnya, produsen harus mengembangkan implementasi HDMI-CEC mereka sendiri atau menggunakan solusi pihak ketiga.
  • Sebuah layanan yang telah teruji dengan baik terhadap banyak perangkat HDMI-CEC yang sudah ada di pasaran. Android telah melakukan penelitian mendalam mengenai masalah kompatibilitas yang ditemukan di antara produk dan mengumpulkan saran berguna dari pelaksana perangkat yang berpengalaman dalam teknologi tersebut. Layanan CEC dirancang untuk menjaga keseimbangan yang sehat antara standar dan modifikasi standar tersebut sehingga dapat berfungsi dengan produk yang sudah digunakan masyarakat.

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 gambaran peralihan dari pengontrol CEC khusus ke implementasi lapisan abstraksi perangkat keras (HAL) HDMI-CEC yang lebih sederhana.

Diagram yang menunjukkan penerapan HDMI-CEC sebelum dan sesudah Android 5.0

Gambar 1. Penggantian Layanan Kontrol HDMI

Penerapan

Lihat diagram berikut untuk tampilan detail layanan kontrol HDMI.

Gambar yang menunjukkan detail layanan Kontrol HDMI

Gambar 2. Detail Layanan Kontrol HDMI

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

  • Kelas manajer HdmiControlManager menyediakan API untuk aplikasi yang memiliki hak istimewa. 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 logis.
  • HDMI-CEC terhubung dengan perangkat keras melalui lapisan abstraksi perangkat keras (HAL) untuk menyederhanakan penanganan perbedaan protokol dan mekanisme pensinyalan antar perangkat. Definisi HAL tersedia untuk digunakan oleh produsen perangkat untuk mengimplementasikan 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 pada apakah perangkat Anda merupakan perangkat sink HDMI atau perangkat sumber HDMI, produsen perangkat perlu mengatur 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), atur:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Untuk perangkat wastafel HDMI, seperti TV panel, atur:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Pengontrol CEC milik produsen perangkat tidak dapat digunakan bersamaan dengan HdmiControlService . Itu harus dinonaktifkan atau dihapus. Persyaratan umum untuk hal ini berasal dari kebutuhan untuk menangani perintah khusus pabrikan. Pengendali perintah khusus pabrikan harus dimasukkan ke dalam layanan dengan memperluas/memodifikasinya. Pekerjaan ini diserahkan kepada produsen perangkat dan tidak ditentukan oleh Android. Perhatikan bahwa perubahan apa pun yang dilakukan pada layanan untuk perintah khusus pabrikan tidak boleh mengganggu cara penanganan perintah standar 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 ini. Hal ini untuk melindungi layanan dari penyalahgunaan oleh aplikasi dengan niat jahat.

Android mendukung tipe 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.

HDMI-CEC HAL

API HAL HDMI-CEC memungkinkan HdmiControlService memanfaatkan sumber daya perangkat keras untuk mengirim/menerima perintah HDMI-CEC, mengonfigurasi pengaturan yang diperlukan, dan (opsional) berkomunikasi dengan mikroprosesor di platform dasar yang akan mengambil alih kontrol CEC sementara Android sistem dalam mode siaga.

Versi: kapan Fitur file HAL
1.0 Konfigurasikan data HAL (alamat, fitur). Kirim perintah HDMI-CEC. Daftarkan panggilan balik untuk menerima perintah HDMI-CEC dan acara hotplug. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 Perkenalkan jenis HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Pengujian

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

HDMI-CEC 2.0

Perangkat sumber Android (pemutaran) dan wastafel (panel TV) mendukung HDMI-CEC 2.0. HDMI-CEC 2.0 menawarkan interoperabilitas yang lebih baik antar 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 lalu lintas HDMI-CEC lebih sedikit serta interaksi lebih cepat.

Agar perangkat mendukung HDMI-CEC 2.0, perangkat dan konfigurasi pengguna harus diatur 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 waktu proses (oleh HdmiControlManager @SystemApi).

Contoh pengaturan HDMI-CEC:

Pengaturan Pilihan
Apakah HDMI-CEC diaktifkan atau dinonaktifkan. Diaktifkan
Dengan disabilitas
Cakupan pesan kontrol daya HDMI-CEC yang dikirim oleh perangkat pemutaran. Hanya untuk TV
Ke TV dan Sistem Audio
Siaran
Tidak ada

Untuk setiap pengaturan yang saat ini tersedia dan opsi yang diizinkan dapat ditanyakan oleh aplikasi pada waktu proses.