HDMI-CEC kontrol hizmeti

Yüksek Çözünürlüklü Multimedya Arayüzü Tüketici Elektroniği Kontrolü (HDMI-CEC) standardı, tüketicilere yönelik multimedya ü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 özelliklerden biri One Touch Play'dir. Tek Dokunuşla Oynatma, medya kaynağı cihazı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ız gerekmez.

Android 12 ile HDMI bağlantılı ekranın güç kontrolü, dahili ekranın güç kontrolüyle uyumlu hale gelir. HDMI oynatma cihazı açıldığında, HDMI CEC Tek Dokunuşla Oynatma özelliği aracılığıyla bağlı TV'yi uyandırmaya ve mevcut etkin kaynak olmaya çalışır. Cihaz, etkin kaynakken uykuya 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ış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 değişiklik gösterir. Bu farklılık nedeniyle tüketiciler, CEC desteği olduğunu iddia eden iki ürünün tamamen uyumlu olduğunu varsayamaz.

HDMI-CEC 2.0 desteği, hem gönderen hem de alıcı cihaz standardın bu sürümünü destekliyorsa HDMI cihazlar arasındaki uyumluluğu iyileştirir.

Çö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 sorunlu noktaları gidermek için HdmiControlService adlı bir sistem hizmeti oluşturdu.

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

  • Tüm üreticiler için HDMI-CEC'nin standart bir şekilde uygulanması, cihaz uyumsuzluğunu azaltır. Daha önce üreticilerin kendi HDMI-CEC uygulamalarını geliştirmeleri veya üçüncü taraf çözümlerini kullanmaları gerekiyordu.
  • 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, kullanıcıların halihazırda kullandığı ürünlerle çalışabilmesi için standart ile 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ıyla bağlantılıdır.

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

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

Şekil 1. HDMI Kontrol Hizmeti değişimi

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ı

Android HDMI-CEC'nin düzgün bir şekilde uygulanması için gereken temel bileşenler şunlardır:

  • 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.
  • Bu hizmet, birden fazla mantıksal cihaz türü barındırmaya izin verecek şekilde tasarlanmıştır.
  • HDMI-CEC, cihazlar arasındaki protokol ve sinyal mekanizması farklılıklarının ele alınmasını kolaylaştırmak için donanım soyutlama katmanı (HAL) aracılığıyla donanıma bağlanır. HAL tanımı, cihaz üreticilerinin HAL katmanını uygulamak için kullanabileceği bir yapıdır.

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.

Over-the-Top (OTT) veya set üstü kutu (STB) 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 özel CEC denetleyici, HdmiControlService ile birlikte kullanılamaz. Devre dışı bırakılmış veya kaldırılmış olmalıdır. Bununla ilgili genel gereksinimler, üreticiye özgü komutları işleme gereğinden kaynaklanır. Üreticiye özel komut işleyici, genişletilerek/değiştirilerek hizmete dahil edilmelidir. Bu işlem cihaz üreticisine bırakılır ve Android tarafından belirtilmez. Üreticiye özgü komutlar için hizmette yapılan değişikliklerin, standart komutların işlenmesini etkilememesi gerektiğini unutmayın. Aksi takdirde cihaz Android 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ü amaçlı uygulamalar tarafından kötüye kullanıma karşı korumaktır.

Android, etkin kaynak olmak için Tek Dokunuşla Oynat komutunu gönderebilen TV/Display(0) türünü, sistem ses modunu ve ARC'yi yöneten Playback device(4) türünü ve Audio System (5) türünü destekler. 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 hotplug etkinliklerini almak için geri çağırma işlevini kaydedin. IHdmiCec.hal
IHdmiCecCallback.hal
1,1 HDMI-CEC 2.0 türlerini tanıtma @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Test

Cihazların HDMI-CEC uygulamaları, HDMI-CEC CTS dokümanları uyarınca 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 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'yi desteklemesi için cihaz ve kullanıcı yapılandırması HDMI-CEC 2.0'yi 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 (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 Option
HDMI-CEC'nin etkin veya devre dışı olup olmadığını 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

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