TV Giriş Çerçevesi

Android TV HAL simgesi

Android TV Giriş Çerçevesi (TIF), canlı içeriğin Android TV'ye iletilmesini 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 uygulamaya koymayı amaçlamaz, ancak cihaz üreticilerinin 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ş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 uygulama tarafından değiştirilemeyen bir sistem uygulaması olan TV Uygulaması ile birlikte çalışır. TV Uygulaması, TV Giriş Yöneticisi aracılığıyla cihaz üreticisi veya diğer taraflar tarafından sağlanan TV Giriş modülleriyle iletişim kurar.

TV Giriş Çerçevesi şunlardan oluşur:

  • TV Sağlayıcısı ( com.android.providers.tv.TvProvider ): kanallar, programlar ve ilgili izinlerden oluşan 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_input modülü): uygulandığında sistem TV Girişlerinin TV'ye özel 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 Tuner 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ı bir görünümü için aşağıdaki şemaya bakın.

Android TIF mimarisine genel bakış
Şekil 1. Android TV Giriş Çerçevesi (TIF) mimarisi

Akış

İşte mimarinin nasıl uygulandığı:

  1. Kullanıcı, bir üçüncü taraf uygulamasıyla değiştirilemeyen bir sistem uygulaması olan TV Uygulamasını görür ve onunla etkileşime girer.
  2. TV Uygulaması, TV Girişinden gelen AV içeriğini görüntüler.
  3. 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.

izinler

  • Yalnızca signatureOrSystem veya Sistem TV Girişleri ve TV Uygulaması, TV Sağlayıcı veritabanına tam erişime sahiptir ve KeyEvent'leri alabilir.
  • Yalnızca sistem TV Girişleri, TV Giriş 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ı OKUMA/YAZMA yapabilir.
  • Üçüncü taraf TV girişleri, kendi içeriklerini veya bir cihaz üreticisinin HDMI1 gibi doğrudan geçişli 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_HARDWARE izni, TV Giriş Yöneticisi Hizmetini, TV Giriş Yöneticisi Hizmetini başlatması ve TV Girişlerini eklemek için TV Girişi hizmetini bilgilendirmesi için bildirir. Bu izin, bir donanım TV Girişi uygulamasının TV Girişi hizmeti başına birden çok TV Girişini desteklemesine ve ayrıca desteklenen TV Girişlerini dinamik olarak ekleyip kaldırabilmesine olanak tanır.

TV Sağlayıcı

TV Sağlayıcı veritabanı, TV Girişlerinden gelen kanalları ve programları saklar. TV Sağlayıcı, TV Girişlerinin yalnızca kendi kayıtlarını görebilmesi için ilgili 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 kanal ve programlarına erişmesi yasaktır.

TV Sağlayıcı, "yayın türünü" dahili olarak "standart tür" ile eşler. TV Girişleri, "yayın türünü" temel alınan yayın standardındaki değerle doldurmaktan sorumludur ve "standart tür" alanı, android.provider.TvContract.Genres 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 program ile TV Girişi, "yayın türünü" "Spor" Dizesi ile doldurur ve TV Sağlayıcı "standart tür" alanını aşağıdakilerle 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.

Android TV Sağlayıcı
Şekil 2. Android TV Sağlayıcı

Yalnızca ayrıcalıklı sistem bölümündeki uygulamalar TV Sağlayıcı veritabanının tamamını okuyabilir.

Geçişli TV girişleri, kanalları ve programları saklamaz.

Kanallar ve programlar için standart alanlara ek olarak, TV Sağlayıcı veritabanı ayrıca TV Girişlerinin rastgele verileri depolamak için kullanabileceği her tabloda COLUMN_INTERNAL_PROVIDER_DATA BLOB tipi bir alan sunar. Bu BLOB verileri, ilişkili tunerin frekansı gibi özel bilgileri içerebilir ve bir protokol arabelleğinde veya başka bir biçimde sağlanabilir. Belirli kanalların aramada kullanılamaması için Aranabilir bir alan mevcuttur (içerik koruması için ülkeye özgü gereksinimleri karşılamak gibi).

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:

  • Görüntüleme: Görüntüleme 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 veriler : TV Girişlerinin özel kullanımı için olan alanlar.
    COLUMN_INTERNAL_PROVIDER_DATA gibi bazı alanlar, TV Girişinin kanalları veya programları hakkında rastgele meta verileri depolayabileceği özelleştirilebilir BLOB alanlarıdır.
  • Bayrak: Bayrak alanları, bir kanalın arama, göz atma veya görüntülemenin kısıtlanıp kısıtlanmayacağını temsil eder. Bu, yalnızca kanal düzeyinde ayarlanabilir. Tüm programlar kanaldaki ayara bağlıdır.
    • COLUMN_SEARCHABLE : Bazı kanallarda arama kısıtlaması belirli bölgelerde bir gereklilik olabilir. COLUMN_SEARCHABLE = 0 , kanalın arama sonuçlarında gösterilmemesi gerektiği anlamına gelir.
    • COLUMN_BROWSABLE : Yalnızca sistem uygulamalarına görünür. Kanalların uygulamalar tarafından taranmasını kısıtlama. COLUMN_BROWSABLE = 0 , kanalın kanal listesine dahil edilmemesi gerektiği anlamına gelir.
    • COLUMN_LOCKED : Yalnızca sistem uygulamalarına görünür. PIN kodu girmeden kanalın geçersiz hesaplar tarafından görüntülenmesini kısıtlama. COLUMN_LOCKED = 1 , kanalı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. Hiçbir alana doğrudan kullanıcılar erişemez; yalnızca TV Uygulaması, Sistem uygulamaları veya TV Girişleri'nin yüzeyini görürler.

  • Her satırda PACKAGE_NAME , o satırın sahibi olan paket (uygulama), TvProvider.java ile Sorgula, Ekle, Güncelle üzerinde kontrol edildi. Bir TV Girişi, yalnızca yazdığı bilgilere erişebilir ve diğer TV Girişleri tarafından sağlanan bilgilerden kordon altına alınır.
  • Kullanılabilir kanalları belirlemek için AndroidManifest.xml aracılığıyla OKUMA, YAZMA izinleri (kullanıcı onayı gerekir).
  • Veritabanının tamamına erişmek için yalnızca signatureOrSystem veya Sistem uygulamaları ACCESS_ALL_EPG_DATA izni alabilir.

TV Giriş Yöneticisi

TV Giriş Yöneticisi, genel Android TV Giriş Çerçevesine merkezi bir sistem API'si sağlar. Uygulamalar ve TV Girişleri arasındaki etkileşimi yönetir ve ebeveyn denetimi işlevi sağlar. TV Giriş Yöneticisi oturumları, TV Girişleri ile bire bir oluşturulmalıdır. TV Giriş Yöneticisi, uygulamaların aşağıdakileri yapabilmesi için yüklü TV Girişlerine erişime izin verir:

  • TV girişlerini listeleyin ve durumlarını kontrol edin
  • Oturumlar oluşturun ve dinleyicileri yönetin

Oturumlar için, bir TV Girişi, TvContract.buildChannelUriForPassthroughInput() kullanılarak ayarlanabilen geçişli TV Girişleri dışında, TV Uygulaması tarafından yalnızca TV Sağlayıcı veritabanına eklediği URI'lere ayarlanabilir. Bir TV Girişinin ses seviyesi 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, TV Sağlayıcı veritabanının tamamına erişime sahip olacaktır. Bu erişim, mevcut tüm TV kanallarına ve programlarına göz atmak ve arama yapmak 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şi bağlantısı kesildiğinde, bağlı değil olarak görüntüleyerek ve seçimini önleyerek 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.

TV Girişleri

TV Girişleri, bir AndroidManifest.xml'ye sahip olmaları ve yüklü 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 temel donanımla konuştukları için yalnızca üretici tarafından sağlanabilir. IPTV, yer değiştirme ve harici STB gibi diğerleri, Google Play Store'da APK'lar olarak üçüncü taraflarca sağlanabilir. İndirilip kurulduktan sonra, yeni giriş TV Uygulaması içinden seçilebilir.

Geçiş girişi örneği

Android TV Sistemi Girişi
Şekil 3. Android TV Sistemi Giriş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 bir TV Girişi olarak, TV Sağlayıcısına herhangi bir kanal veya program kaydetmez. Geçiş girdisine başvurmak için kullanılan URI'yi elde etmek için android.media.tv.TvContract yardımcı program yöntemini buildChannelUriForPassthroughInput(String inputId) . TV Uygulaması, HDMI TV Girişine ulaşmak için TV Giriş Yöneticisi ile iletişim kurar.

Dahili tuner örneği

Android TV Dahili Tuner Girişi
Şekil 4. Android TV Dahili Tuner Girişi

Bu örnekte, cihaz üreticisi tarafından sağlanan Yerleşik Tuner TV Girişi güvenilirdir ve TV Sağlayıcısına tam erişime sahiptir.

Üçüncü taraf giriş örneği

Android TV üçüncü taraf girişi
Şekil 5. Android TV üçüncü taraf giriş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.

TV Giriş Yöneticisi aracılığıyla, harici STB TV Girişi, HDMI TV Girişi ile konuşabilir ve 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

Android TV KeyEvents
Şekil 6. Android TV Önemli Olayları

Yukarıdaki şema, bir uzaktan kumanda üzerindeki düğmelerin, resim içinde resim (PIP) ekranı için belirli bir TV Girişine nasıl geçirildiğ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 giriş hattı InputReader ve InputDispatcher işlevlerine iletir. Bunlar, odaktaysa TV Uygulamasındaki olayları tetikler.

Yalnızca sistem TV Girişleri, InputEvents almaya uygundur ve yalnızca RECEIVE_INPUT_EVENT sistem iznine sahiplerse. TV Girişi, hangi InputEvent'lerin tüketileceğini belirlemekten sorumludur ve TV Uygulamasının tüketmesi gerekmeyen tuşları kullanmasına izin vermelidir.

TV Uygulaması, hangi sistemin TV Girişi'nin etkin olduğunu, yani kullanıcı tarafından seçildiğini bilmekten ve gelen KeyEvents belirsizliğini gidermek ve bunları doğru TV Giriş Yöneticisi oturumuna yönlendirmekten, olayı ilişkili TV Girişine iletmek için dispatchInputEvent() 'i çağırmaktan sorumludur. .

MHEG-5 giriş örneği

Aşağıdaki şema, KeyEvents Android TIF üzerinden nasıl yönlendirildiğinin daha ayrıntılı bir görünümünü gösterir.

Android TV Kırmızı düğme örneği
Şekil 7. Android TV Kırmızı düğme örneği

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şime girmesini sağlar. Ö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şime girdiğini öğrenmek için Yayın uygulaması bölümüne bakın.

Bu örnekte:

  1. TV Uygulaması odakta ve tüm anahtarları alıyor.
  2. KeyEvents (örneğin Kırmızı düğme), InputEvents.
  3. Sistem TV Girişi, MHEG-5 yığını ile entegredir ve RECEIVE_INPUT_EVENT sistem iznine sahiptir.
  4. Aktivasyon anahtar kodunu (örn. Kırmızı düğme) aldığında, TV Girişi yayın uygulamasını etkinleştirir.
  5. TV girişi, InputEvents KeyEvents tüketir ve yayın uygulaması odak noktasıdır ve kapatılana kadar InputEvents işler.

Not : Üçüncü taraf TV girişleri hiçbir zaman anahtar almaz.

TV Girişi HAL

TV Girişi HAL, 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'i ( tv_input ) AOSP kaynak ağacında bulunur ve satıcı, uygulamasını geliştirir.

TV Uygulaması

Sistem TV Uygulaması, kullanıcıya canlı TV içeriği sunar. Android platformunun yanında 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 buna Referans TV uygulaması makalesinden başlayabilirsiniz.

Cihaz üreticileri, TV Uygulamalarını cihaz üreticisi veya ülkeye özgü özellikler uygulayacak şekilde genişletebilir, ancak bu TIF veya referans TV Uygulaması kapsamında değildir.

En azından sistem TV Uygulamasının 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 verin
  • Ebeveyn ayarlarını kontrol et
  • Kanalları düzenle

görüntüleme

  • Tüm TV kanallarına erişin ve bu kanallarda gezinin
  • TV programı bilgi çubuğuna erişin
  • Elektronik Programlama Kılavuzu (EPG) verilerini görüntüleyin
  • Birden fazla ses ve altyazı parçasını destekleyin
  • Ebeveyn denetimi PIN sorgulaması sağlayın
  • TV standardı (HbbTV, vb.) için TV Girişi UI kaplaması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 yönetin ve TV kayıt API'lerini destekleyin

Bu özellik seti, platform TIF API'lerinin genişletildiği yeni Android sürümlerine paralel 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 Canlı TV uygulaması uyumlu bir uygulama sağlar; sistem TV Uygulaması değiştiriliyorsa, 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ında üçüncü taraf girişleri göstermelidir. Geliştirici API'lerinin vaadi, kullanıcıların standart TV deneyimlerinde kanalları (yüklendikten sonra) bulabilmeleridir.

Android CDD'nin TV Uygulaması bölümünde tanımlandığı gibi, yerleşik kanallar ile üçü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österir.

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 bulması ve 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ı kurmasını, oturum açma ayrıntılarını ve diğer eylemleri sağlamasını sağlamak için bir Kurulum etkinliği sağlayacaktır. Sistem TV Uygulamasının, kullanıcının bu Kurulum etkinliğini etkinleştirebilmesini sağlaması gerekir; bu nedenle CDD, üçüncü taraf girişlerinin ana TV Uygulamasından minimum düzeyde gezinme eylemleri olmasını gerektirir.

Referans Canlı TV uygulaması, girişlere erişmek için Kanal Kaynakları menüsünü sağlar.

Ayarlara git
Şekil 8. Ayarlar'a gidin.

Ayarlarda Kanal kaynağına gidin
Şekil 9. Ayarlar'da Kanal kaynakları'na gidin.

Listeden kaynağınızı seçin.
Şekil 10. Listeden kaynağınızı seçin.

Kaynağınızdan kanal ekleyin
Şekil 11. Kaynağınızdan kanalları ekleyin.

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:

Yeni kanal kaynaklarını gösteren bildirim mevcuttur.
Şekil 12. Yeni kanal kaynaklarını gösteren bildirim mevcuttur.

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 TV Girişi Hizmetinizi Tanımlayın bölümüne bakı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 UI sağlayabilir. Canlı TV bu tesisi içerir.

Ayarlarda kanal listesini açın.
Şekil 13. Ayarlar'da kanal listesini açın.

Kanal listenizi özelleştirin.
Şekil 14. Kanal listenizi özelleştirin.

EPG

Üçüncü taraf girdi geliştiricilerinin, genel kullanım sırasında tüm uyumlu Android TV cihazlarında kullanıcıların kanallarına kolayca gidebileceğinden emin olmaları 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 ayrım veya ayrı kategoriler kullanılabilir (Android CDD'sinin TV Uygulaması bölümüne bakın) — önemli olan, kullanıcıların yükledikleri kanalları bulabilmeleridir.

Üreticiler, en iyi kullanıcı deneyimini sağlamak için küresel arama istekleri için arama sonuçlarını içerecek şekilde TV Uygulamasını uygulamalıdır. Canlı TV, yerleşik girişlerin yanı sıra üçüncü taraf girişlerinden (platform uyumluluğu için gerekli) sonuçlar sağlayan bir uygulama sağlar (bkz. com.android.tv.search.TvProviderSearch ).

zaman kaydırma

Android 6.0 ve sonraki sürümlerdeki cihazlar için TV Uygulaması, Android çerçevesi zaman kaydırma API'lerini desteklemelidir. Ek olarak, üreticilerin TV Uygulamasında, kullanıcıların oynatmayı duraklatmasına, devam etmesine, geri almasına ve hızlı 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örüntülemesi gerekir.

Oynatma kontrolleri
Şekil 15. Oynatma kontrolleri

DVR

Android 7.0 ve üzeri cihazlarda TV Uygulaması, kayıtlı programları desteklemek, listelemek ve oynatmak için Android çerçevesi TV kayıt API'lerini desteklemelidir.

Bu, cihaz üreticilerinin DVR alt sistemlerini TIF'e bağlamalarına ve bir TV cihazında DVR işlevselliğini 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 cihazda iki tuner varsa aynı anda iki program kaydedebilir. Kullanıcı üç tane kaydetmeyi isterse, TV Uygulaması çakışmayı ele almalı ve ya bir bildirim göstermeli ya da kullanıcının bu istekler için bir öncelik planlamasını istemelidir.

TV Uygulamaları ayrıca, bir kullanıcıya bir bölümü kaydetmeyi talep ettiğinde bir 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ına ilişkin bir görünüm için aşağıdaki şemaya bakın.

Android TV'de dijital video kaydı
Şekil 16. Android TV'de dijital video kaydı

  1. TV Giriş Hizmeti, TV Uygulamasının olası kaynak çakışmasını kaldırabilmesi için TV Uygulamasına kaç tane tuner olduğunu söyler.
  2. TV Uygulaması, bir TV programını kaydetmek için kullanıcı tarafından başlatılan bir istek alır.
  3. TV Uygulaması, kayıt programını dahili veritabanında saklar.
  4. Kayıt zamanı geldiğinde, TV Uygulaması, kayıtla ilişkili kanalı ayarlamak için bir istek iletir.
  5. TV Giriş Hizmeti bu isteği alır, uygun kaynakların olup olmadığına göre yanıt verir ve kanalı ayarlar.
  6. Ardından TV Uygulaması, TV Giriş Yöneticisine kaydetmeye başlama isteğini iletir.
  7. TV Giriş Hizmeti bu talebi alır ve kayda başlar.
  8. TV Giriş Hizmeti, gerçek video verilerini, harici depolama veya bulut depolaması olabilen deposunda saklar.
  9. Kaydı bitirme zamanı geldiğinde, TV Uygulaması kaydı durdurma talebini TV Giriş Yöneticisine iletir.
  10. TV Giriş Hizmeti talebi aldığında, kaydı durdurur ve ilgili meta verilerini TV Sağlayıcısına 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.

Yararlı kaynaklar

  • Android CDD ve belgelenmiş geliştirici API'leri kesin referanslardır.
  • CTS Verifier, uyumluluk test programının bir parçası olarak API'leri uygular. Bunu Canlı TV'ye karşı çalıştırmak, üçüncü taraf girdileri bağlamında EPG, Arama, Ebeveyn Denetimi ve diğer gereksinimleri görmenin yararlı bir yolu olabilir.
  • Bu alandaki geliştirici beklentileri için TV Girişi Hizmetinizi Tanımlayın bölümüne bakın.

Ebeveyn Kontrolü

Ebeveyn kontrolü, bir kullanıcının istenmeyen kanalları ve programları engellemesine, ancak bir PIN kodu girerek engellemeyi atlamasına izin verir.

Ebeveyn denetimi işlevine ilişkin sorumluluk, 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ı ülkelerde, TV Girdilerinin TVContentRating API aracılığıyla kullanabileceği derecelendirme sistemleri tanımlanmıştır. Ek olarak, TV Girişleri, 'sahte' bir derecelendirme sunan CTS Verifier 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 birleştirmeleri önerilir.

TV Sağlayıcı

Her kanal satırında, belirli kanalların PIN kodu girmeden 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 bildirmek için isRatingBlocked() yanıt verir.

TV 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 sesi 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() çağırarak TV Uygulamasına mevcut içeriğe izin verildiğini bildirir.

TV Uygulaması

Ebeveyn denetimi 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 özel derecelendirmeler de dahil olmak üzere, kullanıcılara ebeveyn denetimini 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 denetimi ayarlarını değiştirdiğinde, engellenen her TvContentRating , TV Giriş Yöneticisi tarafından saklanır ve engellenen kanallar TV Sağlayıcısı tarafından saklanır.

Ebeveyn kontrolü ayarlarını değiştirmek için TV Uygulamasının android.permission.MODIFY_PARENTAL_CONTROLS iznini beyan etmesi gerekir.

Cihaz üreticileri şunları yapmaya teşvik edilir:

  • Uyumluluk gereksinimlerinin bir gösterimi için CTS Verifier ebeveyn kontrolleri 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 ve böylece tek bir uzaktan kumandanın bir ev sinema sistemindeki birden fazla cihazı kontrol etmesine olanak tanır. Android TV tarafından kurulumu hızlandırmak ve merkezi TV Uygulaması aracılığıyla çeşitli TV Girişleri üzerinde uzaktan kontrole izin vermek için kullanılır. Örneğin, girişleri değiştirebilir, cihazları açabilir veya 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ştirmeleri gerekir. Android, standart bir uygulama sağlarken, parçalanmış uygulamaları ve seçici özellik desteğini azaltarak uyumluluk sorunlarını azaltmaya çalışır. 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ı gerekeceği anlamına gelir. Donanım platformunun, CEC gücünü ve diğer komutları almak için bir mikroişlemci içermesini öneririz.

Android TV'de CEC entegrasyonu
Şekil 17. Android TV'de CEC entegrasyonu

  1. CEC veri yolu, farklı bir kaynağa geçmek için o anda aktif olan kaynaktan bir komut alır.
  2. Sürücü, komutu HDMI-CEC HAL'e iletir.
  3. HAL, tüm ActiveSourceChangeListeners bilgilendirir.
  4. HDMI Kontrol Servisi, ActiveSourceChangeListener aracılığıyla kaynak değişikliği konusunda bilgilendirilir.
  5. TV Giriş Yöneticisi hizmeti, TV Uygulamasının kaynağı değiştirmesi için bir amaç oluşturur.
  6. Ardından TV Uygulaması, geçiş yapılan TV Girişi için bir TV Girişi Yönetici Oturumu oluşturur ve bu oturumda setMain çağırır.
  7. TV Giriş Yöneticisi Oturumu bu bilgiyi HDMI TV Girişine iletir.
  8. HDMI TV girişi, yan bant yüzeyini ayarlamayı ister.
  9. TV Giriş Yöneticisi Hizmeti, yüzey ayarlandığında HDMI Kontrol Hizmetine karşılık gelen bir yönlendirme kontrol komutu üretir.

TV entegrasyon yönergeleri

yayın uygulaması

Her ülkenin yayına özel 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:

  1. TV Uygulaması odakta ve tüm anahtarları alıyor.
  2. TV Uygulaması, tuşları (örn. Kırmızı düğme) TV Giriş cihazına iletir.
  3. TV Giriş cihazı, eski TV yığınıyla dahili olarak entegre olur.
  4. Bir etkinleştirme anahtar kodu (örneğin Kırmızı düğme) alındığında, TV Giriş cihazı yayın uygulamalarını etkinleştirir.
  5. Bir yayın uygulaması, TV Uygulamasına odaklanır ve kullanıcı eylemlerini yönetir.

Sesli arama/tavsiye için yayın uygulaması, sesli arama için uygulama içi aramayı destekleyebilir.