Android TV Giriş Çerçevesi (TIF), canlı içeriklerin Android TV'ye yayınlanmasını kolaylaştırır. Android TIF, üreticilerin Android TV'yi kontrol etmek için giriş modülleri oluşturmaları amacıyla standart bir API sağlar ve TV girişi tarafından yayınlanan meta veriler aracılığıyla canlı TV araması ve önerileri sunar.
Çerçeve, TV standartlarını veya bölgesel gereksinimleri uygulamayı amaçlamaz ancak cihaz üreticilerinin yeniden uygulamaya gerek kalmadan bölgesel dijital TV yayın standartlarını karşılamalarını kolaylaştırır. Bu bölümdeki dokümanlar, özel TV girişleri oluşturmak isteyen üçüncü taraf uygulama geliştiricileri için de yararlı olabilir.
Bileşenler
Android TV Giriş Çerçevesi uygulaması bir TV Giriş Yöneticisi içerir. TIF, yerleşik ve IP tuner kanallarına erişmek için üçüncü taraf uygulamasıyla değiştirilemeyen bir sistem uygulaması olan TV uygulamasıyla çalışır. TV uygulaması, TV giriş modülleri ile TV giriş yöneticisi üzerinden cihaz üreticisi veya diğer taraflar tarafından sağlanır.
TV girişi çerçevesi şunları içerir:
- TV sağlayıcı (
com.android.providers.tv.TvProvider
): Kanalların, programların ve ilişkili izinlerin bulunduğu bir veritabanı - TV uygulaması (
com.android.tv.TvActivity
): Kullanıcı etkileşimini yöneten uygulama - TV Girişi 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 kanalları ve giriş bağlantı noktalarını temsil eden bir uygulamadır.
- TV girişi HAL'i (
tv_input
modülü): Sistem TV girişlerinin uygulandığında TV'ye özgü donanıma erişmesine olanak tanıyan bir donanım tanımı - Ebeveyn denetimi: Kanal ve programların engellenmesine olanak tanıyan teknoloji
- HDMI-CEC: HDMI üzerinden çeşitli cihazların uzaktan kontrol edilmesine olanak tanıyan teknoloji
- Tarayıcı Çerçevesi: Yerleşik TV girişi çerçevesi
- 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önetme hizmeti
Bu bileşenler aşağıda ayrıntılı olarak açıklanmıştır. Android TV Giriş Çerçevesi mimarisinin ayrıntılı görünümü için aşağıdaki şemaya bakın.
Akış
Mimari şu şekilde uygulanır:
- Kullanıcı, üçüncü taraf uygulamasıyla değiştirilemeyen bir sistem uygulaması olan TV uygulamasını görür ve bu uygulamayla etkileşime geçer.
- TV uygulaması, TV girişindeki AV içeriğini gösterir.
- TV uygulaması doğrudan TV Girişleriyle konuşamaz. 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şi HAL'ine yalnızca TV girişi yöneticisi hizmeti aracılığıyla sistem TV girişleri erişebilir. TV Girişlerine, TV Giriş Yöneticisi oturumlarıyla bire bir erişilir.
- Üçüncü taraf TV girişleri, TV sağlayıcı veritabanına paket kilitli erişime sahiptir ve yalnızca eşleşen paket satırlarını OKUYABİLİR/YAZABİLİR.
- Üçüncü taraf TV girişleri, kendi içeriklerini veya cihaz üreticisinin HDMI1 gibi geçişli TV girişlerinden gelen içerikleri görüntüleyebilir. Yerleşik veya IPTV tuner gibi geçiş yapmayan TV girişlerinden gelen içerikleri gösteremezler.
TV_INPUT_HARDWARE
iznini alan donanım TV girişi uygulaması, TV girişi yöneticisi hizmetini tetikleyerek TV girişi hizmetini başlatma işleminde TV girişi yöneticisi hizmetini çağırmasını ve TV girişlerini eklemesini sağlar. Bu izin, donanımsal TV Girişi uygulamasının, her TV Girişi hizmeti için birden fazla TV Girişi'ni desteklemesine, ayrıca desteklenen TV Girişlerini dinamik olarak ekleyip kaldırmasına olanak tanır.
TV Sağlayıcı
TV sağlayıcı veritabanı, TV girişlerindeki kanalları ve programları depolar. 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 kendi sağladığı kanalları ve programları görebilir. 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"e eşler. TV girişleri, "yayın türü"nün temel yayın standardındaki değerle doldurulmasından sorumludur ve "kanonik tür" alanı, android.provider.TvContract.Genres
kaynağındaki doğru ilişkili türle otomatik olarak doldurulur. Örneğin, yayın standardı ATSC A/65 ve türü 0x25 ("Spor" anlamına gelir) olan programda TV Girişi, "yayın türü" alanını "Spor" dizesiyle doldurur ve TV Sağlayıcı, "kanonik tür" alanını eşlenen değer android.provider.TvContract.Genres.SPORTS
ile doldurur.
TV sağlayıcının ayrıntılı görünümü için aşağıdaki şemaya bakın.
TV sağlayıcı veritabanının tamamını yalnızca ayrıcalıklı sistem bölümündeki uygulamalar okuyabilir.
Geçiş TV girişleri kanalları ve programları depolamaz.
TV sağlayıcı veritabanı, kanallar ve programlar için standart alanlara ek olarak her tabloda TV girişlerinin rastgele verileri depolamak için kullanabileceği COLUMN_INTERNAL_PROVIDER_DATA
adlı bir BLOB türü alan da sunar. Bu BLOB verileri, ilişkili kanal ayarlayıcının frekansı gibi özel bilgiler içerebilir ve bir protokol arabelleğinde veya başka bir biçimde sağlanabilir. Arama yapılabilir alan, belirli kanalların aramada kullanılamamasını sağlamak için kullanılabilir (ör. içerik korumasıyla ilgili ülkeye özgü koşulları karşılamak için).
Veritabanı alanı örnekleri
TV sağlayıcı, kanal (android.provider.TvContract.Channels
) ve program (android.provider.TvContract.Programs
) tablolarındaki yapılandırılmış verileri destekler. Bu tablolar, TV Girişleri ve TV uygulaması gibi sistem uygulamaları tarafından doldurulur ve bu tablolara erişir. 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 (ör. kanalın adı (
COLUMN_DISPLAY_NAME
) veya numarası (COLUMN_DISPLAY_NUMBER
) ya da izlenen programın başlığı) içerir. - Meta veriler: İlgili standartlara göre içeriği tanımlamak için üç alan vardır. Örneğin, kanalın aktarma akış kimliği (
COLUMN_TRANSPORT_STREAM_ID
), orijinal ağ kimliği (COLUMN_ORIGINAL_NETWORK_ID
) ve hizmet kimliği (COLUMN_SERVICE_ID
). - Dahili veriler: TV Girişlerinin özel kullanımına ilişkin alanlar.
COLUMN_INTERNAL_PROVIDER_DATA
gibi bazı alanlar, TV girişinin kanal veya programıyla ilgili herhangi bir meta veriyi depolayabileceği özelleştirilebilir BLOB alanlarıdır. - İşaret: İşaret alanları, bir kanalın arama, göz atma veya görüntüleme işlemlerine erişiminin kısıtlanıp kısıtlanmayacağını gösterir. Bu ayar yalnızca kanal düzeyinde yapılabilir. Tüm programlar kanaldaki ayara bağlıdır.
COLUMN_SEARCHABLE
: Bazı kanallardan aramayı kısıtlamak belirli bölgelerde şart olabilir.COLUMN_SEARCHABLE = 0
ise kanalın arama sonuçlarında gösterilmemesi gerektiği anlamına gelir.COLUMN_BROWSABLE
: Yalnızca sistem uygulamaları tarafından görülebilir. Kanalın uygulamalar tarafından taranmasını kısıtlamaCOLUMN_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 izlenmesini kısıtlamaCOLUMN_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
İzinler ve erişim denetimi
İlgili satıra erişimi olan herkes tüm alanları görebilir. Kullanıcılar hiçbir alana doğrudan erişemez. Yalnızca TV uygulaması, sistem uygulamaları veya TV girişlerinin gösterdiği bilgileri görebilirler.
- Her satırda, TvProvider.java aracılığıyla Sorgu, Ekle, Güncelle'de kontrol edilen
PACKAGE_NAME
(satırın sahibi olan paket (uygulama)) 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ı rızası gerekir).
- 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 denetler ve ebeveyn denetimi işlevi sağlar. TV girişi yöneticisi oturumları, TV girişleriyle bire bir oluşturulmalıdır. TV Giriş Yöneticisi, yüklü TV Girişlerine erişim izni verir. Böylece uygulamalar:
- TV girişlerini listeleme ve durumlarını kontrol etme
- Oturum oluşturma ve dinleyicileri yönetme
Oturumlar için TV Girişi, TV Uygulaması tarafından yalnızca TV Sağlayıcı veritabanına eklediği URI'lere ayarlanabilir. TvContract.buildChannelUriForPassthroughInput()
kullanılarak ayarlanabilen geçişli TV girişleri bu kapsamda değildir.
TV girişinin ses düzeyi de ayarlanabilir. Cihaz üreticisi tarafından sağlanan ve imzalanan TV girişleri (imza uygulamaları) veya sistem bölümüne yüklenen diğer uygulamalar, TV sağlayıcı veritabanının tamamına erişebilir. Bu erişim, mevcut tüm TV kanallarına ve programlarına göz atıp arama yapmak için uygulamalar oluşturmak amacıyla kullanılabilir.
Bir uygulama, TV girişinin durumundaki bir değişiklikte veya TV girişinin eklenmesi ya da kaldırılması durumunda geri çağrılmak için TvInputCallback
oluşturup android.media.tv.TvInputManager
ile kaydedebilir. Örneğin, bir TV Uygulaması, TV Girişi bağlantısı kesildiğinde, onu bağlı olarak görüntüleyerek ve seçimini 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çeren ve yüklenen (Play aracılığıyla, önceden yüklü veya başka cihazdan yüklenmiş) Android uygulamalarıdır. Android TV önceden yüklenmiş sistem uygulamalarını, cihaz üreticisi tarafından imzalanan 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 kurduğundan yalnızca üretici tarafından sağlanabilir. IPTV, yer değiştirme ve harici STB gibi diğer hizmetler, üçüncü taraflarca Google Play Store'da APK olarak sağlanabilir. İndirilip yüklendikten sonra yeni giriş TV uygulamasından seçilebilir.
Geçiş girişi örneği
Bu örnekte, cihaz üreticisi tarafından sağlanan TV girişi güvenilirdir ve TV sağlayıcıya tam erişime sahiptir. Geçiş yapan bir TV girişi olarak TV sağlayıcıya herhangi bir kanal veya program kaydetmez. Geçiş girişini referans olarak kullanmak için kullanılan URI'yi almak üzere android.media.tv.TvContract
yardımcı program yöntemini buildChannelUriForPassthroughInput(String inputId)
kullanın.
TV uygulaması, HDMI TV girişine ulaşmak için TV Giriş Yöneticisi ile iletişim kurar.
Yerleşik tuner örneği
Bu örnekte, cihazın üreticisi tarafından sağlanan Yerleşik Tarayıcı TV Girişi güvenilirdir ve TV Sağlayıcısına tam erişime sahiptir.
Üçüncü taraf girişi örneği
Bu örnekte, harici STB TV Girişi bir üçüncü tarafça sağlanmaktadır. Bu TV girişi, gelen HDMI video feed'ine doğrudan erişemediğinden TV girişi yöneticisinden geçmeli ve cihaz üreticisi tarafından sağlanan HDMI TV girişini kullanmalıdır.
Harici STB TV Girişi, TV Giriş Yöneticisi aracılığıyla HDMI TV Girişi ile konuşabilir ve videonun HDMI1'de gösterilmesini isteyebilir. Böylece 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 şemada, uzaktan kumandadaki düğmelerin, pencere içinde pencere (PIP) ekranı için belirli bir TV girişine nasıl aktarıldığı gösterilmektedir. Bu düğme basışları, cihaz üreticisi tarafından sağlanan donanım sürücüsü tarafından yorumlanır. Donanım tarama kodları Android tuş kodlarına dönüştürülür ve standart Android giriş ardışık düzenine iletilir. InputReader
ve InputDispatcher
, KeyEvents olarak işlev görür.
Bu da, odaktaysa TV uygulamasında etkinlikleri tetikler.
Yalnızca sistem TV Girişleri ve RECEIVE_INPUT_EVENT
sistem iznine sahip olduklarında InputEvents
verilerini almaya uygundur.
TV Girişi, hangi Giriş Etkinliklerinin tüketileceğini belirlemekten sorumludur ve TV Uygulaması'nın kullanması gerekmeyen tuşları kullanmasına izin vermelidir.
TV Uygulaması, hangi sistem TV Girişi'nin etkin olduğunu bilmekten, yani kullanıcı tarafından
seçildiğinden ve gelen KeyEvents
belirsizliğini belirleyip etkinliği ilişkili TV Girişi'ne iletmek için
dispatchInputEvent()
çağrısına basarak doğru TV Giriş Yöneticisi oturumuna yönlendirmekten sorumludur.
MHEG-5 giriş örneği
Aşağıdaki şemada, KeyEvents
'in Android TIF üzerinden nasıl yönlendirildiğine dair daha ayrıntılı bir görünüm gösterilmektedir.
Bu görselde, Avrupa'da kullanıcıların televizyonlarındaki etkileşimli uygulamalara erişmesine olanak tanıyan Kırmızı Düğme uygulamasının akışı gösterilmektedir. Uygulamalar bu aktarma akışı üzerinden yayınlanabilir. Düğme tıklandığında kullanıcıların bu yayın uygulamalarıyla etkileşime geçmesine olanak tanır. Ö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ı ile nasıl etkileşimde bulunduğunu öğrenmek için Yayın uygulaması bölümüne bakın.
Bu örnekte:
- TV uygulaması odaktadır ve tüm anahtarları alır.
KeyEvents
(ör. kırmızı düğme) etkin TV'ye iletilirInputEvents.
olarak giriş- Sistem TV girişi, MHEG-5 yığınıyla entegre olur ve
RECEIVE_INPUT_EVENT
sistem iznine sahiptir. - TV girişi, etkinleştirme anahtar kodunu (ör. kırmızı düğme) aldığında yayın uygulamasını etkinleştirir.
- TV girişi,
InputEvents
olarakKeyEvents
tüketir ve yayın uygulaması, kapatılana kadar odak noktasıdır veInputEvents
'ı yönetir.
Not: Üçüncü taraf TV girişleri hiçbir zaman tuşları almaz.
TV Girişi HAL
TV girişi HAL'i, TV'ye özgü donanıma erişmek için TV girişlerinin geliştirilmesine yardımcı olur.
Diğer Android HAL'lerde olduğu gibi TV girişi HAL'i (tv_input
) AOSP kaynak ağacında bulunur ve satıcı tarafından uygulanır.
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 platformunun yanı sıra, cihaz üreticileri tarafından olduğu gibi kullanılabilir, özelleştirilebilir, genişletilebilir veya değiştirilebilir bir referans TV uygulaması (Canlı TV) sağlanır. Kaynak kodu, Android Açık Kaynak Projesi'nde mevcuttur. Referans TV uygulaması makalesinde bu kodu kullanmaya başlayabilirsiniz.
Cihaz üreticileri, TV uygulamalarının kapsamını cihaz üreticilerine veya ülkeye özgü özellikleri içerecek şekilde genişletebilir. Ancak bu, TIF veya referans TV uygulamasının kapsamında değildir.
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 algıla
- TV girişlerinin kanal kurulumunu başlatmasına izin verme
- Ebeveyn ayarlarını kontrol etme
- Kanalları düzenle
Görüntüleme
- 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 çok ses ve altyazı parçası desteği
- Ebeveyn denetimi PIN sorgulaması sağlayın
- 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ğlama kartlarını görüntüleme
- Zaman kaydırma API'lerini destekleme
- DVR işlevini yerine getirin ve TV kayıt API'lerini destekleyin
Bu özellik grubu, 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 API'ler, yüklü uygulamaların canlı TV deneyimine yazılım kanalları sunmasını sağlar. Uyumlu bir Android cihaz uygulamasını sağlamak için sistem TV Uygulaması, üçüncü taraf TV girişlerini ve kanallarını kullanıcıya gösterme konusunda bazı sorumluluklara sahiptir. Referans canlı TV uygulaması uyumlu bir uygulama sağlar. Sistem TV uygulamasının yerini alacaksa cihaz üreticileri, tüm Android TV cihazlarındaki geliştirici beklentilerini karşılamak için kendi uygulamalarının benzer bir uyumluluk sağladığından emin olmalı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 sunduğu avantaj, kullanıcıların kanalları (yükleme işleminden sonra) standart TV deneyimlerinde bulabilmesidir.
Android CDD'nin TV Uygulaması bölümünde belirtildiği gibi, yerleşik kanallar ile üçüncü taraf kanallar arasında görsel ayrımlara izin verilir.
Aşağıdaki bölümlerde, Canlı TV uygulamasının CDD gereksinimlerini nasıl karşıladığı gösterilmektedir.
Yeni kanal kurulumu
Yeni üçüncü taraf girişlerin/kanalları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ı otomatik olarak TvProvider veritabanına ekler. Ancak çoğu kullanıcı, kanallarını ayarlamasına, giriş bilgilerini sağlamasına ve diğer işlemleri yapabilmesine olanak tanıyan bir Kurulum etkinliği sunar. Sistem TV Uygulaması'nın, kullanıcının bu Kurulum etkinliğini etkinleştirebilmesini sağlaması gerekir. Bu nedenle CDD, ana TV uygulamasından uzaktaki gezinme işlemlerinin minimum düzeyde olmasını gerektirir.
Referans Canlı TV uygulaması, girişlere erişmek için Kanal Kaynakları menüsünü sağlar.
Ayrıca, yeni bir TvInput yüklendikten sonra, kullanıcıyı doğrudan Kuruluma yönlendirmek için TV Uygulaması menüsünün üst kısmında bir bildirim kartı gösterilir:
Kullanıcı bildirim üzerinden işlem yaparsa kaynaklarını Şekil 10'da gösterildiği gibi ayarlayabilir.
Bu alandaki geliştiricilerin beklentileri için TV Giriş Hizmetinizi Tanımlama bölümüne bakın.
Kanal listesini özelleştirme
Cihaz üreticileri, belirli kanalları gizlemek ve kullanıcıların kendi EPG'lerini yönetmelerini sağlamak için bir kullanıcı arayüzü sağlayabilir. Canlı TV bu imkanı sunar.
EPG
Üçüncü taraf giriş geliştiricileri, kullanıcıların tüm uyumlu Android TV cihazlarında genel kullanım sırasında kanallarına kolayca gidebileceğinden emin olmalıdır.
Üçü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 ayrım 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ı bulabilmeleridir.
Arat
Üreticiler, en iyi kullanıcı deneyimini sağlamak için TV uygulamasını, dünya genelindeki arama isteklerine yönelik arama sonuçlarını içerecek şekilde uygulamalıdır. Canlı TV, hem yerleşik girdilerden hem de üçüncü taraf girdilerinden (platform uyumluluğu için gereklidir) sonuç sağlayan bir uygulama sağlar (bkz. ).
Zaman kaydırma
Android 6.0 ve sonraki sürümlere sahip cihazlarda TV uygulamasının Android çerçevesi zaman kaydırma API'lerini desteklemesi gerekir. Ayrıca üreticiler, TV uygulamasında kullanıcıların oynatmayı duraklatmalarına, devam ettirmelerine, geri sarmalarına ve ileri sarmalarına olanak tanıyan oynatma kontrolleri uygulamalıdır.
Zaman değiştirmeyi destekleyen TV Girişleri için TV uygulamasının oynatma kontrollerini göstermesi gerekir.
DVR
Android 7.0 ve sonraki sürümleri çalıştıran cihazlarda TV uygulaması, kayıtlı programları desteklemek, listelemek ve oynatmak için Android çerçevesi TV kayıt API'lerini desteklemelidir.
Bu sayede cihaz üreticileri, DVR alt sistemlerini TIF'ye bağlayabilir ve TV cihazında DVR işlevini 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 sunmasına olanak tanır.
TV uygulaması, canlı içeriği kaydetmenin yanı sıra kaynak çakışmasını da yönetir. Örneğin, cihazda iki kanal tarayıcısı varsa aynı anda iki program kaydedebilir. Kullanıcı üç programı kaydetmeyi isterse TV uygulaması, çakışmayı ele almalı ve bir bildirim göstermeli veya kullanıcıdan bu istekler için öncelik belirlemesini istemelidir.
TV uygulamaları, bir bölümü kaydetme isteğinde bulunan kullanıcıya bir dizinin gelecekteki tüm bölümlerini de kaydetmek isteyip istemediğini sorma gibi daha karmaşık mantıklar da uygulayabilir.
Android TV'de olası bir DVR uygulaması için aşağıdaki şemaya bakın.
- TV Giriş Hizmeti, TV Uygulaması'nın olası kaynak çakışmalarını yönetebilmesi için TV Uygulaması'na kaç kanal ayarlayıcısı olduğunu bildirir.
- TV uygulaması, kullanıcı tarafından başlatılan 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ı, kayıtla ilişkili kanala geçme isteği gönderir.
- TV giriş hizmeti bu isteği alır, uygun kaynakların olup olmadığını belirtir ve kanala geçer.
- Daha sonra TV Uygulaması, TV Giriş Yöneticisi'ne kaydı başlatma isteği iletir.
- TV Giriş Hizmeti bu isteği alır ve kayda başlar.
- TV Giriş Hizmeti, gerçek video verilerini kendi depolama alanında depolar. Bu depolama alanı harici depolama alanı veya bulut depolama alanı olabilir.
- Kaydı bitirme zamanı geldiğinde TV Uygulaması, kaydı 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ısına ekler. Böylece TV uygulaması, istek üzerine kaydı kullanıcılara gösterebilir.
TV giriş hizmetinizde Kayıt özelliklerini uygulama hakkında daha fazla bilgi edinmek için bu TV Kaydı makalesine göz atın.
Faydalı kaynaklar
- Android CDD ve belgelenmiş geliştirici API'leri,
- CTS Doğrulayıcı, API'leri uyumluluk test programının bir parçası olarak uygular. Bu testi Canlı TV ile çalıştırmak, EPG, Arama, Ebeveyn Denetimi ve üçüncü taraf girişleri bağlamında diğer koşulları görmenin yararlı bir yolu 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 PIN kodu girerek engellemeyi atlamasına da olanak tanır.
Ebeveyn denetimi işlevinin sorumluluğu TV uygulaması, TV girişi yöneticisi hizmeti, TV sağlayıcı ve TV girişi arasında paylaşılır.
Ebeveyn denetimi zorunludur ve CTS Doğrulayıcı kapsamındadır.
Bazı ülkeler, TV girişlerinin TVContentRating API üzerinden kullanabileceği derecelendirme sistemleri tanımlamıştır. Ayrıca TV girişleri, "sahte" bir derecelendirme sunan CTS Doğrulayıcı testinde gösterildiği gibi kendi özel derecelendirme sistemlerini kaydedebilir. Standart bir derecelendirme sisteminin bulunduğu ülkelerde cihaz üreticilerinin, TV Giriş Çerçevesi Ebeveyn Denetimi'ni içerebilecekleri diğer mekanizmalarla birlikte kullanmaları önerilir.
TV sağlayıcısı
Her kanal satırında, belirli kanalların PIN kodu girmeden görüntülemesini kilitlemek için kullanılan bir COLUMN_LOCKED
alanı bulunur. Program alanı COLUMN_CONTENT_RATING
görüntüleme için tasarlanmıştır ve ebeveyn denetimini zorunlu kılmak için kullanılmaz.
TV Girişi Yöneticisi
TV giriş yöneticisi, engellenen her TvContentRating
öğesini depolar ve belirli bir derecelendirmeye sahip içeriğin engellenip engellenmeyeceğini bildirmek için isRatingBlocked()
'e yanıt verir.
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
'de) TV girişi yöneticisinde isRatingBlocked()
çağrısı yaparak mevcut içeriğin engellenip engellenmeyeceğini kontrol eder. İçeriğin engellenmesi gerekiyorsa TV girişi ses ve videoyu devre dışı bırakır ve notifyContentBlocked(TvContentRating)
çağrısı yaparak TV uygulamasına mevcut içeriğin engellendiğini bildirir. İçerik engellenmemesi gerekiyorsa TV girişi ses ve videoyu etkinleştirir ve notifyContentAllowed()
çağrısı yaparak TV uygulamasına mevcut içeriğe izin verildiğini bildirir.
TV uygulaması
Ebeveyn denetimi API'lerini desteklemek ve dolayısıyla uyumlu bir platform oluşturmak için sistem TV uygulamasının, belirli uygulamalar tarafından kaydedilen özel derecelendirmeler de dahil olmak üzere kullanıcıların ebeveyn denetimini yönetmelerine olanak tanıması gerekir.
TV uygulaması, TV girişinden mevcut içeriğin engellendiğine dair bildirim aldığında veya kullanıcı engellenen bir kanalı görüntülemeye çalıştığında PIN kodu kullanıcı arayüzü 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ısı tarafından saklanır.
TV uygulamasının, ebeveyn denetimi ayarlarını değiştirebilmek için android.permission.MODIFY_PARENTAL_CONTROLS
iznini belirtmesi gerekir.
Cihaz üreticilerinin şunları yapması önerilir:
- Uyumluluk koşullarını göstermek için CTS Doğrulayıcı ebeveyn denetimleri testini referans canlı TV uygulamasında çalıştırı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 kumandayla ev sinemasındaki birden fazla cihazı kontrol edebilirsiniz. Android TV tarafından kurulumu hızlandırmak ve merkezi TV uygulaması aracılığıyla çeşitli TV Girişleri üzerinde uzaktan kontrol sağlamak için kullanılır. Örneğin, girişleri değiştirebilir, cihazları açıp kapatabilir ve daha pek çok şey yapabilir.
Android TIF, HDMI-CEC'yi HDMI Kontrol Hizmeti olarak uygular. Böylece cihaz üreticilerinin, daha karmaşık iş mantığını atlayarak yalnızca hafif Android TV HAL ile etkileşime geçen düşük düzey sürücüler geliştirmesi gerekir. Android, standart bir uygulama sunarak dağınık uygulamaları ve seçici özellik desteğini azaltarak uyumluluk sorunlarını azaltmayı amaçlar. HDMI Kontrol Hizmeti; giriş ve güç gibi mevcut Android hizmetlerini kullanır.
Bu nedenle, mevcut HDMI-CEC uygulamalarının Android TIF ile birlikte çalışabilmesi için yeniden tasarlanması gerekecek. Donanım platformunun, CEC güç açma ve diğer komutları alacak bir mikroişlemci içermesini öneririz.
- CEC veri yolu, şu anda etkin olan kaynaktan farklı bir kaynağa geçmek için bir komut alır.
- Sürücü, komutu HDMI-CEC HAL'e iletir.
- HAL, tüm
ActiveSourceChangeListeners
öğelerini bilgilendirir. - HDMI Kontrol Hizmeti,
ActiveSourceChangeListener
üzerinden kaynak değişikliği hakkında bilgilendirilir. - TV Giriş Yöneticisi hizmeti, TV uygulamasının kaynağı değiştirmesi için bir amaç oluşturur.
- Ardından TV uygulaması, geçiş yapılan TV girişi için bir TV girişi yöneticisi oturumu oluşturur ve bu oturumda
setMain
çağrısını yapar. - TV girişi yöneticisi oturumu bu bilgileri HDMI TV girişine iletir.
- HDMI TV girişi, yan bant yüzeyini ayarlamak istiyor.
- TV girişi yöneticisi hizmeti, yüzey ayarlandığında HDMI kontrol hizmetine geri dönen ilgili bir yönlendirme kontrol komutu oluşturur.
TV entegrasyonu yönergeleri
Yayın uygulaması
Her ülkenin yayına özgü şartları (MHEG, Teletext, HbbTV vb.) olduğundan üreticilerin yayın uygulaması için kendi çözümlerini sağlamaları beklenir. Örneğin:
- MHEG: yerel yığın
- Teleteks: yerel yığın
- HbbTV: Vewd Software'den HbbTV çözümü
Android L sürümünde Android TV, cihaz üreticilerinin bölgesel TV yığınları için sistem entegratörlerini veya Android çözümlerini kullanmasını, yüzeyi TV yazılım yığınlarına iletmesini ya da eski yığınlarla etkileşim kurmak için gerekli anahtar kodunu iletmesini bekler.
Yayın uygulaması ile TV uygulaması şu şekilde etkileşime girer:
- TV uygulaması odaktadır ve tüm tuşları alır.
- TV uygulaması, anahtarları (ör. kırmızı düğme) TV giriş cihazına iletir.
- TV giriş cihazı, eski TV yığınıyla dahili olarak entegre edilir.
- TV giriş cihazı, bir etkinleştirme anahtar kodu (ör. kırmızı düğme) aldığında yayın uygulamalarını etkinleştirir.
- Yayın uygulaması, TV uygulamasında odaklanmayı alır ve kullanıcı işlemlerini yönetir.
Yayın uygulaması, sesli arama/öneri için sesli arama özelliğini destekleyebilir.