
Android TV Giriş Çerçevesi (TIF), Android TV'ye canlı içerik yayınlamayı kolaylaştırır. Android TIF, üreticilerin Android TV'yi kontrol etmek için giriş modülleri oluşturmasına olanak tanıyan standart bir API sağlar ve TV girişi tarafından yayınlanan meta veriler aracılığıyla canlı TV araması ve önerileri etkinleştirir.
Bu çerçeve, TV standartlarını veya bölgesel gereksinimleri uygulamayı amaçlamaz ancak cihaz üreticilerin yeniden uygulama yapmadan bölgesel dijital TV yayın standartlarını karşılamasını kolaylaştırır. Bu bölümdeki belgeler, özel TV girişleri oluşturmak isteyen üçüncü taraf uygulama geliştiriciler için de faydalı olabilir.
Bileşenler
Android TV Giriş Çerçevesi uygulaması, TV Giriş Yöneticisi'ni içerir. TIF, yerleşik ve IP tuner kanallarına erişmek için TV uygulamasıyla (üçüncü taraf uygulamasıyla değiştirilemeyen bir sistem uygulaması) birlikte çalışır. TV uygulaması, TV Giriş Yöneticisi aracılığıyla cihaz üreticisi veya diğer taraflarca sağlanan TV Giriş modülleriyle iletişim kurar.
TV Giriş Çerçevesi şunlardan oluşur:
- TV Sağlayıcı (
com.android.providers.tv.TvProvider
): kanallar, programlar ve ilişkili izinlerin bulunduğu bir veritabanı - TV uygulaması (
com.android.tv.TvActivity
): Kullanıcı etkileşimini işleyen uygulama - TV Giriş Yöneticisi (
android.media.tv.TvInputManager
): TV girişlerinin TV uygulamasıyla iletişim kurmasına olanak tanır. - TV Girişi: Fiziksel veya sanal tarayıcıları ve giriş bağlantı noktalarını temsil eden bir uygulama
- TV Girişi HAL'si (
tv_input
modülü): Uygulandığında sistem TV girişlerinin TV'ye özel donanıma erişmesine izin veren bir donanım tanımı - Ebeveyn Denetimi: Kanalların ve programların engellenmesine olanak tanıyan teknoloji
- HDMI-CEC: HDMI üzerinden çeşitli cihazların uzaktan kontrol edilmesini sağlayan teknoloji
- Kanal Tarayıcı Sistemi: Yerleşik kanal tarayıcılı TV girişi için bir sistem
- MediaCas: Koşullu erişim için bir çerçeve
- Tuner Resource Manager: TV girişi, MediaCas ve yerleşik tuner girişi için donanım kaynağını yönetmeye yönelik bir hizmet
Bu bileşenler aşağıda ayrıntılı olarak açıklanmıştır. Android TV Input Framework mimarisinin ayrıntılı görünümü için aşağıdaki diyagrama bakın.

Flow
Mimari şu şekilde kullanılır:
- Kullanıcı, üçüncü taraf uygulamasıyla değiştirilemeyen bir sistem uygulaması olan TV uygulamasını görür ve bu uygulamayla etkileşimde bulunur.
- TV uygulaması, TV girişindeki AV içeriğini gösterir.
- TV uygulaması, TV girişleriyle doğrudan iletişim kuramaz. TV Giriş Yöneticisi, TV uygulaması için TV girişlerinin durumunu tanımlar. Bu sınırlamalar hakkında daha fazla bilgi için aşağıdaki TV Giriş Yöneticisi bölümüne bakın.
İzinler
- Yalnızca
signatureOrSystem
TV Girişleri ve TV Uygulaması, TV Sağlayıcı veritabanına tam erişime sahiptir ve KeyEvents alabilir. - TV Giriş Yöneticisi hizmeti aracılığıyla TV Giriş HAL'sine yalnızca sistem TV girişleri erişebilir. TV girişlerine, TV Giriş Yöneticisi oturumları aracılığıyla bire bir erişilir.
- Üçüncü taraf TV girişleri, TV sağlayıcı veritabanına paketle kilitlenmiş erişime sahiptir ve yalnızca eşleşen paket satırlarına OKUMA/YAZMA işlemi yapabilir.
- Üçüncü taraf TV girişleri kendi içeriklerini veya bir cihaz üreticisinin geçişli TV girişlerindeki (ör. HDMI1) içerikleri gösterebilir. Yerleşik veya IPTV tuner gibi geçişli olmayan TV girişlerinden gelen içerikleri gösteremezler.
TV_INPUT_HARDWARE
izni, TV Giriş Yöneticisi Hizmeti'ne, TV Giriş Yöneticisi Hizmeti'ni çağırmak ve TV girişlerini eklemek için başlatma sırasında TV Giriş Hizmeti'ni bilgilendirmesini bildirir. Bu izin, bir donanım TV girişi uygulamasının TV girişi hizmeti başına birden fazla TV girişini desteklemesine ve desteklenen TV girişlerini dinamik olarak ekleyip kaldırmasına olanak tanır.
TV Sağlayıcı
TV sağlayıcı veritabanında, TV girişlerindeki kanallar ve programlar saklanır. TV sağlayıcı, TV girişlerinin yalnızca kendi kayıtlarını görebilmesi için ilişkili izinleri de yayınlar ve yönetir. Örneğin, belirli bir TV girişi yalnızca sağladığı kanalları ve programları görebilir ve diğer TV girişlerinin kanallarına ve programlarına erişmesi yasaktır.
TV sağlayıcı, "yayın türünü" dahili olarak "kanonik tür" ile eşler. TV
Girişleri, "yayın türü" alanını temel yayın standardındaki değerle doldurmaktan sorumludur ve "kanonik tür" alanı, android.provider.TvContract.Genres
'dan doğru ilişkili türle otomatik olarak doldurulur. Örneğin, yayın standardı ATSC A/65 ve türü 0x25 olan bir programla (yani "Spor"), TV girişi "yayın türü" alanını "Spor" dizesiyle doldurur ve TV sağlayıcı, "kanonik tür" alanını eşlenmiş değer android.provider.TvContract.Genres.SPORTS
ile doldurur.
TV sağlayıcısının ayrıntılı görünümü için aşağıdaki şemaya bakın.

Yalnızca ayrıcalıklı sistem bölümündeki uygulamalar TV sağlayıcı veritabanının tamamını okuyabilir.
Passthrough TV girişleri, kanalları ve programları depolamaz.
Kanallar ve programlarla ilgili standart alanlara ek olarak TV sağlayıcı veritabanı, TV girişlerinin rastgele verileri depolamak için kullanabileceği her tabloda bir BLOB türü alanı (COLUMN_INTERNAL_PROVIDER_DATA
) da sunar. Bu BLOB verileri, ilişkili tuner'ın frekansı gibi özel bilgiler içerebilir ve protokol arabelleğinde veya başka bir biçimde sağlanabilir. Arama alanında belirli kanalları kullanılamaz hale getirmek için (ör. içerik korumayla ilgili ülkeye özgü şartları karşılamak için) aranabilir bir alan mevcuttur.
Veritabanı alanı örnekleri
TV sağlayıcı, kanal (android.provider.TvContract.Channels
) ve program (android.provider.TvContract.Programs
) tablolarında yapılandırılmış verileri destekler. Bu tablolar, TV Girişleri ve TV uygulaması gibi sistem uygulamaları tarafından doldurulur ve bunlara erişilir. Bu tablolarda dört tür alan bulunur:
- Görüntüleme: Görüntüleme alanları, uygulamaların kullanıcıya göstermek isteyebileceği bilgileri içerir. Örneğin, bir kanalın adı (
COLUMN_DISPLAY_NAME
) veya numarası (COLUMN_DISPLAY_NUMBER
ya da görüntülenen programın başlığı. - Meta veriler: İçeriği tanımlamak için üç alan vardır. Bunlar, kanalın aktarım akışı kimliği (
COLUMN_TRANSPORT_STREAM_ID
), orijinal ağ kimliği (COLUMN_ORIGINAL_NETWORK_ID
) ve hizmet kimliği (COLUMN_SERVICE_ID
) gibi ilgili standartlara göre belirlenir. - Dahili veriler: TV Girişleri'nin özel kullanımı için olan alanlar.
COLUMN_INTERNAL_PROVIDER_DATA
gibi bazı alanlar özelleştirilebilir. TV girişinin kanalı veya programı hakkında rastgele meta veriler depolayabileceği BLOB alanları. - İşaret: İşaret alanları, bir kanalın arama, göz atma veya görüntüleme işlemlerinden kısıtlanıp kısıtlanmayacağını gösterir. Bu ayar yalnızca kanal düzeyinde yapılabilir. Tüm programlar, kanaldaki ayara göre ertelenir.
COLUMN_SEARCHABLE
: Bazı kanallarda arama kısıtlaması bazı bölgelerde zorunlu olabilir.COLUMN_SEARCHABLE = 0
kanalın arama sonuçlarında gösterilmemesi gerektiğini belirtir.COLUMN_BROWSABLE
: Yalnızca sistem uygulamaları tarafından görülebilir. Kanala uygulamalar tarafından göz atılmasını kısıtlama.COLUMN_BROWSABLE = 0
, kanalın kanal listesine dahil edilmemesi gerektiği anlamına gelir.COLUMN_LOCKED
: Yalnızca sistem uygulamaları tarafından görülebilir. PIN kodu girmeden kanalın geçersiz hesaplar tarafından görüntülenmesini kısıtlama.COLUMN_LOCKED = 1
, kanalın ebeveyn denetimiyle korunması gerektiği anlamına gelir.
Alanların daha kapsamlı bir listesi için android/frameworks/base/media/java/android/media/tv/TvContract.java
bölümüne bakın.
İzinler ve erişim denetimi
Tüm alanlar, ilgili satıra erişimi olan herkes tarafından görülebilir. Kullanıcılar hiçbir alana doğrudan erişemez. Yalnızca TV uygulaması, sistem uygulamaları veya TV girişlerinin gösterdiği alanları görürler.
- Her satırda, TvProvider.java üzerinden sorgu, ekleme ve güncelleme işlemlerinde kontrol edilen, satırın sahibi olan paket (uygulama)
PACKAGE_NAME
bulunur. TV girişi yalnızca yazdığı bilgilere erişebilir ve diğer TV girişleri tarafından sağlanan bilgilerden ayrılır. - Kullanılabilir kanalları belirlemek için AndroidManifest.xml üzerinden OKUMA ve YAZMA izinleri (kullanıcı izni gerektirir).
- Yalnızca
signatureOrSystem
uygulamaları, veritabanının tamamına erişmek içinACCESS_ALL_EPG_DATA
izni alabilir.
TV Girişi Yöneticisi
TV Giriş Yöneticisi, genel Android TV Giriş Çerçevesi için merkezi bir sistem API'si sağlar. Uygulamalar ve TV girişleri arasındaki etkileşimi yönetir ve ebeveyn denetimi işlevleri sağlar. TV Giriş Yöneticisi oturumları, TV girişleriyle bire bir oluşturulmalıdır. TV Giriş Yöneticisi, yüklü TV girişlerine erişime izin verir. Böylece uygulamalar:
- TV girişlerini listeleme ve durumlarını kontrol etme
- Oturum oluşturma ve dinleyicileri yönetme
Oturumlarda, TV Girişi yalnızca TV Uygulaması tarafından TV Sağlayıcı veritabanına eklediği URI'lere ayarlanabilir. TvContract.buildChannelUriForPassthroughInput()
kullanılarak ayarlanabilen geçiş TV Girişleri bu kuralın dışındadır.
TV girişinin ses seviyesi de ayarlanmış olabilir. Cihaz üreticisi tarafından sağlanan ve imzalanan (imza uygulamaları) veya sistem bölümüne yüklenen diğer uygulamalar tarafından sağlanan TV girişleri, TV sağlayıcı veritabanının tamamına erişebilir. Bu erişim, mevcut tüm TV kanallarında ve programlarında gezinmek ve arama yapmak için uygulamalar oluşturmak amacıyla kullanılabilir.
Bir uygulama, TV girişinin durum değişikliğinde veya TV girişinin eklenmesi ya da kaldırılması durumunda geri aranmak üzere TvInputCallback
oluşturup android.media.tv.TvInputManager
ile kaydedebilir. Örneğin, bir TV uygulaması, TV girişi bağlantısı kesildiğinde bunu bağlantısı kesilmiş olarak gösterip seçilmesini engelleyerek tepki verebilir.
TV Giriş Yöneticisi, TV uygulaması ile TV girişleri arasındaki iletişimi soyutlar. TV Giriş Yöneticisi ve TV Girişi'nin standart arayüzü, birden fazla cihaz üreticisinin kendi TV uygulamalarını oluşturmasına olanak tanırken tüm üçüncü taraf TV girişlerinin tüm TV uygulamalarında çalışmasına yardımcı olur.
TV Girişleri
TV girişleri, AndroidManifest.xml dosyası içermeleri ve yüklenmeleri (Play üzerinden, önceden yüklenmiş veya yan yüklenmiş) açısından Android uygulamalarıdır. Android TV; önceden yüklenmiş sistem uygulamalarını, cihaz üreticisi tarafından imzalanmış uygulamaları ve üçüncü taraf TV girişlerini destekler.
HDMI girişi veya yerleşik tuner girişi gibi bazı girişler, doğrudan temel donanımla iletişim kurdukları için yalnızca üretici tarafından sağlanabilir. IPTV, yer değiştirme ve harici STB gibi diğerleri ise Google Play Store'da üçüncü taraflarca APK olarak sağlanabilir. İndirilip yüklendikten sonra yeni giriş, TV uygulamasında seçilebilir.
Passthrough giriş örneği

Bu örnekte, cihaz üreticisi tarafından sağlanan TV girişi güvenilir ve TV sağlayıcısına tam erişime sahip. Geçiş TV girişi olarak TV sağlayıcıya herhangi bir kanal veya program kaydetmez. Geçiş girişine referans vermek için kullanılan URI'yi almak üzere android.media.tv.TvContract
yardımcı yöntemini kullanın buildChannelUriForPassthroughInput(String inputId)
.
TV uygulaması, HDMI TV girişine ulaşmak için TV Giriş Yöneticisi ile iletişim kurar.
Dahili tarayıcı örneği

Bu örnekte, cihaz üreticisi tarafından sağlanan yerleşik tuner TV girişi güvenilir ve TV sağlayıcıya tam erişime sahip.
Üçüncü taraf girişi örneği

Bu örnekte, harici STB TV girişi üçüncü taraf tarafından sağlanmaktadır. Bu TV Girişi, gelen HDMI video akışına doğrudan erişemediğinden TV Girişi Yöneticisi'nden geçmesi ve cihaz üreticisi tarafından sağlanan HDMI TV Girişi'ni kullanması gerekir.
TV Giriş Yöneticisi aracılığıyla harici STB TV Girişi, HDMI TV Girişi ile iletişim kurabilir ve HDMI1'de videoyu göstermesini isteyebilir. Bu nedenle, STB TV Girişi TV'yi kontrol edebilirken üretici tarafından sağlanan HDMI TV Girişi videoyu oluşturur.
Pencere içinde pencere (PIP) örneği

Yukarıdaki şema, uzaktan kumandadaki düğmelerin resim içinde resim (PIP) gösterimi için belirli bir TV girişine nasıl iletildiğini gösterir. Bu tuş basma işlemleri, cihaz üreticisi tarafından sağlanan donanım sürücüsü tarafından yorumlanır. Donanım tarama kodları, Android anahtar kodlarına dönüştürülür ve standart Android giriş hattına iletilir. InputReader
ve InputDispatcher
işlevleri, KeyEvents olarak çalışır.
Bu işlemler, odaklanılmışsa TV uygulamasında etkinlikleri tetikler.
Yalnızca sistem TV girişleri InputEvents
almaya uygundur ve yalnızca RECEIVE_INPUT_EVENT
sistem iznine sahipse uygundur.
TV girişi, hangi InputEvent'lerin kullanılacağını belirlemekten sorumludur ve TV uygulamasının, kullanması gerekmeyen tuşları işlemesine izin vermelidir.
TV uygulaması, hangi sistem TV girişinin etkin olduğunu (yani kullanıcı tarafından seçildiğini) bilmekten ve gelen KeyEvents
girişlerini netleştirip doğru TV Giriş Yöneticisi oturumuna yönlendirmekten sorumludur. Ayrıca, etkinliği ilişkili TV girişine iletmek için dispatchInputEvent()
işlevini çağırır.
MHEG-5 giriş örneği
Aşağıdaki şemada, KeyEvents
öğelerinin Android TIF üzerinden nasıl yönlendirildiğine dair daha ayrıntılı bir görünüm sunulmaktadır.

Kullanıcıların televizyonlarında etkileşimli uygulamalara erişmesine olanak tanımak için Avrupa'da yaygın olarak kullanılan bir kırmızı düğme uygulamasının akışını gösterir. Bu aktarım akışıyla bir uygulama yayınlanabilir. Bu düğme tıklandığında kullanıcılar bu yayın uygulamalarıyla etkileşimde bulunabilir. Örneğin, ilgili web sayfalarına veya spor skorlarına erişmek için bu yayın uygulamalarını kullanabilirsiniz.
Yayın uygulamalarının TV uygulamasıyla nasıl etkileşim kurduğunu öğrenmek için Yayın uygulaması bölümüne bakın.
Bu örnekte:
- TV uygulaması odaklanmıştır ve tüm tuşları alır.
KeyEvents
(ör.kırmızı düğme), etkin TV girişineInputEvents.
olarak iletilir.- Sistem TV Girişi, MHEG-5 yığınıyla entegre olur ve
RECEIVE_INPUT_EVENT
sistem iznine sahiptir. - Etkinleştirme tuş kodu (ör. kırmızı düğme) alındığında TV girişi, yayın uygulamasını etkinleştirir.
- TV girişi,
KeyEvents
olarakInputEvents
tüketir. Yayın uygulaması odaklanmıştır ve kapatılana kadarInputEvents
işler.
Not: Üçüncü taraf TV girişleri hiçbir zaman anahtar almaz.
TV Girişi Donanım Soyutlama Katmanı
TV Girişi HAL'si, TV'ye özel donanıma erişmek için TV girişlerinin geliştirilmesine yardımcı olur.
Diğer Android HAL'lerinde olduğu gibi, TV Girişi HAL'si (tv_input
) AOSP kaynak ağacında bulunur ve satıcı kendi uygulamasını geliştirir.
Not: Android 14'ten itibaren TV girişi HAL arayüzü AIDL kullanılarak tanımlanır.
TV uygulaması
Sistem TV uygulaması, kullanıcıya canlı TV içeriği sunar. Android platformuyla birlikte bir referans TV uygulaması (Canlı TV) sağlanır. Bu uygulama olduğu gibi kullanılabilir, özelleştirilebilir, genişletilebilir veya cihaz üreticileri tarafından değiştirilebilir. Kaynak kodu Android Açık Kaynak Projesi'nde mevcuttur. Referans TV uygulaması makalesinde bu kodla ilgili çalışmaya başlayabilirsiniz.
Cihaz üreticileri, TV uygulamalarını genişleterek cihaza özel veya ülkeye özel özellikler uygulayabilir. Ancak bu, TIF'in veya referans TV uygulamasının kapsamı dışındadır.
Sistem TV uygulamasının en azından aşağıdaki görevleri yerine getirmesi gerekir:
Kurulum ve yapılandırma
- TV girişlerini otomatik olarak algılama
- TV girişlerinin kanal kurulumunu başlatmasına izin verme
- Ebeveyn ayarlarını kontrol etme
- Kanalları düzenle
Görüntülenen içerik
- Tüm TV kanallarına erişme ve kanallar arasında gezinme
- TV programı bilgi çubuğuna erişme
- Elektronik Program Rehberi (EPG) verilerini görüntüleme
- Birden fazla ses ve altyazı parçasını destekleme
- Ebeveyn denetimi PIN'iyle ilgili zorlukları çözme
- TV standardı (HbbTV vb.) için TV girişi kullanıcı arayüzü yer paylaşımına izin ver
- TV kanalları ve programları için arama sonuçlarını doldurma
- Uygulama bağlantısı kartlarını gösterme
- Zaman kaydırma API'lerini destekleme
- DVR işlevselliğini yönetme ve TV kayıt API'lerini destekleme
Bu özellik seti, platform TIF API'lerinin genişletildiği yeni Android sürümleriyle birlikte artacaktır. CTS Doğrulayıcı, uyumluluk testi kapsamını sağlar.
Üçüncü taraf TV girişleri için destek
Android TV, üçüncü taraf TV girişleri için geliştirici API'leri sağlar. Bu sayede, yüklü uygulamalar canlı TV deneyimine yazılım kanalları sunabilir. Uyumlu bir Android cihaz uygulaması sağlamak için sistem TV uygulamasının, üçüncü taraf TV girişlerini ve kanallarını kullanıcıya gösterme konusunda bazı sorumlulukları vardır. Referans alınan Canlı TV uygulaması, uyumlu bir uygulama sunar. Cihaz üreticileri, sistem TV uygulamasının yerine kendi uygulamalarını kullanacaklarsa tüm Android TV cihazlarında geliştiricilerin beklentilerini karşılamak için uygulamalarının benzer uyumluluk özelliklerine sahip olmasını sağlamalıdır.
Sistem TV uygulaması, cihazın varsayılan canlı TV hizmetinin yanı sıra üçüncü taraf girişlerini de göstermelidir. Geliştirici API'lerinin vaadi, kullanıcıların kanalları (yüklendikten sonra) standart TV deneyimlerinde bulabilmeleridir.
Android CDD'nin TV uygulaması bölümünde tanımlandığı şekilde, yerleşik kanallar ile üçüncü taraf kanalları arasında görsel farklılaştırmaya izin verilir.
Aşağıdaki bölümlerde, Canlı TV uygulamasının CDD şartlarını nasıl karşıladığı gösterilmektedir.
Yeni kanal kurulumu
Yeni üçüncü taraf girişlerinin/kanallarının eklenmesi, kullanıcının Google Play gibi bir uygulama mağazasından TV girişi bulup yüklemesiyle başlar.
Bazı üçüncü taraf TV girişleri, kanalları TvProvider veritabanına otomatik olarak ekler. Ancak çoğu, kullanıcının kanallarını ayarlamasına, giriş ayrıntılarını sağlamasına ve diğer işlemleri yapmasına olanak tanıyan bir Kurulum etkinliği sağlar. Sistem TV uygulaması, kullanıcının bu kurulum etkinliğini etkinleştirebilmesini sağlamalıdır. Bu nedenle CDD, üçüncü taraf girişlerinin ana TV uygulamasından en az sayıda gezinme işlemiyle erişilebilmesini gerektirir.
Referans Canlı TV uygulaması, girişlere erişmek için Kanal Kaynakları menüsünü sağlar.




Ayrıca, yeni bir TV girişi yüklendikten sonra kullanıcıyı doğrudan Kurulum'a yönlendirmek için TV Uygulaması menüsünün en üstünde bir bildirim kartı gösterilir:

Kullanıcı bildirim üzerinden işlem yaparsa kaynaklarını Şekil 10'da gösterildiği gibi ayarlamayı seçebilir.
Bu alandaki geliştirici beklentileri için TV Giriş Hizmetinizi Tanımlama başlıklı makaleyi inceleyin.
Kanal listesini özelleştirme
Cihaz üreticileri, belirli kanalları gizlemek ve kullanıcıların kendi EPG'lerini yönetmesini sağlamak için bir kullanıcı arayüzü sunabilir. Canlı TV'de bu özellik bulunur.


EPG
Üçüncü taraf giriş geliştiricilerin, kullanıcıların genel kullanım sırasında tüm uyumlu Android TV cihazlarda kanallarına kolayca gidebileceğinden emin olması gerekir.
Üçüncü taraf girişlerinden gelen kanallar, cihazın standart canlı TV deneyimi EPG'sinin bir parçası olarak sunulmalıdır. Üçüncü taraf kanallar için görsel ayırma veya ayrı kategoriler kullanılabilir (Android CDD'nin TV uygulaması bölümüne bakın). Önemli olan, kullanıcıların yükledikleri kanalları bulabilmesidir.
Arat
Üreticiler, en iyi kullanıcı deneyimini sağlamak için küresel arama istekleriyle ilgili arama sonuçlarını içerecek şekilde TV uygulamasını uygulamalıdır. Canlı TV, üçüncü taraf girişlerinden (platform uyumluluğu için gereklidir) ve yerleşik girişlerden sonuç sağlayan bir uygulama sunar (bkz. ).
Zaman kaydırma
Android 6.0 ve sonraki sürümlerin yüklü olduğu cihazlarda TV uygulaması, Android framework time shifting API'lerini desteklemelidir. Ayrıca üreticiler, TV uygulamasında oynatmayı duraklatma, devam ettirme, geri sarma ve ileri sarma işlemlerine olanak tanıyan oynatma kontrolleri uygulamalıdır.
Zaman kaydırma özelliğini destekleyen TV girişlerinde, TV uygulamasının oynatma kontrollerini göstermesi gerekir.

DVR
Android 7.0 ve sonraki sürümlerin yüklü olduğu cihazlarda, kaydedilen programların desteklenmesi, listelenmesi ve oynatılması için TV uygulamasının Android çerçevesi TV kayıt API'lerini desteklemesi gerekir.
Bu sayede cihaz üreticileri DVR alt sistemlerini TIF'ye bağlayabilir ve TV cihazında DVR işlevselliğini etkinleştirmek veya entegre etmek için gereken entegrasyon çabasını önemli ölçüde azaltabilir. Ayrıca, üçüncü tarafların Android TV cihazına takılabilen satış sonrası DVR sistemleri sağlamasına da olanak tanır.
TV uygulaması, canlı içerikleri kaydetmenin yanı sıra kaynak çakışmalarını da yönetir. Örneğin, cihazda iki tuner varsa aynı anda iki program kaydedilebilir. Kullanıcı üç kayıt isteğinde bulunursa TV uygulaması çakışmayı yönetmeli ve bildirim göstermeli veya kullanıcıdan bu istekler için öncelik planlamasını istemelidir.
TV uygulamaları, bir bölümü kaydetmek isteyen kullanıcıya dizinin gelecekteki tüm bölümlerini kaydetmek isteyip istemediğini sormak gibi daha karmaşık bir mantık da uygulayabilir.
Android TV'de olası bir DVR uygulaması hakkında bilgi edinmek için aşağıdaki şemaya bakın.

- TV Giriş Hizmeti, TV Uygulaması'na kaç tuner olduğunu bildirir. Böylece TV Uygulaması, olası kaynak çakışmalarını yönetebilir.
- TV uygulaması, kullanıcının başlattığı bir TV programını kaydetme isteği alır.
- TV uygulaması, kayıt programını dahili veritabanında saklar.
- Kayıt zamanı geldiğinde TV uygulaması, kaydın ilişkili olduğu kanala geçme isteği gönderir.
- TV Giriş Hizmeti bu isteği alır, uygun kaynakların olup olmadığına dair yanıt verir ve kanalı ayarlar.
- Ardından TV uygulaması, kayıt başlatma isteğini TV Giriş Yöneticisi'ne iletir.
- TV Giriş Hizmeti bu isteği alır ve kayda başlar.
- TV Giriş Hizmeti, gerçek video verilerini depolama alanında saklar. Bu depolama alanı, harici depolama alanı veya bulut depolama alanı olabilir.
- Kayıt sona erdiğinde TV Uygulaması, kayıt durdurma isteğini TV Giriş Yöneticisi'ne iletir.
- TV Giriş Hizmeti isteği aldıktan sonra kaydı durdurur ve ilişkili meta verilerini TV Sağlayıcı'ya ekler. Böylece TV Uygulaması, istendiğinde kaydı kullanıcılara gösterebilir.
TV Girişi hizmetinizde Kayıt özelliklerini uygulama hakkında daha fazla bilgi için bu TV Kaydı makalesine bakın.
Faydalı kaynaklar
- Android CDD ve belgelenmiş geliştirici API'leri kesin referanslardır.
- CTS Verifier, uyumluluk testi programının bir parçası olarak API'leri kullanır. Bu testi Canlı TV'de çalıştırmak, EPG, Arama, Ebeveyn Denetimi ve diğer şartları üçüncü taraf girişleri bağlamında görmek için faydalı bir yöntem olabilir.
- Bu alandaki geliştirici beklentileri için TV Giriş Hizmetinizi Tanımlama başlıklı makaleyi inceleyin.
Ebeveyn denetimi
Ebeveyn denetimi, kullanıcıların istenmeyen kanalları ve programları engellemesine olanak tanır ancak kullanıcılar PIN kodu girerek engellemeyi atlayabilir.
Ebeveyn denetimi işlevinin sorumluluğu TV uygulaması, TV Giriş Yöneticisi hizmeti, TV sağlayıcı ve TV girişi arasında paylaşılır.
Ebeveyn denetimi zorunludur ve CTS Verifier kapsamındadır.
Birçok ülke, TV girişlerinin TVContentRating API aracılığıyla kullanabileceği derecelendirme sistemleri tanımlamıştır. Ayrıca, TV girişleri kendi özel derecelendirme sistemlerini kaydedebilir. Bu durum, "sahte" bir derecelendirme sunan CTS Verifier testiyle gösterilmiştir. Standart bir derecelendirme sisteminin bulunduğu ülkelerde, cihaz üreticilerinin TV Giriş Çerçevesi Ebeveyn Denetimi'ni dahil edebilecekleri diğer mekanizmalarla birleştirmeleri önerilir.
TV sağlayıcısı
Her kanal satırında, PIN kodu girmeden belirli kanalların görüntülenmesini engellemek için kullanılan bir COLUMN_LOCKED
alanı bulunur. Program alanı
COLUMN_CONTENT_RATING
gösterim amaçlıdır ve ebeveyn denetimini zorunlu kılmak için kullanılmaz.
TV Girişi Yöneticisi
TV Giriş Yöneticisi, engellenen her TvContentRating
öğesini saklar ve isRatingBlocked()
öğesine yanıt vererek belirli bir derecelendirmeye sahip içeriğin engellenip engellenmemesi gerektiğini bildirir.
TV Girişi
TV Girişi, gösterilen içeriğin derecelendirmesi değiştiğinde (program veya kanal değişikliğinde) ya da ebeveyn denetimi ayarları değiştiğinde (ACTION_BLOCKED_RATINGS_CHANGED
ve ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
) TV Giriş Yöneticisi'nde isRatingBlocked()
işlevini çağırarak mevcut içeriğin engellenip engellenmemesi gerektiğini kontrol eder. İçeriğin engellenmesi gerekiyorsa TV Girişi, sesi ve videoyu devre dışı bırakır ve notifyContentBlocked(TvContentRating)
işlevini çağırarak TV uygulamasına mevcut içeriğin engellendiğini bildirir. İçeriğin engellenmemesi gerekiyorsa TV Girişi, ses ve videoyu etkinleştirir ve notifyContentAllowed()
işlevini çağırarak TV Uygulaması'na mevcut içeriğe izin verildiğini bildirir.
TV uygulaması
Ebeveyn denetimi API'lerini desteklemek ve bu nedenle uyumlu bir platform oluşturmak için sistem TV uygulamasının, kullanıcıların ebeveyn denetimini yönetebileceği bir yol sağlaması gerekir. Bu, belirli uygulamalar tarafından kaydedilen özel derecelendirmeler için de geçerlidir.
TV Uygulaması, mevcut içeriğin engellendiği konusunda bir TV Girişi tarafından bilgilendirildiğinde veya kullanıcı engellenen bir kanalı görüntülemeye çalıştığında PIN kodu kullanıcı arayüzünü gösterir.
TV uygulaması, ebeveyn denetimi ayarlarını doğrudan depolamaz. Kullanıcı ebeveyn denetimi ayarlarını değiştirdiğinde, engellenen her TvContentRating
TV Giriş Yöneticisi tarafından, engellenen kanallar ise TV Sağlayıcı tarafından saklanır.
TV uygulamasının, ebeveyn denetimi ayarlarını değiştirmek için android.permission.MODIFY_PARENTAL_CONTROLS
iznini bildirmesi gerekir.
Cihaz üreticilerinin şunları yapması önerilir:
- Uyumluluk şartlarını gösteren bir örnek için CTS Verifier ebeveyn denetimleri testini referans Canlı TV uygulamasına göre yapın.
- Kendi TV uygulamaları için referans olarak Canlı TV uygulamasını kullanın. Özellikle ContentRatingsManager ve RatingSystemsFragment kaynağına ve özel derecelendirmeleri nasıl işlediklerine bakın.
HDMI-CEC
HDMI-CEC, bir cihazın diğerini kontrol etmesine olanak tanır. Böylece tek bir uzaktan kumanda, ev sinemasındaki birden fazla cihazı kontrol edebilir. Android TV tarafından kurulumu hızlandırmak ve merkezi TV uygulaması aracılığıyla çeşitli TV girişlerinin uzaktan kontrol edilmesini sağlamak için kullanılır. Örneğin, girişleri değiştirebilir, cihazları açıp kapatabilir ve daha fazlasını yapabilir.
Android TIF, HDMI-CEC'yi HDMI Kontrol Hizmeti olarak uygular. Böylece cihaz üreticilerinin yalnızca hafif Android TV HAL ile etkileşime giren düşük seviyeli sürücüler geliştirmesi gerekir ve daha karmaşık iş mantığı atlanır. Android, standart bir uygulama sağlayarak parçalanmış uygulamaları ve seçici özellik desteğini azaltarak uyumluluk sorunlarını azaltmayı amaçlar. HDMI Kontrol Hizmeti, giriş ve güç dahil olmak üzere mevcut Android hizmetlerini kullanır.
Bu nedenle, mevcut HDMI-CEC uygulamalarının Android TIF ile birlikte çalışacak şekilde yeniden tasarlanması gerekir. Donanım platformunun, CEC güç açma ve diğer komutları alabilmesi için bir mikroişlemci içermesini öneririz.

- CEC veri yolu, şu anda etkin olan kaynaktan farklı bir kaynağa geçiş yapma komutu alır.
- Sürücü, komutu HDMI-CEC HAL'ye iletir.
- HAL, tüm
ActiveSourceChangeListeners
öğelerini bilgilendirir. - HDMI Kontrol Hizmeti, kaynak değişikliği hakkında
ActiveSourceChangeListener
üzerinden bilgilendirilir. - TV Giriş Yöneticisi hizmeti, TV uygulamasının kaynağı değiştirmesi için bir amaç oluşturur.
- TV uygulaması daha sonra geçiş yapılan TV girişi için bir TV Giriş Yöneticisi Oturumu oluşturur ve bu oturumda
setMain
işlevini çağırır. - TV Giriş Yöneticisi Oturumu bu bilgiyi HDMI TV Girişi'ne iletir.
- HDMI TV girişi, bant dışı yüzey ayarlamayı ister.
- TV Giriş Yöneticisi Hizmeti, yüzey ayarlandığında HDMI Kontrol Hizmeti'ne karşılık gelen bir yönlendirme kontrolü komutu oluşturur.
TV entegrasyonu yönergeleri
Yayın uygulaması
Her ülkenin yayına özgü şartları (MHEG, Teleteks, HbbTV vb.) olduğundan üreticilerin yayın uygulaması için kendi çözümlerini sunmaları beklenir. Örneğin:
- MHEG: yerel yığın
- Teleteks: doğal yığın
- HbbTV: Vewd Software'in HbbTV çözümü
Android L sürümünde Android TV, cihaz üreticilerinin sistem entegratörlerini veya bölgesel TV yığınları için Android çözümlerini kullanmasını, yüzeyi TV yazılım yığınlarına aktarmasını ya da eski yığınlarla etkileşim kurmak için gerekli anahtar kodunu aktarmasını bekler.
Yayın uygulaması ile TV uygulaması arasındaki etkileşim şu şekilde gerçekleşir:
- TV uygulaması odaklanmış durumdadır ve tüm tuşları alır.
- TV uygulaması, tuşları (ör. kırmızı düğme) TV giriş cihazına iletir.
- TV Giriş cihazı, eski TV yığınıyla dahili olarak entegre olur.
- Etkinleştirme tuş kodu (ör. kırmızı düğme) alındığında TV Giriş cihazı, yayın uygulamalarını etkinleştirir.
- Yayın uygulaması, TV uygulamasında odak noktası olur ve kullanıcı işlemlerini yönetir.
Sesli arama/öneri için yayın uygulaması, sesli arama için uygulama içi aramayı destekleyebilir.