TV Giriş Çerçevesi

Android TV HAL simgesi

Android TV Giriş Çerçevesi (TIF), canlı içeriğin Android TV'ye iletilmesini kolaylaştırır. Android TIF, üreticilerin Android TV'yi kontrol etmek için giriş modülleri oluşturmaları için standart bir API sağlar ve TV Girişi tarafından yayınlanan meta veriler aracılığıyla canlı TV aramasına ve önerilere olanak tanır.

Çerçeve, TV standartlarını veya bölgesel gereklilikleri uygulamaya koymayı amaçlamıyor ancak cihaz üreticilerinin, yeniden uygulamaya gerek kalmadan bölgesel dijital TV yayın standartlarını karşılamasını kolaylaştırıyor. 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 kanallara 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 sağlanan TV Giriş modülleriyle TV Giriş Yöneticisi aracılığıyla iletişim kurar.

TV Giriş Çerçevesi aşağıdakilerden 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 ayarlayıcıları ve giriş bağlantı noktalarını temsil eden bir uygulama
  • TV Girişi HAL ( tv_input module): sistem TV Girişlerinin uygulandığında TV'ye özgü donanıma erişmesine olanak tanıyan 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 Dahili 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 ele alınmaktadır. Android TV Giriş Çerçevesi mimarisinin ayrıntılı 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ış

Mimarinin nasıl uygulandığı aşağıda açıklanmıştır:

  1. Kullanıcı, üçüncü taraf bir uygulamanın değiştiremeyeceği bir sistem uygulaması olan TV Uygulamasını görür ve onunla etkileşime girer.
  2. TV Uygulaması, TV Girişindeki AV içeriğini görüntüler.
  3. 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 ayrıntı için aşağıdaki TV Giriş Yöneticisi'ne bakın.

İzinler

  • Yalnızca signatureOrSystem TV Girişleri ve TV Uygulaması, TV Sağlayıcı veritabanına tam erişime sahiptir ve KeyEvent'leri alabilir.
  • TV Girişi Yöneticisi hizmeti aracılığıyla TV Girişi 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 paket kilitli erişime sahiptir ve yalnızca eşleşen paket satırlarına OKUYUN/YAZIN.
  • Üçü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 ayarlayıcı gibi doğrudan geçişli olmayan 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 Hizmetine, önyükleme sırasında TV Giriş Yöneticisi Hizmetini çağırması ve TV Girişlerini eklemesi konusunda bildirimde bulunması için sinyal verir. 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ırabilmesine olanak tanır.

TV Sağlayıcısı

TV Sağlayıcı veritabanı, TV Girişlerinden gelen kanalları ve programları saklar. TV Sağlayıcısı 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 kendi 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ısı dahili olarak "yayın türünü" "kanonik tür" ile eşleştirir. TV Girişleri, "yayın türünü" temel yayın standardındaki değerle doldurmaktan sorumludur ve "kanonik tür" alanı, android.provider.TvContract.Genres adresinden doğru ilişkili türle otomatik olarak doldurulacaktır. Örneğin, yayın standardı ATSC A/65 ve 0x25 türüne sahip program ("Spor" anlamına gelir) ile, TV Girişi "yayın türünü" "Spor" Dizisi ile dolduracak ve TV Sağlayıcısı "kanonik tür" alanını şununla dolduracaktır: eşlenen değer android.provider.TvContract.Genres.SPORTS .

TV Sağlayıcısının ayrıntılı görünümü için aşağıdaki şemaya bakın.

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

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.

TV Sağlayıcısı 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 COLUMN_INTERNAL_PROVIDER_DATA adlı BLOB tipi bir alan da sunar. Bu BLOB verileri, ilgili ayarlayıcının frekansı gibi özel bilgileri içerebilir ve bir protokol arabelleğinde veya başka bir biçimde sağlanabilir. Belirli kanalları aramada kullanılamaz hale getirmek için (örneğin, içerik korumasına ilişkin ülkeye özgü gereksinimleri karşılamak için) Aranabilir bir alan mevcuttur.

Veritabanı alanı örnekleri

TV Sağlayıcısı, 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 bulunur:

  • 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: İlgili standartlara göre içeriği tanımlamak için 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 üç alan vardır.
  • Dahili veriler : TV Girişlerinin özel kullanımına yönelik alanlar.
    COLUMN_INTERNAL_PROVIDER_DATA gibi bazı alanlar, bir TV Girişinin kendi kanalı veya programı hakkında isteğe bağlı 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ı temsil eder. Bu yalnızca kanal düzeyinde ayarlanabilir. Tüm programlar kanaldaki ayarlara uyar.
    • COLUMN_SEARCHABLE : Bazı kanallardan aramanın kısıtlanması bazı bölgelerde gerekli olabilir. 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ı kısıtlanıyor. 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. Kanalın PIN kodu girilmeden geçersiz hesaplar tarafından görüntülenmesi kısıtlanıyor. 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. Kullanıcıların doğrudan erişebileceği hiçbir alan yoktur; yalnızca TV Uygulamasının, Sistem uygulamalarının veya TV Girişlerinin yüzeye çıktığını görürler.

  • Her satırda, o satırın sahibi olan paket (uygulama) olan PACKAGE_NAME bulunur ve TvProvider.java aracılığıyla Sorgulama, Ekleme, Güncelleme'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 kordon altına alınır.
  • Kullanılabilir kanalları belirlemek için AndroidManifest.xml aracılığıyla OKUMA, YAZMA izinleri (kullanıcının iznini gerektirir).
  • Yalnızca signatureOrSystem uygulamaları, veritabanının tamamına erişmek için ACCESS_ALL_EPG_DATA iznini 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 düzenler ve ebeveyn kontrolü işlevselliği sağlar. TV Giriş Yöneticisi oturumları TV Girişleriyle birebir 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 TvContract.buildChannelUriForPassthroughInput() kullanılarak ayarlanabilen doğrudan TV Girişleri hariç, TV Uygulaması tarafından 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 tarafından sağlanan ve imzalanan TV Girişleri (imza uygulamaları) veya sistem bölümünde yüklü olan diğer uygulamalar, TV Sağlayıcısı 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 bunlarda 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 kaldırılması durumunda 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ı ile 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 dosyasına sahip olmaları ve yüklenmeleri (Play aracılığıyla, önceden yüklenmiş veya dışarıdan yüklenmiş) anlamında 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 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 olarak sağlanabilir. İndirilip yüklendikten sonra yeni giriş TV Uygulaması içinden seçilebilir.

Geçiş girişi örneği

Android TV Sistem Girişi
Şekil 3. Android TV Sistem 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 TV Girişi olarak TV Sağlayıcısına herhangi bir kanal veya program kaydetmez. Geçiş girişine başvuruda bulunmak 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.

Dahili tuner örneği

Android TV Dahili Ayarlayıcı Girişi
Şekil 4. Android TV Dahili Ayarlayıcı Giriş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 giriş örneği

Android TV üçüncü taraf girişi
Şekil 5. Android TV üçüncü taraf girişi

Bu örnekte harici STB TV Girişi üçüncü bir 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 ondan videoyu HDMI1'de göstermesini isteyebilir. Böylece STB TV Girişi, üreticinin sağladığı HDMI TV Girişi videoyu işlerken TV'yi kontrol edebilir.

Resim içinde resim (PIP) örneği

Android TV KeyEvents
Şekil 6. Android TV KeyEvents

Yukarıdaki şema, uzaktan kumandadaki düğmelerin, resim içinde resim (PIP) ekranı için belirli bir TV Girişine nasıl aktarıldığını gösterir. Bu düğmeye 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ına InputReader ve InputDispatcher işlevlerine aktarır. Bunlar, eğer odaktaysa TV Uygulamasındaki olayları tetikler.

Yalnızca sistem TV Girişleri, InputEvents almaya uygundur ve yalnızca RECEIVE_INPUT_EVENT sistem iznine sahip olmaları durumunda. TV Girişi, hangi Giriş Olaylarının tüketileceğini belirlemekten sorumludur ve TV Uygulamasının kullanması gerekmeyen tuşları 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ştirmek ve bunları doğru TV Giriş Yöneticisi oturumuna yönlendirmekten, olayı ilgili TV Girişine iletmek için dispatchInputEvent() çağırmaktan sorumludur. .

MHEG-5 giriş örneği

Aşağıdaki diyagram, KeyEvents Android TIF aracılığıyla nasıl yönlendirildiğine ilişkin daha ayrıntılı bir görünümü göstermektedir.

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ındaki etkileşimli uygulamalara erişmesine izin vermek için Avrupa'da yaygın olan Kırmızı düğme uygulamasının akışını gösteriyor. Bu aktarım akışı üzerinden bir uygulama teslim edilebilir. Düğmeye tıklandığında kullanıcıların bu yayın uygulamalarıyla etkileşime girmesine 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ıyla nasıl etkileşime girdiğini öğrenmek için Yayın uygulaması bölümüne bakın.

Bu örnekte:

  1. TV Uygulaması odaktadır ve tüm tuşları alır.
  2. KeyEvents (örn. Kırmızı düğme), Aktif TV Girişine InputEvents.
  3. Sistem TV Girişi, MHEG-5 yığınıyla bütünleşir ve RECEIVE_INPUT_EVENT sistem iznine sahiptir.
  4. Aktivasyon anahtar kodunun (örn. Kırmızı düğme) alınması üzerine TV Girişi, yayın uygulamasını etkinleştirir.
  5. TV girişi, KeyEvents InputEvents olarak tüketir ve yayın uygulaması odak noktasıdır ve kapatılana kadar InputEvents yönetir.

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şim için TV Girişlerinin geliştirilmesine yardımcı olur. Diğer Android HAL'lerde olduğu gibi, TV Girişi HAL'si ( tv_input ) AOSP kaynak ağacında mevcuttur ve satıcı bunun 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 platformunun yanında, olduğu gibi kullanılabilen, özelleştirilebilen, genişletilebilen veya cihaz üreticileri tarafından değiştirilebilen bir referans TV Uygulaması (Canlı TV) sağlanmaktadır. Kaynak kodu Android Açık Kaynak Projesi'nde mevcuttur ve Referans TV uygulaması makalesinde buna başlayabilirsiniz.

Cihaz üreticileri, cihaz üreticisine veya ülkeye özgü özellikleri uygulamak için TV Uygulamalarını genişletebilir ancak bu, TIF'in 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ılama
  • TV Girişlerinin kanal kurulumunu başlatmasına izin verin
  • Ebeveyn ayarlarını kontrol edin
  • Kanalları düzenle

Görüntüleniyor

  • Tüm TV kanallarına erişin ve bu kanallarda gezinin
  • TV programı bilgi çubuğuna erişim
  • Elektronik Programlama Kılavuzu (EPG) verilerini görüntüleme
  • 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 kullanıcı arayüzü katmanı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ümleriyle birlikte artacaktır. CTS Doğrulayıcı uyumluluk testi kapsamını sağlar.

Üçüncü taraf TV Girişleri desteği

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ına olanak tanır. 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ının değiştirilmesi durumunda 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 girişlerini de göstermelidir. Geliştirici API'lerinin vaadi, kullanıcıların standart TV deneyimlerinde kanalları (kurulduktan sonra) bulabilecekleridir.

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ümlerde Canlı TV uygulamasının CDD gereksinimlerini 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 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ına, oturum açma 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ı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 gezinme eylemi uzakta olmasını gerektirir.

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

Ayarlara git
Şekil 8. Ayarlar'a gidin.

Ayarlar'da 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 yönlendirmek için TV Uygulaması menüsünün üst kısmında bir bildirim kartı gösterilir:

Yeni kanal kaynaklarının mevcut olduğunu gösteren bildirim.
Şekil 12. Yeni kanal kaynaklarının mevcut olduğunu gösteren bildirim.

Kullanıcı bildirim üzerinden işlem yaparsa Şekil 10'da görüldüğü gibi kaynaklarını ayarlamayı seçebilir.

Bu alandaki geliştirici beklentileri için TV Giriş 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 kullanıcı arayüzü sağlayabilir. Canlı TV bu özelliği içerir.

Ayarlar'da 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 giriş geliştiricilerinin, tüm uyumlu Android TV cihazlarında kullanıcıların genel kullanım sırasında kendi kanallarına kolayca gidebileceklerinden 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 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.

Üreticiler, en iyi kullanıcı deneyimini sağlamak amacıyla küresel arama isteklerine yönelik arama sonuçlarını içerecek şekilde TV Uygulamasını uygulamalıdır. Canlı TV bir uygulama sağlar ( hangisinin üçüncü taraf girdilerden (platform uyumluluğu için gereklidir) ve yerleşik girdilerden sonuçlar sağladığını görün.

Zaman kaydırma

Android 6.0 ve üzeri cihazlar için TV Uygulaması, Android çerçeve zaman kaydırma API'lerini desteklemelidir. Ayrıca ü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örüntülemesi gerekir.

Oynatma kontrolleri
Şekil 15. Oynatma kontrolleri

DVR

Android 7.0 ve üzeri cihazlar için 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 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 da 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ı üç 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ı talep etmelidir.

TV Uygulamaları ayrıca kullanıcıya bir bölümü kaydetme isteğinde bulunduğunda bir dizideki gelecekteki tüm bölümleri kaydetmek isteyip istemediğini sormak gibi daha karmaşık bir mantık da uygulayabilir.

Android TV'deki 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ına kaç tane ayarlayıcının mevcut olduğunu bildirir, böylece TV Uygulaması olası kaynak çakışmalarını giderebilir.
  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ın ayarlanması için bir istek iletir.
  5. TV Giriş Hizmeti bu isteği alır, uygun kaynakların bulunup bulunmadığına ilişkin yanıt verir ve kanalı ayarlar.
  6. Daha sonra TV Uygulaması, TV Giriş Yöneticisine kaydı başlatma isteğini iletir.
  7. TV Giriş Hizmeti bu isteği alır ve kayda başlar.
  8. TV Giriş Hizmeti, gerçek video verilerini harici depolama veya bulut depolama alanı olabilen kendi deposunda saklar.
  9. Kaydı bitirme zamanı geldiğinde TV Uygulaması, kaydı durdurma isteğini TV Giriş Yöneticisine iletir.
  10. TV Giriş Hizmeti isteği aldığında kaydı durdurur ve ilişkili 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'si ve belgelenmiş geliştirici API'leri kesin referanslardır.
  • CTS Verifier, uyumluluk testi programının bir parçası olarak API'leri kullanır. Bunu Canlı TV'de çalıştırmak, EPG, Arama, Ebeveyn Kontrolü ve diğer gereksinimleri üçüncü taraf girdileri bağlamında görmenin yararlı bir yolu olabilir.
  • Bu alandaki geliştirici beklentileri için TV Giriş Hizmetinizi Tanımlayın bölümüne bakı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ştırılır.

Ebeveyn kontrolü zorunludur ve CTS Doğrulayıcı kapsamındadır.

Bazı ülkeler, TV Girişlerinin TVContentRating API aracılığıyla kullanabileceği tanımlı derecelendirme sistemlerine sahiptir. Ek olarak, TV Girişleri, 'sahte' derecelendirme sunan CTS Doğrulayıcı testinin gösterdiği gibi kendi özel derecelendirme sistemlerini kaydedebilir. Standart bir derecelendirme sisteminin mevcut olduğu ülkelerde, cihaz üreticilerinin TV Giriş Çerçevesi Ebeveyn Denetimini içerebilecekleri diğer mekanizmalarla birleştirmeleri teşvik edilmektedir.

TV sağlayıcısı

Her kanal satırında, belirli kanalların PIN kodu girmeden görüntülenmesini kilitlemek için kullanılan bir COLUMN_LOCKED alanı bulunur. COLUMN_CONTENT_RATING program alanı görüntüleme amaçlıdır ve ebeveyn kontrolünü uygulamak için kullanılmaz.

TV Giriş Yöneticisi

TV Giriş Yöneticisi, engellenen her TvContentRating saklar ve verilen derecelendirmeye sahip içeriğin engellenmesi gerekip gerekmediği konusunda öneride bulunmak için isRatingBlocked() işlevine 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 üzerinde) TV Giriş Yöneticisinde isRatingBlocked() çağırarak 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ılarak 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ğrılarak 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 özel derecelendirmeler de 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örüntüler.

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 beyan etmesi gerekir.

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

  • Uyumluluk gerekliliklerinin gösterimi için referans Canlı TV uygulamasına karşı CTS Doğrulayıcı ebeveyn denetimleri testini uygulayın.
  • Canlı TV uygulamasını kendi TV Uygulamaları için referans olarak kullanın: özellikle ContentRatingsManager ve RatingSystemsFragment kaynakları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 olanak tanır, böylece tek bir uzaktan kumandanın ev sinema sistemindeki birden fazla cihazı kontrol etmesine olanak tanır. 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çabilir veya kapatabilir ve daha fazlasını yapabilir.

Android TIF, HDMI Kontrol Hizmeti olarak HDMI-CEC'yi uygular, böylece cihaz üreticilerinin daha karmaşık iş mantığını atlayarak yalnızca hafif Android TV HAL ile etkileşime giren düşük seviyeli sürücüler geliştirmesi gerekir. Standart bir uygulama sağlarken Android, parçalı uygulamaları ve seçici özellik desteğini azaltarak uyumluluk sorunlarını azaltmayı amaçlamaktadır. HDMI Kontrol Hizmeti, giriş ve güç de 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. Donanım platformunun CEC gücünü açma ve diğer komutları alması için bir mikroişlemci içermesini öneririz.

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

  1. CEC veri yolu, o anda aktif olan kaynaktan farklı bir kaynağa geçmek için bir komut alır.
  2. Sürücü komutu HDMI-CEC HAL'e iletir.
  3. HAL tüm ActiveSourceChangeListeners bilgilendirir.
  4. HDMI Kontrol Hizmeti, kaynak değişikliği konusunda ActiveSourceChangeListener aracılığıyla bilgilendirilir.
  5. TV Giriş Yöneticisi hizmeti, TV Uygulamasının kaynağı değiştirmesi için bir amaç oluşturur.
  6. TV Uygulaması daha sonra değiştirilen TV Girişi için bir TV Giriş Yöneticisi Oturumu oluşturur ve bu oturumda setMain çağırır.
  7. TV Giriş Yöneticisi Oturumu bu bilgiyi HDMI TV Girişine aktarır.
  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 komutunu oluşturur.

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 aktarmasını veya eski yığınlarla etkileşim kurmak için gerekli anahtar kodunu aktarmasını bekliyor.

Yayın uygulaması ile TV Uygulaması şu şekilde etkileşime girer:

  1. TV Uygulaması odakta ve tüm tuşları alıyor.
  2. TV Uygulaması, tuşları (örn. Kırmızı düğme) TV Giriş cihazına aktarır.
  3. TV Giriş cihazı eski TV yığınıyla dahili olarak bütünleşir.
  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ı işlemlerini yönetir.

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