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 Kontrolü 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üç denetimi, dahili ekranın güç denetimiyle 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 alan cihaz bu standart sürümünü destekliyorsa HDMI cihazlar arasındaki uyumluluğu artırır.

Çözüm

Android TV Input Framework'ün (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 sisteme ait hizmet oluşturdu.

Android, Android ekosisteminin bir parçası olarak HdmiControlService'yı 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 kuracak şekilde tasarlanmıştır.

Genel tasarım

HdmiControlService, standartta belirtilen ç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ş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

Şekil 1. 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ü hizmetinin ayrıntılarını gösteren resim

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

Android 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ı basitleştirmek için donanımla 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 tanımdı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 ro.hdmi.device_type değerini device.mk içinde HdmiControlService'nin doğru çalışması için 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, genişletilerek/değiştirilerek 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. Bu sayede, hizmeti kötü amaçlı uygulamaların kötüye kullanımına karşı koruyabiliriz.

Android, aktif kaynak olmak için Tek Dokunuşla Oynatma komutunu verebilen TV/Display(0) ve Playback device(4) türlerini destekler. Audio System (5) ise sistem ses modunu ve ARC'yi işler. 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 hedef (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ının HDMI-CEC 2.0'ı kullanacak şekilde ayarlanması gerekir. 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 süresinde (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 Seçenek
HDMI-CEC'nin etkin veya devre dışı olduğunu belirtir. Etkin
Devre dışı
Bir oynatma cihazı tarafından gönderilen HDMI-CEC güç denetimi 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.