Yüksek Tanımlı Multimedya Arayüzü Tüketici Elektroniği Kontrolü (HDMI-CEC) standardı, multimedya tüketici ürünlerinin birbirleriyle iletişim kurmasına ve bilgi alışverişinde bulunmasına olanak tanır. HDMI-CEC, uzaktan kumanda geçişi ve sistem ses denetimi gibi birçok özelliği destekler ancak en popüler özelliklerden biri Tek Dokunuşla Oynatma'dır. Tek Dokunuşla Oynatma, medya kaynağı cihazının TV'yi açmasına ve giriş bağlantı noktasını otomatik olarak değiştirmesine olanak tanır. Böylece, Chromecast'ten Blu-ray oynatıcıya geçmek için TV kumandasını aramanız gerekmez.
Android 12 ile HDMI bağlantılı ekranın güç kontrolü, dahili ekranın güç kontrolüyle aynı hizaya gelir. HDMI oynatma cihazı uyandığında, HDMI CEC One Touch Play aracılığıyla bağlı TV'yi uyandırmaya ve mevcut etkin kaynak olmaya çalışır. Cihaz, etkin kaynak durumundayken uyku moduna geçerse bağlı TV'yi kapatmaya çalışır.
HDMI-CEC desteği genellikle isteğe bağlıdır. Ancak çoğu üretici, cihazlarının diğer şirketlerin cihazlarıyla çalışması için HDMI-CEC'yi kullanır. Her üretici, HDMI-CEC standardını farklı şekillerde uyguladığından cihazlar her zaman birbirini anlamaz ve desteklenen özellikler cihazlar arasında farklılık gösterir. Bu farklılık nedeniyle, tüketiciler CEC desteği sunduğunu iddia eden iki ürünün tamamen uyumlu olduğunu güvenle varsayamaz.
HDMI-CEC 2.0 desteği, hem gönderen hem de alıcı cihaz bu standart sürümünü destekliyorsa HDMI cihazlar arasındaki uyumluluğu artırır.
Çözüm
Android TV Giriş Çerçevesi'nin (TIF) kullanıma sunulmasıyla birlikte HDMI-CEC, bağlı tüm cihazları bir araya getirir ve uyumluluk sorunlarını en aza indirir.
Android, bu sorunlu noktaları azaltmak için HdmiControlService
adlı bir sistem hizmeti oluşturdu.
Android, HdmiControlService
uygulamasını Android ekosisteminin bir parçası olarak sunarak şunları sağlamayı amaçlar:
- Tüm üreticiler için HDMI-CEC'nin standart bir uygulaması. Bu uygulama, cihaz uyumsuzluğunu azaltır. Üreticiler daha önce HDMI-CEC'nin kendi uygulamalarını geliştirmek veya üçüncü taraf çözümlerini kullanmak zorundaydı.
- Piyasada bulunan çok sayıda HDMI-CEC cihazına karşı iyi test edilmiş bir hizmet. Android, ürünler arasında bulunan uyumluluk sorunları hakkında titiz bir araştırma yürütmekte ve teknolojide deneyimli cihaz uygulayıcılarından faydalı tavsiyeler toplamaktadır. CEC hizmeti, kullanıcıların hâlihazırda kullandığı ürünlerle çalışabilmesi için standart ile bu standarttaki değişiklikler arasında sağlıklı bir denge kurmak üzere tasarlanmıştır.
Genel tasarım
HdmiControlService
, standardın belirttiği çeşitli özellikleri uygulamak için TV Giriş Çerçevesi (TIF), Ses hizmeti ve Güç hizmeti gibi sistemin geri kalanına bağlıdır.
Özel bir CEC denetleyicisinden daha basit bir HDMI-CEC donanım soyutlama katmanı (HAL) uygulamasına geçişi gösteren aşağıdaki şemaya bakın.

1. şekil. HDMI Kontrol Hizmeti değiştirme
Uygulama
HDMI kontrol hizmetinin ayrıntılı görünümü için aşağıdaki şemaya bakın.

Şekil 2. HDMI Kontrolü Hizmeti ayrıntıları
Android'de HDMI-CEC'nin düzgün şekilde uygulanması için gereken temel unsurlar şunlardır:
- Yönetici sınıfı
HdmiControlManager
, ayrıcalıklı uygulamalara API sağlar. TV Giriş Yöneticisi hizmeti ve Ses hizmeti gibi sistem hizmetleri, hizmeti doğrudan kullanabilir. - Hizmet, birden fazla mantıksal cihaz türünün barındırılmasına olanak tanıyacak şekilde tasarlanmıştır.
- HDMI-CEC, protokol ve sinyal mekanizmalarının cihazlar arasındaki farklılıklarını yönetmeyi kolaylaştırmak için donanımla bir donanım soyutlama katmanı (HAL) aracılığıyla bağlanır. HAL tanımı, cihaz üreticilerinin HAL katmanını uygulamak için kullanabileceği bir kaynaktır.
Not: Cihaz üreticileri, device.mk
içindeki PRODUCT_COPY_FILES
bölümüne aşağıdaki satırı eklemelidir.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
Cihazınızın HDMI alıcı cihaz mı yoksa HDMI kaynak cihaz mı olduğuna bağlı olarak,
cihaz üreticilerinin HdmiControlService
'nin doğru çalışması için ro.hdmi.device_type
'yı device.mk
'ye ayarlaması gerekir.
Over the Top (OTT) veya set üstü kutu (STB) cihazları gibi HDMI kaynak cihazları için şunları ayarlayın:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Panel TV'ler gibi HDMI alıcı cihazlar için şunları ayarlayın:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Cihaz üreticisi tarafından sağlanan tescilli bir CEC denetleyicisi,
HdmiControlService
ile birlikte kullanılamaz. Devre dışı bırakılmalı veya kaldırılmalıdır. Bununla ilgili yaygın gereksinimler, üreticiye özel komutları işleme ihtiyacından kaynaklanır. Üreticiye özel komut işleyici, hizmeti genişleterek/değiştirerek hizmete dahil edilmelidir. Bu işlem, cihaz üreticisine bırakılır ve Android tarafından belirtilmez. Üreticiye özel komutlar için hizmette yapılan değişikliklerin, standart komutların işlenme şeklini etkilememesi gerektiğini unutmayın. Aksi takdirde cihaz Android ile uyumlu olmaz. - HDMI-CEC hizmetine erişim,
SignatureOrSystem
koruma düzeyiyle korunur. Hizmete yalnızca sistem bileşenleri veya/system/priv-app
içine yerleştirilen uygulamalar erişebilir. Bunun amacı, hizmeti kötü niyetli uygulamaların kötüye kullanımına karşı korumaktır.
Android, aktif kaynak olmak için Tek Dokunuşla Oynatma komutunu verebilen TV/Display(0)
türünü, sistem ses modunu ve ARC'yi işleyen Audio System (5)
türünü ve Playback
device(4)
türünü destekler.
Diğer cihaz türleri (Tuner ve Recorder) şu anda desteklenmemektedir.
HDMI-CEC HAL
HDMI-CEC HAL API, HdmiControlService
cihazının HDMI-CEC komutları göndermek/almak, gerekli ayarları yapılandırmak ve (isteğe bağlı olarak) Android sistemi bekleme modundayken CEC kontrolünü devralacak olan temel platformdaki mikroişlemciyle iletişim kurmak için donanım kaynağını kullanmasına olanak tanır.
Sürüm | Özellikler | HAL dosyaları |
---|---|---|
1,0 | HAL verilerini (adresler, özellikler) yapılandırın. HDMI-CEC komutları gönderme HDMI-CEC komutlarını ve hotplug etkinliklerini almak için geri çağırma işlevini kaydedin. | IHdmiCec.hal IHdmiCecCallback.hal |
1,1 | HDMI-CEC 2.0 türlerini kullanıma sunma | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Test
Cihazların HDMI-CEC uygulamaları, HDMI-CEC CTS belgelerine göre CTS testleri aracılığıyla test edilir ve doğrulanır.
HDMI-CEC 2.0
Android kaynak (oynatma) ve alıcı (TV paneli) cihazları HDMI-CEC 2.0'ı destekler. HDMI-CEC 2.0, HDMI cihazlar arasında daha iyi birlikte çalışabilirlik, uzaktan kumanda geçişinde iyileştirmeler ve daha kapsamlı sertifika testi sunar. Genel olarak, HDMI-CEC 2.0'ın diğer cihazlarla etkileşimleri daha verimlidir. Bu da daha az HDMI-CEC trafiğine ve daha hızlı etkileşimlere yol açar.
Bir cihazın HDMI-CEC 2.0'ı desteklemesi için cihaz ve kullanıcı yapılandırması HDMI-CEC 2.0'ı kullanacak şekilde ayarlanmalıdır. HAL uygulaması, IHdmiCec#getCecVersion
çağrılarında HDMI-CEC 2.0 desteğini de bildirmelidir.
CEC yapılandırması
HDMI-CEC davranışı hem derleme zamanında (OEM'ler tarafından RRO'lar kullanılarak) hem de çalışma zamanında (HdmiControlManager
@SystemApi tarafından) yapılandırılabilir.
HDMI-CEC ayarları örnekleri:
Ayar | Option |
---|---|
HDMI-CEC'nin etkin veya devre dışı olduğunu belirtir. | Etkin Devre dışı |
Bir oynatma cihazı tarafından gönderilen HDMI-CEC güç kontrolü mesajlarının kapsamı. | Yalnızca TV'ye TV'ye ve Ses Sistemine Yayın Yok |
Şu anda kullanılabilen her ayar ve izin verilen seçenekler, çalışma zamanında uygulamalar tarafından sorgulanabilir.