TV Girişi Çerçevesi

Android TV HAL simgesi

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 şartları uygulamayı 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 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şi yöneticisi aracılığıyla cihaz üreticisi veya diğer taraflarca sağlanan TV girişi modülleriyle iletişim kurar.

TV girişi çerçevesi aşağıdakilerden oluşur:

  • TV Sağlayıcı (com.android.providers.tv.TvProvider): Kanallar, programlar ve ilişkili izinlerin bulunduğu bir veritabanı
  • TV uygulaması (com.android.tv.TvActivity): Kullanıcı etkileşimini 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 alıcıları ve giriş bağlantı noktalarını temsil eden bir uygulama
  • 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
  • Tuner Framework: Dahili 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ö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.

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

Akış

Mimari şu şekilde uygulanır:

  1. Kullanıcı, üçüncü taraf uygulamasıyla değiştirilemeyen bir sistem uygulaması olan TV uygulamasını görür ve bu uygulamayla etkileşimde bulunur.
  2. TV uygulaması, TV girişindeki AV içeriğini gösterir.
  3. TV uygulaması, TV girişleriyle doğrudan iletişim kuramaz. TV Giriş Yöneticisi, TV uygulaması için TV girişlerinin durumunu tanımlar. Bu sınırlamalar hakkında daha fazla bilgi için aşağıdaki TV Giriş Yöneticisi bölümüne bakın.

İzinler

  • Yalnızca signatureOrSystem TV girişleri ve TV uygulaması, TV sağlayıcı veritabanına tam erişime sahiptir ve KeyEvents alabilir.
  • TV giriş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ı 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 cihaz üreticisinin HDMI1 gibi geçiş TV girişlerindeki içerikleri gösterebilir. Yerleşik veya IPTV tuner gibi geçişli olmayan TV girişlerinden gelen içerikleri gösteremezler.
  • TV_INPUT_HARDWARE iznini alan donanım TV girişi uygulaması, TV girişi hizmetini bildirmek için TV girişi yöneticisi hizmetine sinyal gönderir. Böylece TV girişi yöneticisi hizmeti çağrılır ve TV girişleri eklenir. Bu izin, donanım TV girişi uygulamasının TV girişi hizmeti başına birden fazla TV girişini desteklemesine ve desteklenen TV girişlerini dinamik olarak ekleyip kaldırmasına olanak tanır.

TV sağlayıcı

TV sağlayıcı veritabanı, 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.

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

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 tunerın frekansı gibi özel bilgiler içerebilir ve 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ü şartları 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 bunlara erişilir. Bu tablolarda dört tür alan vardır:

  • 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ı için olan 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çin 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 zorunlu 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ıtlama COLUMN_BROWSABLE = 0, kanalın kanal listesine dahil edilmemesi gerektiği anlamına gelir.
    • COLUMN_LOCKED: Yalnızca sistem uygulamaları tarafından görülebilir. PIN kodu girmeden kanalın geçersiz hesaplar tarafından izlenmesini kısıtlama COLUMN_LOCKED = 1, kanalın ebeveyn denetimiyle korunması gerektiği anlamına gelir.

Alanların daha kapsamlı bir listesi için android/frameworks/base/media/java/android/media/tv/TvContract.java

İzinler ve erişim denetimi

Tüm alanlar, ilgili satıra erişimi olan herkes tarafından görülebilir. Kullanıcılar hiçbir alana doğrudan erişemez. Yalnızca TV uygulaması, sistem uygulamaları veya TV girişlerinin gösterdiği 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.
  • Mevcut 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çin ACCESS_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 ile TV girişleri arasındaki etkileşimi yönetir ve ebeveyn denetimi işlevi sağlar. TV girişi yöneticisi oturumları, TV girişleriyle bire bir oluşturulmalıdır. TV girişi 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 değişiklik 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şinin bağlantısı kesildiğinde girişi bağlantısı kesilmiş olarak göstererek ve girişin seçilmesini engelleyerek tepki verebilir.

TV giriş yöneticisi, TV uygulaması ile TV girişleri arasındaki iletişimi soyutlar. TV girişi yöneticisinin ve TV girişinin standart arayüzü, birden fazla cihaz üreticisinin kendi TV uygulamalarını oluşturmasına olanak tanır. Ayrıca 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ına sahip oldukları ve yüklü oldukları (Play üzerinden, önceden yüklenmiş olarak veya harici olarak yüklenen) için 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

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ı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.TvContractyardımcı program yöntemini buildChannelUriForPassthroughInput(String inputId) kullanın. TV uygulaması, HDMI TV girişine ulaşmak için TV girişi yöneticisiyle iletişim kurar.

Yerleşik tuner örneği

Android TV Yerleşik 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ıya tam erişime sahiptir.

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

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

Bu örnekte harici STB TV girişi üçüncü taraf tarafından 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şi yöneticisi aracılığıyla HDMI TV girişiyle iletişime geçebilir ve videoyu HDMI1'de göstermesini 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

Android TV KeyEvents
Şekil 6. Android TV KeyEvents

Yukarıdaki şema, uzaktan kumandadaki düğmelerin pencere içinde pencere (PIP) görüntüleme için belirli bir TV girişine nasıl iletildiğ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ı 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 InputEvents alabilir ve bu da yalnızca RECEIVE_INPUT_EVENT sistem iznine sahip olmaları durumunda geçerlidir. TV girişi, hangi giriş etkinliklerinin kullanılacağını belirlemekten sorumludur ve TV uygulamasının, kullanması gerekmeyen anahtarları işlemesine izin vermelidir.

TV uygulaması, hangi sistem TV girişinin etkin olduğunu (yani kullanıcı tarafından seçildiğini) bilmekten ve gelen KeyEvents mesajlarının anlamını açıklığa kavuşturup doğru TV girişi yöneticisi oturumuna yönlendirmekten sorumludur. Ayrıca, etkin TV girişine bağlı TV girişi yöneticisi oturumunu çağırarak etkin TV girişine ilgili etkinliği iletir.dispatchInputEvent()

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.

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

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ıyla nasıl etkileşime geçtiğini öğrenmek için Yayın uygulaması bölümüne bakın.

Bu örnekte:

  1. TV uygulaması odaktadır ve tüm anahtarları alır.
  2. KeyEvents (ör. kırmızı düğme) etkin TV'ye iletilir InputEvents. olarak giriş
  3. Sistem TV girişi, MHEG-5 yığınıyla entegre olur ve RECEIVE_INPUT_EVENT sistem iznine sahiptir.
  4. TV girişi, etkinleştirme anahtar kodunu (ör. kırmızı düğme) aldığında yayın uygulamasını etkinleştirir.
  5. TV girişi, InputEvents olarak KeyEvents tüketir ve yayın uygulaması, kapatılana kadar odak noktasıdır ve InputEvents'ı yönetir.

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

TV Girişi HAL'i

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, olduğu gibi kullanılabilen, özelleştirilebilen, genişletilebilen veya cihaz üreticileri tarafından değiştirilebilen 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ı cihaz üreticisine veya ülkeye özgü özellikleri uygulamak için 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 olarak algılama
  • TV girişlerinin kanal kurulumunu başlatmasına izin verme
  • Ebeveyn ayarlarını kontrol etme
  • Kanalları düzenle

Görüntülenen içerik

  • Tüm TV kanallarına erişme ve kanallar arasında gezinme
  • TV programı bilgi çubuğuna erişme
  • Elektronik Program Rehberi (EPG) verilerini görüntüleme
  • Birden çok ses ve altyazı parçası desteği
  • Ebeveyn denetimi PIN'i istemi
  • TV standardı (HbbTV vb.) için TV girişi kullanıcı arayüzü yer paylaşımına izin verin
  • 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 yönetme ve TV kayıt API'lerini destekleme

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ı sağlamak için sistem TV uygulamasının, üçüncü taraf TV girişlerini ve kanallarını kullanıcıya göstermeyle ilgili bazı sorumlulukları vardır. Referans canlı TV uygulaması uyumlu bir uygulama sağlar. Sistem TV uygulamasının yerini alacaksa cihaz üreticileri, tüm Android TV cihazlarında 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 şartlarını 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ı TvProvider veritabanına otomatik olarak ekler. Ancak çoğu, kullanıcının kanallarını oluşturmasını, giriş ayrıntılarını sağlamasını ve diğer işlemleri yapmasını sağlayan bir Kurulum etkinliği sağlar. Sistem TV uygulamasının, kullanıcının bu Kurulum etkinliğini etkinleştirebildiğinden emin olması gerekir. Bu nedenle CDD, üçüncü taraf girişlerinin ana TV uygulamasından uzakta minimum gezinme işlemleri olmasını gerektirir.

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

Ayarlar'a 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 ekleme
Şekil 11. Kaynağınızdan kanal ekleyin.

Ayrıca, yeni bir TvInput yüklendikten sonra TV uygulaması menüsünün üst kısmında kullanıcıyı doğrudan Kurulum'a yönlendiren bir bildirim kartı gösterilir:

Yeni kanal kaynaklarının kullanıma sunulduğunu gösteren bildirim.
Şekil 12. Yeni kanal kaynaklarının kullanıma sunulduğunu gösteren bildirim.

Kullanıcı bildirim üzerinden işlem yaparsa kaynaklarını Şekil 10'da gösterildiği gibi ayarlayabilir.

Bu alandaki geliştirici beklentileri için TV Giriş Hizmetinizi Tanımlama başlıklı makaleyi inceleyin.

Kanal listesini özelleştirme

Cihaz üreticileri, belirli kanalları gizlemek ve kullanıcıların kendi EPG'lerini yönetmelerini sağlamak için bir kullanıcı arayüzü sağlayabilir. Canlı TV bu imkanı sunar.

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ş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'si kapsamında 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ı bulabilmesidir.

Ü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ümleri çalıştıran cihazlarda TV uygulaması, Android çerçevesi zaman kaydırma API'lerini desteklemelidir. Ayrıca üreticiler, TV uygulamasında kullanıcıların oynatmayı duraklatmasına, devam ettirmesine, geri sarmasına ve ileri sarmasına olanak tanıyan oynatma kontrolleri uygulamalıdır.

Zaman kaydırma özelliğini destekleyen TV girişlerinde TV uygulamasının oynatma kontrollerini göstermesi gerekir.

Oynatma kontrolleri
Şekil 15. Oynatma kontrolleri

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çerik kaydetmenin yanı sıra kaynak çakışmasını da yönetir. Örneğin, cihazda iki tuner varsa aynı anda iki program kaydedilebilir. 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 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.

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ışmalarını çözebilmesi için TV uygulamasına kaç tuner olduğunu bildirir.
  2. TV uygulaması, kullanıcı tarafından başlatılan bir TV programı kaydetme isteği 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 kanala geçme isteği gönderir.
  5. TV giriş hizmeti bu isteği alır, uygun kaynakların olup olmadığını belirtir ve kanala geçer.
  6. Ardından TV uygulaması, kayıt başlatma isteğini TV giriş yöneticisine iletir.
  7. TV giriş hizmeti bu isteği alır ve kaydı başlatır.
  8. TV Giriş Hizmeti, gerçek video verilerini kendi depolama alanında depolar. Bu depolama alanı harici depolama alanı veya bulut depolama alanı olabilir.
  9. Kaydın bitme zamanı geldiğinde TV uygulaması, kayıt durdurma isteğini TV giriş yöneticisine iletir.
  10. 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 için bu TV Kaydı makalesine bakın.

Faydalı kaynaklar

  • Android CDD ve belgelenmiş geliştirici API'leri,
  • CTS Doğrulayıcı, uyumluluk testi programı kapsamında API'leri kullanır. Bu testi Canlı TV ile çalıştırmak, EPG, Arama, Ebeveyn Denetimi ve üçüncü taraf girişleri bağlamında diğer şartları 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ı tarafından desteklenir.

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, PIN kodu girmeden belirli kanalların görüntülenmesini engellemek için kullanılan bir COLUMN_LOCKED alanı bulunur. Program alanı COLUMN_CONTENT_RATING gö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ştirmek 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ı üzerinden çeşitli TV girişlerini uzaktan kontrol etmek 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, 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 platformunda, CEC güç açma ve diğer komutları alacak bir mikroişlemci bulunması önerilir.

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

  1. CEC veri yolu, şu anda etkin 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 öğelerini bilgilendirir.
  4. HDMI Kontrol Hizmeti, ActiveSourceChangeListener aracılığıyla kaynak değişikliği hakkında bilgilendirilir.
  5. TV Giriş Yöneticisi hizmeti, TV uygulamasının kaynağı değiştirmesi için bir intent oluşturur.
  6. 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.
  7. TV Giriş Yöneticisi Oturumu bu bilgileri HDMI TV girişine iletir.
  8. HDMI TV girişi, yan bant yüzeyini ayarlama isteğinde bulunur.
  9. 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'ın 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ı arasındaki etkileşim şu şekildedir:

  1. TV uygulaması odaktadır ve tüm tuşları alır.
  2. TV uygulaması, anahtarları (ör. kırmızı düğme) TV giriş cihazına iletir.
  3. TV giriş cihazı, eski TV yığınıyla dahili olarak entegre edilir.
  4. TV giriş cihazı, etkinleştirme anahtar kodu (ör. kırmızı düğme) aldığında yayın uygulamalarını etkinleştirir.
  5. 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.