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. One Touch Play, 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'de HDMI bağlantılı ekranın güç kontrolü, dahili ekranın güç kontrolüyle uyumludur. 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, HDMI-CEC'yi kullanmaya başlamıştır. Bu nedenle cihazları diğer şirketlerin cihazlarıyla birlikte çalışır. 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, tüm bağlı 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.

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

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

Özel bir CEC denetleyiciden daha basit HDMI-CEC donanım soyutlama katmanının (HAL) uygulanmasına geçişin tasviri için 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ı

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ş 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. Cihaz üreticileri, HAL katmanını uygulamak için HAL tanımını kullanabilir.

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

HdmiControlService adlı cihazın doğru şekilde çalışması için cihaz üreticilerinin device.mk içinde ro.hdmi.device_type ayarını yapması gerekir. Bu işlem cihazınızın HDMI havuz cihazı mı yoksa HDMI kaynak cihazı mı olduğuna bağlıdır.

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ılmalı veya kaldırılmalıdır. Bununla ilgili genel gereksinimler, üreticiye özgü komutları işlenmesinden 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 korunmaktadır. 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önderin. 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ıtma @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Test

Cihazların HDMI-CEC uygulamaları, HDMI-CEC CTS belgelerine göre CTS testleriyle test edilip 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 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'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 raporlamalıdır.

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ığı. 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 Sistemi'ne
Yayınlama
Yok

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