Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući...
Transcript of Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući...
![Page 1: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/1.jpg)
Univerzitet u Novom Sadu
Fakultet tehničkih nauka
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje NamenskihRačunarskih Struktura
Sistemsko programiranje u Androidu
AndroidTV
(evolucija, koncept, softverska arhitekura)
Zimski semestar školske godine 2018/2019
![Page 2: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/2.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Zaštita
PNRS 22018
![Page 3: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/3.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Zaštita
PNRS 32018
![Page 4: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/4.jpg)
Motivacija
Zašto Android u TV uređajima?
PNRS 42018
![Page 5: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/5.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Zaštita
PNRS 52018
![Page 6: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/6.jpg)
IstorijatGoogleTV vs Android TV
Istorijat:
Prvi uređaji su pušteni na tržište 2010 (Sony i Logitech)
Bazirani na x86 arhitekturi (kasnije ARM)
Chrome podrška prisutna, ali limitirana podrška Google play store aplikacijama
Specijalizovana pretraga (optimizovana za TV, sa podrškom za glasovnupretragu)
Juna 2014, GoogleTV je zvanično nasleđen sa Android TV platformom
Sličnosti:
Zvanična Google implementacija TV servisa u Android okruženje
Softverska arhitektura
Razlike:
GoogleTV je platforma koja nije otvorenog koda
U početku (v2-v3) nije imala podršku za NDK (glibc integrisan, zbog
Chrome)
PNRS 62018
![Page 7: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/7.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Zaštita
PNRS 72018
![Page 8: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/8.jpg)
Agenda - detaljnije
GoogleTVArhitektura
Protok podataka
Podrška za pretragu
GoogleTV Media Player
PNRS 82018
![Page 9: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/9.jpg)
GoogleTVSoftverska arhitektura
Pokušaj da se objedine multimedijalne potrebe
Bazirana na MDS(MediaDeviceService)
Višestruki CMD(Custom Media Devices)
Dostupni kroz MDV(MediaDeviceView)
PNRS 92018
![Page 10: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/10.jpg)
GoogleTVJednosmerna vs Dvosmerna
komunikacija
PNRS 102018
![Page 11: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/11.jpg)
GoogleTVTV aplikacija
PNRS 112018
![Page 12: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/12.jpg)
GoogleTVCustom Media Device (CMD)
Discovery (raspoloživost za uparivanje, obznanjivanje mogućnosti
Setup (uparivanje, specijalizovan setup, ako ima)
Controlling (channel up, down, itd)
Digital TV stek (EPG, Teletext) i PVR
PNRS 122018
![Page 13: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/13.jpg)
GoogleTVCMD primer
MAL (Middleware Abstraction Layer) API
Platform Drivers
DTV Middleware System Service
Middleware
CHAL
Middleware top level API
DTV Service
iWedia Media Device
Setup
DeviceTunner
Controller
Media Device View
TV Player App
(LiveTV)
Media Devices Service
Media Devices Session
iWedia DVB Player
iWedia Framework
Components
Vendor Components
iWedia DVB Middleware
Components
Google TV Components
PNRS 132018
![Page 14: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/14.jpg)
Agenda - detaljnije
GoogleTVArhitektura
Protok podataka
Podrška za pretragu
GoogleTV Media Player
PNRS 142018
![Page 15: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/15.jpg)
GoogleTVStruktura/protok podataka
Protok podataka i komandi:
TV aplikacija (LiveTV ili neka druga) instancira MDV
Korisničke akcije se prosleđuju direktno do MDV, koji korišćenjem MDS dobavlja referencu uparenog MD kontrolera (pomoću sesije)
Ovo omogućuje direktnu Binder komunikaciju između TV aplikacije i MD kontrolera (komunikacija može biti jednosmerna ili dvosmerna u zavisnosti od samog kontrolera i prati MDS spregu)
MD kontroler ima otvorenu Binder (najčešće, može i direktna JNI) vezu ka TV middleware softveru
PNRS 152018
![Page 16: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/16.jpg)
GoogleTVStruktura/protok podataka
Akcije raspoložive TV aplikaciji (samim tim i korisniku):
Prebacivanje na željeni TV servis
Prebacivanje na sledeći TV servis
Prebacivanje na naredni TV servis
Akcije raspoložive ka QSB aplikaciji:
Dobavljanje EPG i TTX sadržaja putem MDS od CMD
Pristup informacijama o TV servisima
Pristup listi kanala (engl. tv service lineup)
PNRS 162018
![Page 17: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/17.jpg)
Agenda - detaljnije
GoogleTVArhitektura
Protok podataka
Podrška za pretragu
GoogleTV Media Player
PNRS 172018
![Page 18: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/18.jpg)
GoogleTVPodrška za pretragu
Putem specijalizovane QSB aplikacije (GoogleTV QSB)
Bez upotrebe Google backend (Google serveri) Lokalno iz DVB toka, putem TV middleware
Kombinovani rezultati sa drugim servisima: Youtube, Web
Proširenja dvosmerne komunikacije: Predložena od strane RT-RK
PNRS 182018
![Page 19: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/19.jpg)
GoogleTVPodrška za pretragu (primer)
PNRS 19
Platform Drivers
DTV Middleware System Service
Middleware
CHAL
Middleware top level API
DTV Service
iWedia Media Device
Setup
DeviceTunner
Controller
iWedia Framework
Components
Vendor Components
iWedia DVB Middleware
Components
Google TV Components
Media Devices Service
Media Devices Session
iWedia DVB Player
EPG
Database
TTX
Database
QSB
2018
![Page 20: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/20.jpg)
GoogleTVPretraga – Korisnički scenariji
EPG
Pretraživo: Ime TV servisa, ime emisije koja se prikazuje (trenutno i u bližoj budućnosti), kratak/dugačak opis emisije
Propratna akcija: prebacivanje na pronađeni TV servis
PNRS 202018
![Page 21: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/21.jpg)
GoogleTVPretraga – Korisnički scenariji
TTX
Pretraživo: Naslov TTX strane, sadržaj svih TTX stranica na TV servisu koji se trenutno gleda
Propratna akcija:
Pronađeni tekst je dodatno naznačen (engl. highlighted)
Prikaz pronađene TTX stranice
PNRS 212018
![Page 22: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/22.jpg)
Agenda - detaljnije
GoogleTVArhitektura
Protok podataka
Podrška za pretragu
GoogleTV Media Player
PNRS 222018
![Page 23: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/23.jpg)
GoogleTVMedia Player
GoogleTV Media Player se zove MooPlayer
Mora biti prisutan i portovan na ciljnu platformu
Ima podršku za rukovanje resursima
GoogleTV ekstenzije standardnom MM okruženju:
OMX IL potpun graf (tunelovan)
Više “izvora” i lako proširivih “ekstraktora”
Bolja podrška za DRM (Widevine, Playready) + TrustedVideo Path
Višestruke audio/(video)/prevod trake
QoS (Quality of Service) pomoćna sprega
PNRS 232018
![Page 24: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/24.jpg)
GoogleTVMedia Player
Prenosivi uređaji (telefon, tablet) imaju potpuno drugačija očekivanja od strane korisnika, vezano za video reprodukciju
Kod TV uređaja, prikaz TV (video) sadržaja je primarna aktivnost, koja ne sme biti ometena i prekinuta (usled neregularnog zaustavljanja neke aplikacije)
Istovremeni prikaz dva video sadržaja je očekivan (PiP, PaP), gde svi izvori video sadržaja ne moraju da budu vezani za TV servise (npr. Youtube, GooglePlay movies)
Stoga je bilo neophodno uvesti mehanizam za sinhronizaciju hardverskih resursa (A/V dekoderi, DMX, renderer) između više aplikacija
Uveden je Menadžer resursima (engl. ResourceManager) kao standardna komponenta GoogleTV sistema
PNRS 242018
![Page 25: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/25.jpg)
GoogleTVMenadžer resursima
Uloga menadžera resursima je:
Sinhronizuje hardverske resurse ciljne platforme
Omogući da aplikacije zatraže neophodne resurse
Omogući da aplikacije oslobode neophodne resurse kada im više nisu potrebni
Spreči neograničeno (vremenski nepredvidivo) zaključavanje resursa
Ukoliko neka aplikacija uđe u ANR stanje
Ukoliko se aplikacija nasilno zaustavi i ne oslobodi svoje resurse
Obezbedi arbitražu prioriteta
Koja aplikacija ima veći prioritet prilikom dodele/oduzimanja resursa (LiveTV)
Spreči oduzimanje resursa TV aplikaciji (i time obezbedi neometanu reprodukciju TV sadržaja)
U pitanju je nezavisni izvršni servis (pozadinski proces), kojeg svaki izvršni MediaPlayer mora da koristi, po jasno definisanoj sprezi.
PNRS 252018
![Page 26: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/26.jpg)
GoogleTVMenadžer resursima
PNRS 262018
![Page 27: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/27.jpg)
GoogleTVMenadžer resursima
PNRS 272018
![Page 28: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/28.jpg)
GoogleTVNDK
NDK podrška za GoogleTV platformu je uvedena tek sa verzijom 4
Bazirana na JB 4.2.2
U prethodnim verzijama je nedostajala zbog libc
biblioteke:
v4 ponovo koristi Bionic
Prethodne verzije su koristile glibc
Dozvoljava (skoro) sve regularne Android aplikacije sa GooglePlay Store servisa da se izvršavaju na GoogleTVuređaju:
Touch? GPS? Gyro?
PNRS 282018
![Page 29: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/29.jpg)
GoogleTVMane
GooglePlay Store servis
Zahteva sertifikaciju i prolazak CTS testova
Sertifikacija ima više koraka:
CTS + TV-CTS
DRM
MDS sprega je dosta limitirana (nedostaje joj veći deo funkcija neophodnih za razvoj moderne TV platforme)
Upotreba CMD je obavezna!
Mnogo oštriji zahtevi sa stanovišta mogućnosti softvera i hardvera
PNRS 292018
![Page 30: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/30.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Primeri
PNRS 302018
![Page 31: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/31.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Primeri
PNRS 312018
![Page 32: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/32.jpg)
Android TVMotivacija
Obezbediti korisniku najbolji mogući korisnički ugođaj
Standardizovati API Jedan TV Input A na uređaju X, takođe radi i na uređaju Y
Jedna TV aplikacija, koja radi na svim uređajima
Unificirani TV ugođaj Korišćenje jedne TV aplikacije za sve izvore TV sadržaja (kako
preinstalirane tako i naknadno instalirane preko Google Play store)
Integracija TV u Android na standardan način
Bez održavanja posebne grane (GoogleTV pristup)
Integracija sa pretragom (+glasovna pretraga)
PNRS 322018
![Page 33: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/33.jpg)
Android TVMotivacija
PNRS 332018
![Page 34: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/34.jpg)
Android TVMotivacija
PNRS 342018
![Page 35: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/35.jpg)
Android TVMotivacija
PNRS 352018
![Page 36: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/36.jpg)
Android TVMotivacija
PNRS 362018
![Page 37: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/37.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Primeri
PNRS 372018
![Page 38: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/38.jpg)
Android TVSoftverska arhitektura
PNRS 382018
![Page 39: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/39.jpg)
Android TVPregled glavnih komponenti
TV App: com.google.android.tv
Glavna (i jedina) aplikacija koja služi za gledanje TV sadržaja.
Proizvođači uređaja mogu da prilagode GUI ove aplikacije (umesto da pišu svoju od početka).
TV Input Manager Service: com.android.server.tv
Sistemski servis koji upravlja TV ulazima.
TV Input: android.media.tv
Individualna implementacija jednog TV ulaza (Tuner, HDMI, etc.).
TV Provider: com.android.providers.tv ContentProvider za upravljanje listom TV kanala/emisija.
PNRS 392018
![Page 40: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/40.jpg)
Android TVTV Input Manager Service
Sistemski servis koji arbitrira interakciju TV aplikacije i TV ulaza (putem sesije)
Pravi sesiju koja obezbeđuje pristup individualnim TV ulazima i održava stanje sesije
Pokreće čišćenje TV Provider baze podataka, kada se aplikacija sa TV ulazom obriše iz sistema
PNRS 402018
![Page 41: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/41.jpg)
Android TVTV Input Manager Service
PNRS 412018
![Page 42: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/42.jpg)
Android TVTV Provider
ContentProvider za TV koji čuva listu kanala i emisija.
Obezbeđuje prethodno skladištene podatke aplikacijama kroz ContentResolver spregu
Ima podršku za proveru prava pristupa (TV ulaz vidi samo svoje kanale)
Format kanala (TV servisa) i programa (EPG) su definisani u: android.media.tv.TvContract.Channels.COLUMN_*
android.media.tv.TvContract.Programs.COLUMN_*
PNRS 422018
![Page 43: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/43.jpg)
Android TVTV Provider
PNRS 432018
![Page 44: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/44.jpg)
Android TVTV Input
Android servis (Java) koji obezbeđuje TV sadržaj
Postoje dva tipa podržana: Tuner: ugrađeni tuner, IPTV tuner, TV ulaz baziran na protokolu
(streaming)
Passthrough: HDMI, Component
Glavno zaduženje: Reakcija na onTune(...)i prikaz TV sadržaja u obezbeđenu video
površinu (Surface)
PNRS 442018
![Page 45: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/45.jpg)
Android TVTV Input
PNRS 452018
![Page 46: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/46.jpg)
Android TVTV Input - Klase
TvInputService
TvInputService.Session
TvContract
TvContract.Program
TvContract.Channels
TvContentRating
TvInputInfo
TvTrackInfo
TvInputManager
PNRS 462018
![Page 47: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/47.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Primeri
PNRS 472018
![Page 48: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/48.jpg)
Android TVTV Input – Životni vek
PNRS 482018
![Page 49: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/49.jpg)
Agenda
Motivacija
Istorijat
GoogleTV
AndroidTVMotivacija
Arhitektura
Životni vek
Primeri
PNRS 492018
![Page 50: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/50.jpg)
AndroidTVPrimeri
Definisanje TvInputService u AndroidManifest.xml:
Definisanje XML za metadata podatke TV ulaza:
PNRS 50
<service android:name="com.vendor.tvinput.VendorTvInput"
android:label="@string/vendor_tv_input_label"
android:permission="android.permission.BIND_TV_INPUT">
<intent-filter>
<action android:name="android.media.tv.TvInputService" />
</intent-filter>
<meta-data android:name="android.media.tv.input"
android:resource="@xml/vendor_tv_input" />
</service>
<!-- xml/vendor_tv_input.xml -->
<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
android:setupActivity="com.vendor.tvinput.VendorSetupActivity"
android:settingsActivity="com.vendor.tvinput.VendorSettingsActivity" />
2018
![Page 51: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/51.jpg)
AndroidTVPrimeri - Setup
TV aplikacija je zadužena za pokretanje aktivnosti za podešavanje (engl. SetupActivity) kada TV ulaz nije podešen
Obično ovaj korak uključuje skeniranje kanala (TV servisa)
Tokom ove aktivnosti, podatke o pronađenim TV servisima je potrebno uneti u TV Provider bazu podataka.
Definisanje aktivnosti podešavanja:
PNRS 51
<activity android:name=".VendorSetupActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
2018
![Page 52: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/52.jpg)
AndroidTVPrimeri - Setup
Unos jednog TV servisa u bazu podataka:
PNRS 52
ContentValues values = new ContentValues();
values.put(Channels.COLUMN_DISPLAY_NUMBER, channel.mNumber);
values.put(Channels.COLUMN_DISPLAY_NAME, channel.mName);
values.put(Channels.COLUMN_ORIGINAL_NETWORK_ID, channel.mOriginalNetworkId);
values.put(Channels.COLUMN_TRANSPORT_STREAM_ID, channel.mTransportStreamId);
values.put(Channels.COLUMN_SERVICE_ID, channel.mServiceId);
values.put(Channels.COLUMN_VIDEO_FORMAT, channel.mVideoFormat);
values.put(Channels.COLUMN_INTERNAL_PROVIDER_DATA, channel.mPrivateData);
Uri uri = getContentResolver().insert(Channels.CONTENT_URI, values);
2018
![Page 53: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/53.jpg)
AndroidTVPrimeri – Podaci o TV servisima
Unos jednog TV servisa u bazu podataka:
Kada se unosi veća količina podataka, bolje je koristiti bulkInsert() ili applyBatch() funkcije:
PNRS 53
ContentValues values = new ContentValues();
values.put(Channels.COLUMN_DISPLAY_NUMBER, channel.mNumber);
values.put(Channels.COLUMN_DISPLAY_NAME, channel.mName);
values.put(Channels.COLUMN_ORIGINAL_NETWORK_ID, channel.mOriginalNetworkId);
values.put(Channels.COLUMN_TRANSPORT_STREAM_ID, channel.mTransportStreamId);
values.put(Channels.COLUMN_SERVICE_ID, channel.mServiceId);
values.put(Channels.COLUMN_VIDEO_FORMAT, channel.mVideoFormat);
values.put(Channels.COLUMN_INTERNAL_PROVIDER_DATA, channel.mPrivateData);
Uri uri = getContentResolver().insert(Channels.CONTENT_URI, values);
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
int size = mPrograms.size();
for (int i = 0; i < size; ++i) {
ProgramInfo program = mPrograms.get(i);
ops.add(ContentProviderOperation
.newInsert(TvContract.Programs.CONTENT_URI)
.withValues(...)
.build());
if (i % 100 == 99 || i == size - 1) {
getContentResolver().applyBatch(TvContract.AUTHORITY, ops);
ops.clear();
}
}
2018
![Page 54: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/54.jpg)
AndroidTVPrimeri – Podaci o TV servisima
Kada se osvežava baza TV servisa, potrebno je koristiti update() funkciju, umesto delete(), praćenu sa insert()
Obrada podataka ne treba da blokira “glavnu” nit. Preporuka je koristiti AsyncTask, kao jedan način na koji
se ovaj zadatak može izvesti asinhrono:
Ukoliko se podaci dovlače sa servera (IPTV), razmisliti o SyncAdapter-u.
PNRS 542018
![Page 55: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/55.jpg)
AndroidTVPrimeri – TV Input
Glavna uloga TvInputService je da kreira i obezbedi instancu TvInputService.Session na zahtev
Uglavnom, ovaj zahtev dolazi od TV aplikacije, kada pokuša da promeni TV servis, na odgovarajućem TvView
PNRS 55
public class VendorTvInputService extends TvInputService {
@Override
public final Session onCreateSession(String inputId) {
// May return null if the device is not available at the moment.
return new VendorSession(VendorTvInputService.this);
}
...
}
2018
![Page 56: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/56.jpg)
AndroidTVPrimeri – TV Input sesija
Kada se napravi sesija za odgovarajući ulaz, TV aplikacija prosleđuje Surface objekat i URI TV servisa.
PNRS 56
public class VendorSession extends Session {
@Override
public boolean onSetSurface(Surface surface) {
// Connect the surface with the tv_input HAL.
TvInputManager.Hardware hardware = mManager.acquireTvInputHardware(...);
TvStreamConfig config;
// Get the config via TvInputManager.HardwareCallback before calling
// setSurface()
hardware.setSurface(surface, config);
return true;
}
@Override
public boolean onTune(Uri channelUri) {
notifyVideoUnavailable(VIDEO_UNAVAILABLE_REASON_TUNING);
// Do own operation for tuning to a new channel.
// Either register a callback that invokes notifyVideoAvailable() when
// tuning is done (preferred) or call it here.
notifyVideoAvailable();
}
2018
![Page 57: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/57.jpg)
AndroidTVPrimeri – Video status
TV aplikacija se oslanja na status video reprodukcije od TV ulaza:
notifyVideoAvailable()
Obaveštava TV aplikaciju da je video spreman za gledanje
Koristi se da se TV aplikaciji da do znanja da omogući video prikaz
notifyVideoUnavailable()
Obaveštava TV aplikaciju da video sadržaj više nije spreman za gledanje.
Mogući razlozi su:VIDEO_UNAVAILABLE_REASON_UNKNOWN
VIDEO_UNAVAILABLE_REASON_TUNING
VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL
VIDEO_UNAVAILABLE_REASON_BUFFERING
PNRS 572018
![Page 58: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/58.jpg)
AndroidTVPrimeri – Prevodi i multiaudio
Za svaki TV servis, TV ulaz treba da obezbedi informacije o broju i tipu traka za prevode i audio (ukoliko postoje)
Koristite TvTrackInfo.Builder za konstrukciju
specifičnih video/audio/prevod informacija:
PNRS 58
TvTrackInfo track = new TvTrackInfo.Builder(TvTrackInfo.TYPE_AUDIO, “ID-X”)
.setAudioChannelCount(format.numChannels)
.setAudioSampleRate(format.audioSamplingRate)
.setLanguage(format.language)
.build();
2018
![Page 59: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/59.jpg)
AndroidTVPrimeri – Prevodi i multiaudio
Potrebno je pozvati notifyTracksChanged(...) čim
se informacije o novoj traci obezbede, i obezbediti odgovor na onSelectTrack(...) funkciju.
PNRS 59
public class VendorSession implements Session {
@Override
public boolean onTune(Uri channelUri) {
mVendorTuner.tune(channelUri, new VendorTunerCallback() {
void onTuneDone() {
notifyTracksChanged(mVendorTuner.getTracks());
// Report the tracks selected by default.
notifyTrackSelected(TvTrackInfo.TYPE_AUDIO,
mSelectedAudioTrack);
// Do the same for TYPE_SUBTITLE, if available.
}
});
}
@Override
public boolean onSelectTrack(int type, String trackId) {
if (mVendorTuner.selectTrack(type, trackId)) {
notifyTrackSelected(type, trackId);
}
}
2018
![Page 60: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/60.jpg)
AndroidTVPrimeri – Overlay
TV ulazi mogu da koriste overlay mehanizam (prikaz
grafičkog sadržaja “preko” video sadržaja) za prikaz prevoda, banera (za reklame) i sl.
PNRS 60
public class VendorTvInputService extends TvInputService {
@Override
public final Session onCreateSession(String inputId) {
VendorSession session = new VendorSession(
VendorTvInputService.this);
session.setOverlayViewEnabled(true);
return session;
}
public class VendorSession extends Session {
@Override
public View onCreateOverlayView() {
LayoutInflater inflater = (LayoutInflater)getSystemService(
LAYOUT_INFLATER_SERVICE);
mView = inflater.inflate(R.layout.overlayview, null);
return mView;
}
...
2018
![Page 61: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/61.jpg)
Kraj
Pitanja?
PNRS 612018
![Page 62: Projektovanje Namenskih Računarskih Struktura · Motivacija Obezbediti korisniku najbolji mogući korisnički ugođaj Standardizovati API Jedan TV Input A na uređaju X, takođe](https://reader030.fdocuments.net/reader030/viewer/2022040706/5e046b5283aafe23310346d6/html5/thumbnails/62.jpg)
Literatura
https://www.android.com/tv/
https://source.android.com/devices/tv/
2018 PNRS 62