Layanan kontrol HDMI-CEC

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).

Diagram yang menunjukkan cara HDMI-CEC diterapkan sebelum dan sesudah Android 5.0

Gambar 1. Layanan Kontrol HDMI penggantian

Implementasi

Lihat diagram berikut untuk mengetahui tampilan mendetail layanan kontrol HDMI.

Gambar yang menunjukkan cara detail 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.