HDMI-CEC kontrol hizmeti

Yüksek Tanımlı 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 otomatik olarak açmasına ve giriş bağlantı noktasını değiştirmesine olanak tanır; böylece Chromecast'inizden Blu-ray oynatıcınıza geçiş yapmak için TV uzaktan kumandasını aramanıza gerek kalmaz.

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

HDMI-CEC'nin desteklenmesi genellikle isteğe bağlıdır. Ancak çoğu üretici, cihazlarının diğer şirketlerin cihazlarıyla çalışabilmesi 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 farklılık gösterir. Bu farklılık nedeniyle tüketiciler, CEC desteğine sahip olduğunu iddia eden iki ürünün tamamen uyumlu olduğunu rahatlıkla varsayamazlar.

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

Çözüm

Android TV Giriş Çerçevesi'nin (TIF) kullanıma sunulmasıyla 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 adında bir sistem hizmeti oluşturdu.

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

  • Tüm üreticiler için cihaz uyumsuzluğunu azaltacak standart bir HDMI-CEC uygulaması. Daha önce ü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ıyla test edilmiş bir hizmet. Android, ürünler arasında bulunan uyumluluk sorunları hakkında sıkı araştırmalar yürütüyor ve teknoloji konusunda deneyimli cihaz uygulayıcılarından faydalı tavsiyeler topluyor. CEC hizmeti, standart ile bu standartta yapılan değişiklikler arasında sağlıklı bir denge kurarak insanların halihazırda kullanmakta olduğu ürünlerle çalışmasını sağlayacak şekilde 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 bir HDMI-CEC donanım soyutlama katmanı (HAL) uygulamasına geçişin açıklaması 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ı görünümü için aşağıdaki şemaya bakın.

HDMI Kontrolü hizmeti ayrıntılarının nasıl olduğunu gösteren resim

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

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

  • 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 cihazın barındırılmasına izin verecek şekilde tasarlanmıştır.
  • HDMI-CEC, cihazlar arasındaki protokol ve sinyal mekanizmalarındaki farklılıkların ele alınmasını kolaylaştırmak 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 üreticilerinin aşağıdaki satırı device.mk dosyasındaki PRODUCT_COPY_FILES dosyasına eklemesi gerekir.

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 havuz cihazı mı yoksa bir HDMI kaynak cihazı mı olduğuna bağlı olarak, cihaz üreticilerinin HdmiControlService düzgün çalışması için device.mk dosyasında ro.hdmi.device_type ayarını yapması gerekir.

Over the Top (OTT) veya Set üstü kutu (STB) cihazları gibi HDMI kaynak cihazları için şunu 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 özel bir CEC denetleyicisi HdmiControlService ile bir arada bulunamaz. Devre dışı bırakılması veya kaldırılması gerekir. Bunun için ortak gereksinimler, üreticiye özel komutların kullanılması ihtiyacından kaynaklanmaktadır. Üreticiye özel komut işleyicisi, genişletilerek/değiştirilerek hizmete dahil edilmelidir. Bu iş cihaz üreticisine bırakılmıştır ve Android tarafından belirtilmemiştir. Üreticiye özel komutlar için hizmette yapılan herhangi bir değişikliğin, standart komutların işlenme şeklini etkilememesi gerektiğini, aksi takdirde 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ştirilen uygulamalar erişebilir. Bunun amacı, hizmeti kötü niyetli uygulamalar tarafından kötüye kullanıma karşı korumaktır.

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

HDMI-CEC HAL

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

Sürüm Özellikler HAL dosyaları
1.0 HAL verilerini (adresler, özellikler) yapılandırın. HDMI-CEC komutlarını gönderin. HDMI-CEC komutlarını ve çalışırken takma 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 aracılığıyla test edilir ve doğrulanır.

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 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ın ve kullanıcı yapılandırmasının HDMI-CEC 2.0'ı kullanacak şekilde ayarlanması gerekir. HAL uygulamasının ayrıca IHdmiCec#getCecVersion çağrılarında HDMI-CEC 2.0 desteğini de bildirmesi gerekir.

CEC yapılandırması

HDMI-CEC davranışı hem yapım zamanında (RRO 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 mi yoksa devre dışı mı olduğu. 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

Şu anda mevcut olan ve izin verilen her ayar için seçenekler, çalışma zamanında uygulamalar tarafından sorgulanabilir.