HDMI-CEC kontrol hizmeti

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.

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

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.

HDMI Kontrol hizmeti ayrıntılarını gösteren resim

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