HDMI-CEC kontrol hizmeti

Yüksek Çözünürlüklü Multimedya Arayüzü Tüketici Elektroniği Denetimi (HDMI-CEC) standardı, birden çok medya tüketici ürünlerinin iletişim kurmasını ve bilgi alışverişinde bulunmaktır. HDMI-CEC, Uzaktan Kumanda Geçişi ve Sistem Ses Kontrolü gibi birçok özelliği destekler. Ancak en popüler özelliklerden biri One Touch Play'dir. One Touch Play, bir medya kaynağı cihazının TV'yi açmasına ve giriş bağlantı noktasını otomatik olarak değiştirir. Böylece, TV'yi aramak zorunda kalmazsınız. Chromecast\'inizden Blu-ray oynatıcıya geçmek için uzaktan kumandanızı kullanın.

Android 12'de HDMI bağlantılı ekranın güç kontrolü dahili ekranın güç kontrolü. HDMI oynatma cihazı uyandığında TV'yi uyandırmak ve HDMI CEC One Touch Play ile geçerli etkin kaynak olmak için kullanabilirsiniz. Cihaz, etkin kaynakken uykuya geçerse bağlı TV'yi kapatmaya çalışır.

HDMI-CEC'nin desteklenmesi genellikle isteğe bağlıdır. Ancak çoğu üretici HDMI-CEC'yi bu sayede cihazları diğer şirketlerin cihazlarıyla çalışacak. Her üretici HDMI-CEC'yi uygular Bu nedenle cihazlar her zaman birbirlerini anlamaz ve cihazlar arasında farklılık gösterir. Bu farklılık nedeniyle tüketiciler, CEC desteği sunduğu iddia edilen iki ürünün tamamen uyumlu olduğunu varsaymalıyız.

HDMI-CEC 2.0 desteği, hem gönderme ve alma işlemleri, standardın bu sürümünü destekler.

Çözüm

Android TV Giriş Çerçevesi (TIF) kullanıma sunulduğunda HDMI-CEC tüm bağlı cihazları bir araya getirir ve uyumluluk sorunlarını en aza indirir. Android, şunları yapmak için HdmiControlService adlı bir sistem hizmeti oluşturdu: bu sorunları hafifletmenize yardımcı olur.

Android, Android ekosisteminin bir parçası olarak HdmiControlService'ü sunarak şunları sağlamayı amaçlar:

  • Tüm üreticiler için standart bir HDMI-CEC uygulaması. cihaz uyumsuzluğunu azaltır. Önceden, üreticiler kendi cihazlarını kendi HDMI-CEC uygulamalarını inceleyebilir veya üçüncü taraf çözümleri kullanabilirsiniz.
  • Piyasadaki çok sayıda HDMI-CEC cihazla iyice test edilmiş bir hizmet. Android, ürünlerde bulunan uyumluluk sorunlarıyla ilgili titiz araştırmalar yürütüyor ve teknoloji konusunda deneyimli cihaz uygulayıcılarından faydalı tavsiyeler alıyor. CEC hizmeti, değeri yüksek yapılan değişiklikler arasında sağlıklı bir denge kurmak için halihazırda kullandığı ürünlerle uyumlu olmasını sağlıyor.

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ıyla bağlantılıdır.

Özel bir CEC'den geçişin tasviri için aşağıdaki diyagrama bakın daha basit HDMI-CEC donanım soyutlaması uygulamasına katmanını (HAL) tıklayın.

Android 5.0'dan önce ve sonra HDMI-CEC'nin nasıl uygulandığını gösteren şema

Şekil 1. 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.

HDMI Kontrol hizmeti ayrıntılarının nasıl gösterildiğini gösteren resim

Şekil 2. HDMI Kontrol Hizmeti ayrıntıları

Doğru bir Android HDMI-CEC uygulaması için gereken temel bileşenler:

  • Yönetici sınıfı HdmiControlManager, ayrıcalıklı uygulamalara API'yi sağlar. TV girişi yöneticisi hizmeti ve ses hizmeti gibi sistem hizmetleri bu hizmeti doğrudan kullanabilir.
  • Hizmet, birden fazla mantıksal türün barındırılmasına olanak tanır.
  • HDMI-CEC, donanıma bir donanım soyutlama katmanı yoluyla bağlanır (HAL) protokolü ve sinyal mekanizmaları arasındaki farklılıkların işlenmesini basitleştirir kontrol edebilirsiniz. HAL tanımı, cihaz üreticileri tarafından kullanılabilir başka bir kod snippet'i kullanabilirsiniz.

Not: Cihaz üreticileri, aşağıdaki satırı device.mk'daki PRODUCT_COPY_FILES içine 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, HdmiControlService'nin düzgün çalışması için cihaz üreticilerinin device.mk'te ro.hdmi.device_type ayarını yapması gerekir.

Baypas (OTT) veya Set Üstü Kutu (STB) gibi HDMI kaynaklı cihazlar için şunları ayarlayın:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Panel TV gibi HDMI çıkışlı cihazlar için şu ayarları yapın:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Cihaz üreticisi tarafından sağlanan özel CEC denetleyici, HdmiControlService ile birlikte kullanılamaz. Devre dışı bırakılmış veya kaldırılmış olmalıdır. Genel bu gereklilikler, üreticiye özgü gereksinimlerin komutlarının ikisine katlanır. Üreticiye özel komut işleyici, genişletilerek/değiştirilerek hizmete dahil edilmelidir. Bu çalışma cihaza bırakılır Android tarafından belirtilmemiş. Şurada yapılan herhangi bir değişikliğin hizmete özel komutlar, komut dosyasının çalışmasını engellememelidir. emin olabilirsiniz. Aksi takdirde cihaz Android ile uyumlu olmaz.
  • HDMI-CEC hizmetine erişim, koruma seviyesiyle korunuyor SignatureOrSystem Hizmete yalnızca sistem bileşenleri veya /system/priv-app içine yerleştirilen uygulamalar erişebilir. Bu, kötü amaçlı uygulamaların kötüye kullanımına karşı hizmet.

Android, etkin olmak için One Touch Play komutunu çalıştırabilen TV/Display(0) (Playback device(4)) türünü destekler kaynağı ve sistem ses modu ile ARC'yi işleyen Audio System (5). Diğer cihaz türleri (Tuner ve Kaydedici) şu anda desteklenmemektedir.

HDMI-CEC HAL

HDMI-CEC HAL API, HdmiControlService'ü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 temel platformdaki mikroişlemciyle iletişim kurmak için donanım kaynağından yararlanması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 hotspot etkinliklerini almak için geri çağırmayı kaydedin. IHdmiCec.hal
IHdmiCecCallback.hal
1,1 HDMI-CEC 2.0 türlerini tanıtın @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Test

Cihazların HDMI-CEC uygulamaları, HDMI-CEC CTS dokümanlarına göz atın.

HDMI-CEC 2.0

Android kaynak (oynatma) ve havuz (TV paneli) cihazları HDMI-CEC 2.0'ı destekler. HDMI-CEC 2.0, HDMI cihazları arasında daha iyi birlikte çalışabilirlik, uzaktan kumanda aktarımında iyileştirmeler ve daha kapsamlı sertifika testleri sunar. Genel olarak, diğer cihazlarla HDMI-CEC 2.0 etkileşimleri daha verimlidir. Bu da daha az HDMI-CEC trafiği ve daha hızlı etkileşimler sağlar.

Bir cihazın HDMI-CEC 2.0'ı desteklemesi için cihaz ve kullanıcı yapılandırmasının şu şekilde olması gerekir: HDMI-CEC 2.0 kullanacak şekilde ayarlandı. HAL uygulaması, HDMI-CEC 2.0 desteğini de bildirmelidir. IHdmiCec#getCecVersion için arama sayısı.

CEC yapılandırması

HDMI-CEC davranışı hem derleme zamanında (RRO kullanan OEM'ler tarafından) hem de çalışma zamanında yapılandırılabilir (HdmiControlManager @SystemApi tarafından).

HDMI-CEC ayarlarına örnekler:

Ayar Option
HDMI-CEC'nin etkin veya devre dışı olup olmadığı. Etkin
Devre dışı
Bir oynatma cihazı tarafından gönderilen HDMI-CEC güç kontrolü mesajlarının kapsamı. Yalnızca TV'ye
TV ve ses sistemine
Yayınla
Hiç aktarılmadı

Şu anda kullanılabilir olan ve izin verilen her ayar için çalışma zamanında uygulamalar tarafından sorgulanabilir.