HDMI-CEC Kontrol Hizmeti

Yüksek Çözünürlüklü Multimedya Arayüzü Tüketici Elektroniği Kontrolü (HDMI-CEC) standardı, çoklu ortam 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 Kontrolü gibi birçok özelliği destekler, ancak en popüler olanlardan biri Tek Dokunuşla Oynatmadır. Tek Dokunuşla Oynatma, bir 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'inizden Blu-ray oynatıcıya geçmek için TV uzaktan kumandasını aramanıza gerek kalmaz.

Android 12 ile, HDMI bağlantılı ekranın güç kontrolü, dahili ekranın güç kontrolü ile aynı hizadadır. Bir HDMI oynatma cihazı uyandığında, bağlı TV'yi uyandırmaya ve HDMI CEC Tek Dokunuşla Oynatma yoluyla mevcut aktif kaynak olmaya çalışır. Cihaz mevcut aktif kaynak iken uyku moduna geçerse, bağlı TV'yi kapatmaya çalışır.

HDMI-CEC'yi desteklemek 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 benimsemiştir. Her üretici, HDMI-CEC standardını farklı şekillerde uygular, bu nedenle cihazlar her zaman birbirini anlamaz ve desteklenen özellikler cihazlar arasında değişiklik gösterir. Bu farklılık nedeniyle tüketiciler, CEC desteğini talep eden iki ürünün tamamen uyumlu olduğunu güvenle varsayamazlar.

HDMI-CEC 2.0 desteği, hem gönderen hem de alan cihaz standardın bu sürümünü destekliyorsa, HDMI cihazları arasındaki uyumluluğu geliştirmeye yardımcı olur.

Çözüm

Android TV Giriş Çerçevesinin (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 sıkıntılı noktaları hafifletmek için HdmiControlService adlı bir sistem hizmeti oluşturmuştur.

Android ekosisteminin bir parçası olarak HdmiControlService sunarak Android şunları sağlamayı umuyor:

  • Cihaz uyumsuzluğunu azaltacak, tüm üreticiler için standart bir HDMI-CEC uygulaması. Önceden, üreticilerin kendi HDMI-CEC uygulamalarını geliştirmeleri veya üçüncü taraf çözümleri kullanmaları gerekiyordu.
  • Halihazırda 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ütüyor ve teknolojide deneyimli cihaz uygulayıcılarından faydalı tavsiyeler alıyor. CEC hizmeti, insanların halihazırda kullanmakta olduğu ürünlerle çalışabilmesi için standart ve bu standartta yapılan değişiklikler arasında sağlıklı bir denge sağlamak ü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ğlanır.

Özel bir CEC denetleyicisinden daha basit HDMI-CEC donanım soyutlama katmanının (HAL) bir uygulamasına geçişin bir tasviri için aşağıdaki şemaya bakın.

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

Şekil 1. HDMI Kontrol Hizmetinin değiştirilmesi

uygulama

HDMI kontrol hizmetinin ayrıntılı bir görünümü için aşağıdaki şemaya bakın.

HDMI Kontrolü hizmet ayrıntılarının nasıl yapıldığını gösteren resim

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

Uygun bir Android HDMI-CEC uygulamasının temel bileşenleri şunlardır:

  • Bir yönetici sınıfı HdmiControlManager , API ile ayrıcalıklı uygulamalar sağlar. TV Giriş Yöneticisi hizmeti ve Ses hizmeti gibi sistem hizmetleri, hizmeti doğrudan kullanabilir.
  • Hizmet, birden fazla türde mantıksal aygıtın barındırılmasına izin verecek şekilde tasarlanmıştır.
  • HDMI-CEC, cihazlar arasındaki protokol farklılıklarının ve sinyal mekanizmalarının işlenmesini basitleştirmek için bir donanım soyutlama katmanı (HAL) aracılığıyla donanıma bağlanır. HAL tanımı, cihaz üreticilerinin HAL katmanını uygulamak için kullanmaları için mevcuttur.

Not : Cihaz üreticileri, device.mk içindeki PRODUCT_COPY_FILES dosyasına 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 bir HDMI alıcı cihazı veya bir HDMI kaynak cihazı olmasına bağlı olarak, HdmiControlService doğru çalışması için cihaz üreticilerinin ro.hdmi.device_type device.mk 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 lavabo cihazları için şunları ayarlayın:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Aygıt üreticisi tarafından sağlanan tescilli bir CEC denetleyicisi, HdmiControlService ile bir arada bulunamaz. Devre dışı bırakılmalı veya kaldırılmalıdır. Bunun için ortak gereksinimler, üreticiye özel komutları işleme ihtiyacından gelir. Üreticiye özel komut işleyici, genişletilerek/değiştirilerek hizmete dahil edilmelidir. Bu iş cihaz üreticisine bırakılmıştır ve Android tarafından belirtilmemiştir. Hizmette üreticiye özel komutlar için yapılan herhangi bir değişikliğin standart komutların işlenme şeklini etkilememesi gerektiğini veya cihazın Android uyumlu olmayacağını unutmayın.
  • HDMI-CEC hizmetine erişim, SignatureOrSystem koruma düzeyiyle korunur. Hizmete yalnızca sistem bileşenleri veya /system/priv-app içine yerleştirilmiş uygulamalar erişebilir. Bu, hizmeti kötü niyetli uygulamalar tarafından kötüye kullanımdan korumak içindir.

Android, aktif kaynak olmak için Tek Dokunuşla Oynatma komutunu verebilen TV/Display(0) , Playback device(4) ve sistem ses modunu ve ARC'yi yöneten Audio System (5) destekler. Diğer cihaz türleri (Tuner ve Kaydedici) şu anda desteklenmemektedir.

HDMI-CEC HAL

HDMI-CEC HAL API, HdmiControlService HDMI-CEC komutları göndermek/almak, gerekli ayarları yapılandırmak ve (isteğe bağlı olarak) Android çalışırken CEC kontrolünü devralacak temel platformdaki mikroişlemci ile iletişim kurmak için donanım kaynağını kullanmasını sağlar. sistem bekleme modunda.

sürüm Özellikler HAL dosyaları
1.0 HAL verilerini (adresler, özellikler) yapılandırın. HDMI-CEC komutları gönderin. HDMI-CEC komutlarını ve hotplug olaylarını almak için geri aramayı 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 yapmak

Cihazların HDMI-CEC uygulamaları, HDMI-CEC CTS belgelerine göre CTS testleri ile 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 Kontrol Geçişinde 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ğinin yanı sıra daha hızlı etkileşimlerle sonuçlanır.

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.

MSK Yapılandırması

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

HDMI-CEC ayarlarına örnekler:

Ayar Seçenek
HDMI-CEC'nin etkin veya devre dışı olup olmadığı. Etkinleştirilmiş
Engelli
Bir oynatma cihazı tarafından gönderilen HDMI-CEC güç kontrol mesajlarının kapsamı. Yalnızca TV'ye
TV ve Ses Sistemine
Yayın
Hiçbiri

Her ayar için mevcut ve izin verilen seçenekler, çalışma zamanında uygulamalar tarafından sorgulanabilir.