Layanan Kontrol HDMI-CEC

Standar High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) memungkinkan produk konsumen mulitmedia 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 untuk menyalakan TV dan mengalihkan port inputnya secara otomatis, jadi Anda tidak perlu mencari remote TV untuk beralih dari Chromecast ke pemutar Blu-ray.

Dengan Android 12, kontrol daya layar yang terhubung ke HDMI sejajar dengan kontrol daya layar internal. Saat perangkat pemutaran HDMI aktif, perangkat mencoba untuk membangunkan TV yang terhubung dan menjadi sumber aktif saat ini melalui HDMI CEC One Touch Play. Jika perangkat tertidur saat menjadi sumber aktif saat ini, perangkat akan mencoba mematikan TV yang terhubung.

Mendukung HDMI-CEC umumnya opsional. Namun, sebagian besar produsen telah mengadopsi HDMI-CEC sehingga perangkat mereka bekerja 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 antar perangkat. Karena perbedaan ini, konsumen tidak dapat dengan aman berasumsi 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.

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 mengurangi titik-titik rasa sakit ini.

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

  • Implementasi 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.
  • Layanan yang telah teruji dengan baik terhadap banyak perangkat HDMI-CEC yang sudah ada di pasaran. Android telah melakukan penelitian ketat tentang masalah kompatibilitas yang ditemukan di antara produk dan mengumpulkan saran yang berguna dari pelaksana perangkat yang berpengalaman dalam teknologi tersebut. Layanan CEC dirancang untuk menjaga keseimbangan yang sehat antara standar dan modifikasi standar tersebut sehingga berfungsi dengan produk yang sudah digunakan orang.

Desain keseluruhan

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

Lihat diagram berikut untuk penggambaran peralihan dari pengontrol CEC khusus ke implementasi lapisan abstraksi perangkat keras (HAL) HDMI-CEC yang lebih sederhana.

Diagram yang menunjukkan bagaimana HDMI-CEC diterapkan 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 bagaimana detail layanan Kontrol HDMI

Gambar 2. Detail Layanan Kontrol HDMI

Berikut adalah bahan utama untuk implementasi Android HDMI-CEC yang tepat:

  • Kelas manajer HdmiControlManager menyediakan aplikasi istimewa dengan API. 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 adalah perangkat HDMI sink 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, setel:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Pengontrol CEC berpemilik yang disediakan oleh produsen perangkat tidak dapat hidup berdampingan dengan HdmiControlService . Itu harus dinonaktifkan atau dihapus. Persyaratan umum untuk 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 setiap perubahan yang dibuat 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 dapat mengakses layanan. 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

HDMI-CEC HAL API memungkinkan HdmiControlService menggunakan 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 saat 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 menurut 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 antara perangkat HDMI, peningkatan pada Remote Control Passthrough, dan pengujian sertifikasi yang lebih ekstensif. Umumnya, interaksi HDMI-CEC 2.0 dengan perangkat lain lebih efisien, menghasilkan lebih sedikit lalu lintas HDMI-CEC serta interaksi yang 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 pembuatan (oleh OEM 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. Ke TV saja
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 berjalan.