Android TV Giriş Çerçevesi (TIF), canlı içeriğin Android TV'ye teslimini basitleştirir. Android TIF, üreticilerin Android TV'yi kontrol etmek için giriş modülleri oluşturması için standart bir API sağlar ve TV Girişi tarafından yayınlanan meta veriler aracılığıyla canlı TV araması ve önerileri sağlar.
Çerçeve, TV standartlarını veya bölgesel gereksinimleri uygulamayı amaçlamaz, ancak cihaz üreticilerinin bölgesel dijital TV yayın standartlarını yeniden uygulamaya gerek kalmadan karşılamasını kolaylaştırır. Bu bölümdeki belgeler, ö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 bir uygulamayla değiştirilemeyen bir sistem uygulaması olan TV Uygulaması ile birlikte çalışır. TV Uygulaması, cihaz üreticisi veya diğer taraflarca TV Giriş Yöneticisi aracılığıyla sağlanan TV Giriş modülleri ile iletişim kurar.
TV Giriş Çerçevesi şunlardan oluşur:
- TV Sağlayıcı (
com.android.providers.tv.TvProvider): kanalların, programların ve ilgili izinlerin bulunduğu bir veritabanı
- TV Uygulaması (
com.android.tv.TvActivity): kullanıcı etkileşimini yöneten uygulama
- TV Giriş Yöneticisi (
android.media.tv.TvInputManager): TV Girişlerinin TV Uygulaması ile iletişim kurmasını sağlar
- TV Girişi: fiziksel veya sanal alıcıları ve giriş bağlantı noktalarını temsil eden bir uygulama
- TV Girişi HAL (
tv_inputmodülü): uygulandığında sistem TV Girişlerinin TV'ye özgü donanıma erişmesine izin veren bir donanım tanımı
- Ebeveyn Kontrolü: kanalların ve programların engellenmesine izin veren teknoloji
- HDMI-CEC: çeşitli cihazların HDMI üzerinden uzaktan kontrol edilmesini sağlayan teknoloji
- Tuner Çerçevesi: Yerleşik Ayarlayıcı TV girişi için bir çerçeve
- 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öneten bir hizmet
Bu bileşenler aşağıda ayrıntılı olarak ele alınmış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 bir uygulamayla değiştirilemeyen bir sistem uygulaması olan TV Uygulamasını görür ve onunla etkileşim kurar.
- TV Uygulaması, TV Girişinden gelen AV içeriğini görüntüler.
- TV Uygulaması, TV Girişleriyle doğrudan konuşamaz. TV Giriş Yöneticisi, TV Uygulaması için TV Girişlerinin durumunu tanımlar. Bu sınırlamalar hakkında daha fazla ayrıntı için aşağıdaki TV Giriş Yöneticisine bakın.
İzinler
-
signatureOrSystemTV Girişleri ve TV Uygulaması, TV Sağlayıcı veritabanına tam erişime sahiptir ve KeyEvents'i alabilir.
- Yalnızca sistem TV Girişleri, TV Girişi Yöneticisi hizmeti aracılığıyla TV Girişi HAL'ına 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 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 bir cihaz üreticisinin HDMI1 gibi doğrudan TV girişlerinden gelen içeriği görüntüleyebilir. Yerleşik veya IPTV alıcısı gibi geçişsiz TV girişlerinden gelen içeriği görüntüleyemezler.
- Bir donanım TV Girişi uygulaması için
TV_INPUT_HARDWAREizni, TV Giriş Yöneticisi Hizmetine önyükleme sırasında TV Girişi Hizmetini TV Giriş Yöneticisi Hizmetini çağırması ve TV Girişlerini eklemesi konusunda bilgilendirmesi için sinyal verir. Bu izin, bir donanım TV Girişi uygulamasının TV Girişi hizmeti başına birden çok TV Girişini desteklemesinin yanı sıra desteklenen TV Girişlerini dinamik olarak ekleyip kaldırabilmesini sağlar.
TV Sağlayıcı
TV Sağlayıcı veritabanı, TV Girişlerinden gelen kanalları ve programları saklar. TV Sağlayıcı ayrıca TV Girişlerinin yalnızca kendi kayıtlarını görebilmesi için ilgili izinleri 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 kanal 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ünü" temel yayın standardındaki değerle doldurmaktan sorumludur ve "kanonik tür" alanı otomatik olarak
android.provider.TvContract.Genres doğru ilişkili türle doldurulacaktır. Örneğin, yayın standardı ATSC A/65 ve türü 0x25 olan program (“Spor” anlamına gelir) ile TV Girişi “yayın türü”nü “Spor” Dizisi ile doldurur ve TV Sağlayıcısı “kanonik tür” alanını şununla doldurur: eşlenen değer
android.provider.TvContract.Genres.SPORTS .
TV Sağlayıcı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 tüm TV Sağlayıcı veritabanını okuyabilir.
Geçişli TV girişleri, kanalları ve programları kaydetmez.
TV Sağlayıcı veritabanı, kanallar ve programlar için standart alanlara ek olarak, TV Girişlerinin isteğe bağlı verileri depolamak için kullanabileceği her tabloda bir BLOB tipi alan,
COLUMN_INTERNAL_PROVIDER_DATA sunar. Bu BLOB verileri, ilişkili ayarlayıcının frekansı gibi özel bilgiler içerebilir ve bir protokol tamponunda veya başka bir biçimde sağlanabilir. Belirli kanalları aramada kullanılamaz hale getirmek için (örneğin, içerik koruması için ülkeye özgü gereksinimleri karşılamak üzere) Aranabilir bir alan mevcuttur.
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 bunlara erişilir. Bu tablolarda dört tür alan vardır:
- Ekran: Ekran alanları, bir kanalın adı (
COLUMN_DISPLAY_NAME) veya numarası (
COLUMN_DISPLAY_NUMBER) veya görüntülenen programın başlığı gibi uygulamaların kullanıcıya görünür kılmak isteyebileceği bilgileri içerir.
- Meta veriler: Bir 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 içeriği tanımlamak için üç alan vardır.
- Dahili veri : TV Girişlerinin özel kullanımına yönelik alanlar.
COLUMN_INTERNAL_PROVIDER_DATAgibi bazı alanlar, bir TV Girişinin kendi kanalı veya programı hakkında rasgele meta verileri depolayabildiği özelleştirilebilir BLOB alanlarıdır.
- Bayrak: Bayrak alanları, bir kanalın arama, göz atma veya görüntüleme açısından kısıtlanıp kısıtlanmayacağını gösterir. Bu yalnızca kanal düzeyinde ayarlanabilir. Tüm programlar kanaldaki ayara uyar.
-
COLUMN_SEARCHABLE: Bazı bölgelerde aramayı bazı kanallardan kısıtlamak gerekebilir.
COLUMN_SEARCHABLE = 0, 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ıtlama.
COLUMN_BROWSABLE = 0kanalın kanal listesinde yer almaması gerektiği anlamına gelir.
-
COLUMN_LOCKED: Yalnızca sistem uygulamaları tarafından görülebilir. Kanalın, PIN kodu girilmeden geçersiz hesaplar tarafından görüntülenmesi kısıtlanıyor.
COLUMN_LOCKED = 1kanalın ebeveyn kontrolü ile korunması gerektiği anlamına gelir.
Alanların daha kapsamlı bir listesi için bkz
android/frameworks/base/media/java/android/media/tv/TvContract.java
İzinler ve erişim kontrolü
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ının, Sistem uygulamalarının veya TV Girişlerinin ortaya koyduğunu görürler.
- Her satırda, o satırın sahibi olan paket (uygulama) olan
PACKAGE_NAMEvardır ve TvProvider.java aracılığıyla Sorgula, Ekle, Güncelle'de kontrol edilir. Bir TV Girişi yalnızca kendi yazdığı bilgilere erişebilir ve diğer TV Girişleri tarafından sağlanan bilgilerden ayrılmıştır.
- Kullanılabilir kanalları belirlemek için AndroidManifest.xml aracılığıyla OKUMA, YAZMA izinleri (kullanıcı izni gerektirir).
-
signatureOrSystemuygulamaları tüm veritabanına erişmek için
ACCESS_ALL_EPG_DATAizni alabilir.
TV Giriş 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 kontrolü işlevi sağlar. TV Giriş Yöneticisi oturumları, TV Girişleri ile bire bir oluşturulmalıdır. TV Giriş Yöneticisi yüklü TV Girişlerine erişim sağlar, böylece uygulamalar şunları yapabilir:
- TV girişlerini listeleyin ve durumlarını kontrol edin
- Oturumlar oluşturun ve dinleyicileri yönetin
Oturumlar için, bir TV Girişi, TV Uygulaması tarafından
TvContract.buildChannelUriForPassthroughInput() kullanılarak ayarlanabilen doğrudan TV Girişleri dışında, yalnızca TV Sağlayıcı veritabanına eklediği URI'lere ayarlanabilir. Bir TV Girişinin ses düzeyi de ayarlanmış olabilir. Cihaz üreticisi (imza uygulamaları) veya sistem bölümünde kurulu diğer uygulamalar tarafından sağlanan ve imzalanan TV Girişleri, tüm TV Sağlayıcı veritabanına erişebilir. Bu erişim, mevcut tüm TV kanallarını ve programlarını taramak ve aramak için uygulamalar oluşturmak için kullanılabilir.
Bir uygulama, bir TV Girişinin durum değişikliğinde veya bir TV Girişinin eklenmesi veya çıkarılmasında geri çağrılmak üzere
android.media.tv.TvInputManager ile bir
TvInputCallback oluşturabilir ve kaydedebilir. Örneğin, bir TV Uygulaması, bir TV Girişinin bağlantısı kesildiğinde, onu bağlantısı kesilmiş olarak görüntüleyerek ve seçimini engelleyerek tepki verebilir.
TV Giriş Yöneticisi, TV Uygulaması ve TV Girişleri arasındaki iletişimi soyutlar. TV Giriş Yöneticisi ve TV Girişinin 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.
Televizyon Girişleri
TV Girişleri, bir AndroidManifest.xml'ye sahip olmaları ve yüklenmiş olmaları (Play aracılığıyla, önceden yüklenmiş veya yandan yüklenmiş) anlamında 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 temeldeki donanımla konuştuklarından yalnızca üretici tarafından sağlanabilir. IPTV, yer değiştirme ve harici STB gibi diğerleri, Google Play Store'da üçüncü taraflarca APK'lar olarak sağlanabilir. İndirilip yüklendikten sonra, yeni giriş TV Uygulaması içinden seçilebilir.
Geçişli giriş örneği
Bu örnekte, cihaz üreticisi tarafından sağlanan TV Girişi güvenilirdir ve TV Sağlayıcısına tam erişime sahiptir. Geçişli TV Girişi olarak, TV Sağlayıcı ile herhangi bir kanal veya program kaydetmez. Düz geçiş girişine başvurmak için kullanılan URI'yi elde etmek için
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 üreticisi tarafından sağlanan Yerleşik Ayarlayıcı TV Girişi güvenilirdir ve TV Sağlayıcısına tam erişime sahiptir.
Üçüncü taraf girdi örneği
Bu örnekte, harici STB TV Girişi bir üçüncü tarafça sağlanmaktadır. Bu TV Girişi, gelen HDMI video beslemesine doğrudan erişemediğinden, TV Giriş 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 ondan videoyu HDMI1'de göstermesini isteyebilir. Böylece üretici tarafından sağlanan HDMI TV Girişi videoyu işlerken STB TV Girişi TV'yi kontrol edebilir.
Resim içinde resim (PIP) örneği
Yukarıdaki şema, uzaktan kumandadaki düğmelerin resim içinde resim (PIP) ekranı için belirli bir TV Girişine nasıl geçtiğini gösterir. 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ını Android anahtar kodlarına dönüştürür ve bunları KeyEvents olarak standart Android girdi boru hattı
InputReader ve
InputDispatcher işlevlerine iletir. Bunlar, odaktaysa TV Uygulamasında olayları tetikler.
Yalnızca sistem TV Girişleri, yalnızca
RECEIVE_INPUT_EVENT sistem iznine sahiplerse,
InputEvents almaya uygundur. TV Girişi, hangi InputEvents'in tüketileceğini belirlemekten sorumludur ve TV Uygulamasının tüketmesi gerekmeyen anahtarları kullanmasına izin vermelidir.
TV Uygulaması, hangi sistem TV Girişinin aktif olduğunu, yani kullanıcı tarafından seçildiğini bilmekten ve gelen
KeyEvents netleştirmekten ve olayı ilişkili TV Girişine iletmek için
dispatchInputEvent() çağırarak onları doğru TV Giriş Yöneticisi oturumuna yönlendirmekten sorumludur. .
MHEG-5 giriş örneği
Aşağıdaki diyagram,
KeyEvents Android TIF aracılığıyla nasıl yönlendirildiğine dair daha ayrıntılı bir görünümü göstermektedir.
Kullanıcıların televizyonlarında etkileşimli uygulamalara erişmesine izin vermek için Avrupa'da yaygın olan bir Kırmızı düğme uygulamasının akışını gösterir. Bu taşıma akışı üzerinden bir uygulama teslim edilebilir. Düğme tıklandığında, kullanıcıların bu yayın uygulamalarıyla etkileşim kurmasını sağlar. Örneğin, ilgili web sayfalarına veya maç sonuçlarına erişmek için bu yayın uygulamalarını kullanabilirsiniz.
Yayın uygulamalarının TV Uygulaması ile nasıl etkileşime girdiğini öğ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(örn. Kırmızı düğme), etkin TV Girişine
InputEvents.
- Sistem TV Girişi, MHEG-5 yığınıyla bütünleşir ve
RECEIVE_INPUT_EVENTsistem iznine sahiptir.
- Etkinleştirme anahtar kodunu (örn. Kırmızı düğme) aldığında, TV Girişi yayın uygulamasını etkinleştirir.
- TV girişi,
KeyEvents
InputEventsolarak kullanır ve yayın uygulaması odak noktasıdır ve kapatılana kadar
InputEventsişler.
Not : Üçüncü taraf TV girişleri hiçbir zaman anahtar almaz.
TV Girişi HAL
TV Girişi HAL, TV'ye özgü 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ı bunun uygulamasını geliştirir.
TV Uygulaması
Sistem TV Uygulaması, kullanıcıya canlı TV içeriği sunar. Android platformunun yanı sıra olduğu gibi kullanılabilen, özelleştirilebilen, genişletilebilen veya cihaz üreticileri tarafından değiştirilebilen bir referans TV Uygulaması (Live TV) sağlanır. Kaynak kodu , Android Açık Kaynak Projesi'nde mevcuttur ve Referans TV uygulaması makalesinde kullanmaya başlayabilirsiniz.
Cihaz üreticileri, cihaz üreticisini veya ülkeye özgü özellikleri uygulamak için TV Uygulamalarını genişletebilir, ancak bu, TIF veya referans TV Uygulaması kapsamında değildir.
Sistem TV Uygulamasının en azından aşağıdaki görevleri gerçekleştirmesi gerekir:
Kurulum ve yapılandırma
- TV Girişlerini Otomatik Algıla
- TV Girişlerinin kanal kurulumunu başlatmasına izin verin
- Ebeveyn ayarlarını kontrol et
- Kanalları düzenle
Görüntüleme
- Tüm TV kanallarına erişin ve gezinin
- TV programı bilgi çubuğuna erişin
- Elektronik Programlama Kılavuzu (EPG) verilerini görüntüle
- Birden fazla ses ve altyazı parçasını destekleyin
- Ebeveyn kontrolü PIN sorgulaması sağlayın
- TV standardı (HbbTV, vb.) için TV Girişi UI yer paylaşımına izin ver
- TV kanalları ve programları için arama sonuçlarını doldurun
- Uygulama bağlantı kartlarını görüntüle
- Zaman kaydırma API'lerini destekleyin
- DVR işlevselliğini kullanın ve TV kayıt API'lerini destekleyin
Bu özellik seti, platform TIF API'lerinin genişletildiği yeni Android sürümleriyle uyumlu olarak artacaktır. CTS Verifier, uyumluluk testi kapsamı sağlar.
Üçüncü taraf TV Girişleri için destek
Android TV, üçüncü taraf TV girişleri için geliştirici API'leri sağlayarak yüklü uygulamaların yazılım kanallarını canlı TV deneyimine sunmasını sağlar. Uyumlu bir Android cihaz uygulamasını 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 Live TV uygulaması, uyumlu bir uygulama sağlar; sistem TV Uygulamasını değiştiriyorsanız, cihaz üreticileri, tüm Android TV cihazlarında geliştirici beklentilerini karşılamak için kendi uygulamalarının benzer uyumluluk sağladığından emin olmalıdır.
Sistem TV Uygulaması, cihazın varsayılan canlı TV hizmetinin yanı sıra üçüncü taraf girdileri de göstermelidir. Geliştirici API'lerinin vaadi, kullanıcıların standart TV deneyimlerinde (yüklendikten sonra) kanalları bulabilmeleridir.
Android CDD'nin TV Uygulaması bölümünde tanımlandığı gibi, yerleşik kanallar ve üçüncü taraf kanallar arasında görsel farklılaşmaya izin verilir.
Aşağıdaki bölümler, Canlı TV uygulamasının CDD gereksinimlerini nasıl karşıladığını göstermektedir.
Yeni kanal kurulumu
Yeni üçüncü taraf girişlerin/kanalların eklenmesi, kullanıcının Google Play gibi bir uygulama mağazasından bir 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ının kanallarını kurmasını, oturum açma ayrıntılarını sağlamasını ve diğer işlemleri gerçekleştirmesini sağlamak için bir Kurulum etkinliği sağlar. 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 minimum gezinme eylemi uzakta olmak üzere üçüncü taraf girişleri gerektirir.
Referans Live 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 götürmek için TV Uygulaması menüsünün üst kısmında bir bildirim kartı gösterilir:
Kullanıcı bildirim yoluyla işlem yaparsa, Şekil 10'da görüldüğü gibi kaynaklarını kurmayı seçebilir.
Bu alandaki geliştirici beklentileri için bkz . TV Giriş Hizmetinizi Tanımlayın .
Kanal listesini özelleştirin
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 özelliği içerir.
EPG'ler
Üçüncü taraf giriş geliştiricilerinin, kullanıcıların genel kullanım sırasında tüm uyumlu Android TV cihazlarında kendi kanallarına kolayca gidebileceklerine güvenmeleri 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ı bulabilmeleridir.
Aramak
Üreticiler, en iyi kullanıcı deneyimini sağlamak için küresel arama istekleri için arama sonuçlarını dahil etmek üzere TV Uygulamasını uygulamalıdır. Canlı TV , yerleşik girişlerin yanı sıra bir uygulama sağlar (hangisinin üçüncü taraf girişlerinden (platform uyumluluğu için gerekli) sonuçlar sağladığını görün).
Zaman kayması
Android 6.0 ve üzeri cihazlarda, TV Uygulaması Android çerçeve zaman kaydırma API'lerini desteklemelidir. Ek olarak, üreticilerin TV Uygulamasında, kullanıcıların oynatmayı duraklatmasına, devam ettirmesine, geri sarmasına ve ileri sarmasına olanak tanıyan oynatma kontrolleri uygulaması gerekir.
Zaman kaydırmayı destekleyen TV Girişleri için, TV Uygulamasının oynatma kontrollerini göstermesi gerekir.
DVR
Android 7.0 ve üzeri cihazlarda, TV Uygulaması, kayıtlı programları desteklemek, listelemek ve oynatmak için Android çerçeve TV kayıt API'lerini desteklemelidir.
Bu, cihaz üreticilerinin DVR alt sistemlerini TIF'e bağlamasına ve DVR işlevselliğini bir TV cihazında etkinleştirmek veya entegre etmek için gereken entegrasyon çabasını önemli ölçüde azaltmasına olanak tanır. Ayrıca, üçüncü tarafların bir Android TV cihazına takılabilen satış sonrası DVR sistemleri sağlamasına olanak tanır.
TV Uygulaması, canlı içeriği kaydetmenin yanı sıra kaynak çakışmasını da yönetir. Örneğin, cihazın iki tuneri varsa, aynı anda iki program kaydedebilir. Kullanıcı üç tane kaydetmeyi isterse, TV Uygulaması çakışmayı ele almalı ve bir bildirim göstermeli veya kullanıcının bu istekler için bir öncelik programlamasını talep etmelidir.
TV Uygulamaları, bir bölümü kaydetme isteğinde bulunduğunda, bir kullanıcıya bir dizinin gelecekteki tüm bölümlerini kaydetmek isteyip istemediklerini sormak gibi daha karmaşık mantık da uygulayabilir.
Android TV'de olası bir DVR uygulamasına ilişkin bir görünüm için aşağıdaki şemaya bakın.
- TV Giriş Hizmeti, TV Uygulamasının olası kaynak çakışmalarının üstesinden gelebilmesi için TV Uygulamasına kaç alıcının kullanılabilir olduğunu söyler.
- TV Uygulaması, bir TV programını kaydetmek için kullanıcı tarafından başlatılan bir istek alır.
- TV Uygulaması, kayıt programını dahili veritabanında saklar.
- Kayıt zamanı geldiğinde, TV Uygulaması, kayıtla ilişkili kanalı ayarlamak için bir istek iletir.
- TV Giriş Hizmeti bu isteği alır, uygun kaynakların olup olmadığı ile yanıt verir ve kanalı ayarlar.
- Ardından TV Uygulaması, kaydı başlatmak için TV Giriş Yöneticisine bir istek iletir.
- TV Giriş Hizmeti bu isteği alır ve kaydetmeye başlar.
- TV Giriş Hizmeti, gerçek video verilerini harici depolama veya bulut depolama olabilen kendi deposunda depolar.
- Kaydı bitirme zamanı geldiğinde, TV Uygulaması kaydı durdurma talebini TV Giriş Yöneticisine iletir.
- TV Giriş Hizmeti isteği aldığında, kaydı durdurur ve ilgili meta verilerini TV Sağlayıcısına ekler, böylece TV Uygulaması, talep edildiğinde kullanıcılara kaydı gösterebilir.
TV Giriş hizmetinizde Kayıt özelliklerini uygulama hakkında daha fazla bilgi için bu TV Kaydı makalesine bakın.
Yararlı kaynaklar
- Android CDD ve belgelenmiş geliştirici API'leri kesin referanslardır.
- CTS Verifier, API'leri uyumluluk testi programının bir parçası olarak kullanır. Bunu Canlı TV'ye karşı çalıştırmak, EPG, Arama, Ebeveyn Kontrolü ve diğer gereksinimleri üçüncü taraf girdileri bağlamında görmek için yararlı bir yol olabilir.
- Bu alandaki geliştirici beklentileri için bkz . TV Giriş Hizmetinizi Tanımlayın .
Ebeveyn Kontrolü
Ebeveyn kontrolü, kullanıcının istenmeyen kanalları ve programları engellemesine, ancak bir PIN kodu girerek engellemeyi atlamasına olanak tanır.
Ebeveyn kontrolü işlevselliğinin sorumluluğu TV Uygulaması, TV Giriş Yöneticisi hizmeti, TV Sağlayıcısı ve TV Girişi arasında paylaşılır.
Ebeveyn kontrolü zorunludur ve CTS Verifier kapsamındadır.
Bazı ülkeler, TV Girdilerinin TVContentRating API aracılığıyla kullanabileceği derecelendirme sistemlerini tanımlamıştır. Ek olarak, TV Girişleri, 'sahte' bir derecelendirme sunan CTS Doğrulayıcı testinin gösterdiği gibi kendi özel derecelendirme sistemlerini kaydedebilir. Standart derecelendirme sisteminin mevcut olduğu ülkelerde, cihaz üreticilerinin TV Girdi Çerçevesi Ebeveyn Denetimini içerebilecekleri diğer mekanizmalarla birleştirmeleri teşvik edilir.
TV sağlayıcısı
Her kanal satırında, belirli kanalların PIN kodu girilmeden görüntülenmesini engellemek için kullanılan bir
COLUMN_LOCKED alanı vardır.
COLUMN_CONTENT_RATING program alanı görüntüleme amaçlıdır ve ebeveyn kontrolünü zorlamak için kullanılmaz.
TV Giriş Yöneticisi
TV Giriş Yöneticisi, engellenen her
TvContentRating depolar ve verilen derecelendirmeye sahip içeriğin engellenmesi gerekip gerekmediğini önermek için
isRatingBlocked() a yanıt verir.
Televizyon Girişi
TV Girişi, görüntülenen içeriğin derecelendirmesi değiştiğinde (program veya kanal değişikliğinde) veya ebeveyn kontrolü ayarları değiştiğinde (
ACTION_BLOCKED_RATINGS_CHANGED ve
ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) TV Giriş Yöneticisinde
isRatingBlocked() çağırarak mevcut içeriğin engellenmesi gerekip gerekmediğini kontrol eder. . İçeriğin engellenmesi gerekiyorsa, TV Girişi ses ve videoyu devre dışı bırakır ve
notifyContentBlocked(TvContentRating) ç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() öğesini çağırarak TV Uygulamasına mevcut içeriğe izin verildiğini bildirir.
TV Uygulaması
Ebeveyn kontrolü API'lerini onurlandırmak ve dolayısıyla uyumlu bir platform oluşturmak için, sistem TV Uygulamasının, belirli uygulamalar tarafından kaydedilen tüm özel derecelendirmeler dahil olmak üzere, kullanıcılara ebeveyn kontrolünü yönetmeleri için bir yol sağlaması gerekir.
TV Uygulaması, bir TV Girişi tarafından mevcut içeriğin engellendiği bildirildiğinde veya kullanıcı engellenen bir kanalı görüntülemeye çalıştığında bir PIN kodu kullanıcı arayüzü gösterir.
TV Uygulaması ebeveyn kontrolü ayarlarını doğrudan saklamaz. Kullanıcı ebeveyn kontrolü ayarlarını değiştirdiğinde, engellenen her
TvContentRating TV Giriş Yöneticisi tarafından saklanır ve engellenen kanallar TV Sağlayıcı tarafından saklanır.
Ebeveyn kontrolü ayarlarını değiştirmek için TV Uygulamasının
android.permission.MODIFY_PARENTAL_CONTROLS iznini bildirmesi gerekir.
Cihaz üreticileri şunları yapmaya teşvik edilir:
- Uyumluluk gereksinimlerinin bir gösterimi için CTS Doğrulayıcı ebeveyn denetimleri testini referans Canlı TV uygulamasıyla karşılaştırın.
- Canlı TV uygulamasını kendi TV Uygulamaları için referans olarak kullanın: özellikle ContentRatingsManager ve RatingSystemsFragment kaynağına ve bunların özel derecelendirmeleri nasıl ele aldıklarına bakın.
HDMI-CEC
HDMI-CEC, bir cihazın diğerini kontrol etmesine izin vererek tek bir uzaktan kumandanın bir ev sinema sisteminde birden fazla cihazı kontrol etmesini sağlar. Kurulumu hızlandırmak ve merkezi TV Uygulaması aracılığıyla çeşitli TV Girişleri üzerinde uzaktan kontrole izin vermek için Android TV tarafından 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, daha karmaşık iş mantığını atlayarak hafif Android TV HAL ile etkileşime giren düşük seviyeli sürücüler geliştirmesi gerekir. Android, standart bir uygulama sağlarken, 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, mevcut HDMI-CEC uygulamalarının Android TIF ile birlikte çalışacak şekilde yeniden tasarlanması gerektiği anlamına gelir. CEC açma ve diğer komutları almak için donanım platformunun bir mikroişlemci içermesini öneririz.
- CEC veri yolu, o anda etkin olan kaynaktan farklı bir kaynağa geçmek için bir komut alır.
- Sürücü, komutu HDMI-CEC HAL'a iletir.
- HAL, tüm
ActiveSourceChangeListenersbilgilendirir.
- HDMI Kontrol Hizmeti,
ActiveSourceChangeListeneraracılığıyla kaynak değişikliği konusunda bilgilendirilir.
- TV Giriş Yöneticisi hizmeti, TV Uygulamasının kaynağı değiştirmesi için bir amaç oluşturur.
- Ardından TV Uygulaması, değiştirilmekte olan TV Girişi için bir TV Giriş Yöneticisi Oturumu oluşturur ve bu oturumda
setMainçağırır.
- TV Giriş Yöneticisi Oturumu bu bilgiyi HDMI TV Girişine iletir.
- HDMI TV girişi, yan bant yüzeyinin ayarlanmasını ister.
- TV Giriş Yöneticisi Hizmeti, yüzey ayarlandığında HDMI Kontrol Hizmetine karşılık gelen bir yönlendirme kontrol komutu oluşturur.
TV entegrasyon yönergeleri
Yayın uygulaması
Her ülkenin yayına özgü gereksinimleri (MHEG, Teletext, HbbTV ve daha fazlası) olduğundan, üreticilerin yayın uygulaması için kendi çözümlerini sağlamaları beklenir, örneğin:
- MHEG: yerel yığın
- Teletekst: 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 geçirmesini veya eski yığınlarla etkileşim kurmak için gerekli anahtar kodunu geçirmesini bekler.
Yayın uygulaması ve TV Uygulamasının etkileşimi şu şekildedir:
- TV Uygulaması odakta ve tüm tuşları alıyor.
- TV Uygulaması, tuşları (örn. Kırmızı düğme) TV Giriş cihazına iletir.
- TV Giriş cihazı, eski TV yığınıyla dahili olarak bütünleşir.
- Bir aktivasyon anahtar kodu (örn. Kırmızı düğme) alındığında, TV Giriş cihazı yayın uygulamalarını etkinleştirir.
- Bir yayın uygulaması, TV Uygulamasında odaklanır ve kullanıcı eylemlerini yönetir.
Sesli arama/öneri için, yayın uygulaması sesli arama için uygulama içi aramayı destekleyebilir.