09.02.2013 Views

Sviluppo di una piattaforma per lo streaming multimediale - MobiLab ...

Sviluppo di una piattaforma per lo streaming multimediale - MobiLab ...

Sviluppo di una piattaforma per lo streaming multimediale - MobiLab ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.4 – Android Me<strong>di</strong>a<br />

<strong>Sviluppo</strong> <strong>di</strong> <strong>una</strong> <strong>piattaforma</strong> <strong>per</strong> <strong>lo</strong> <strong>streaming</strong> multime<strong>di</strong>ale in ambiente Android<br />

Android mette a <strong>di</strong>sposizione un sistema <strong>per</strong> la co<strong>di</strong>fica e la deco<strong>di</strong>fica <strong>di</strong> file<br />

au<strong>di</strong>o e video <strong>per</strong> <strong>una</strong> notevole quantità <strong>di</strong> formati, orientato a garantire facilità <strong>di</strong><br />

embed<strong>di</strong>ng nelle applicazioni utente.<br />

È possibile riprodurre au<strong>di</strong>o/video sia da risorse raw <strong>di</strong>sponibili nel<strong>lo</strong> spazio dati<br />

dell'applicazione in esecuzione, sia da file, sia da stream <strong>di</strong> dati, re<strong>per</strong>iti attraverso<br />

<strong>una</strong> connessione internet.<br />

La classe standard <strong>per</strong> la visualizzazione <strong>di</strong> dati multime<strong>di</strong>ali è Me<strong>di</strong>aPlayer, quella<br />

<strong>per</strong> l'acquisizione degli stessi è Me<strong>di</strong>aRecorder.<br />

3.4.1 – Me<strong>di</strong>aPlayer<br />

Il Me<strong>di</strong>aPlayer è invocabile me<strong>di</strong>ante:<br />

Me<strong>di</strong>aPlayer mp = new Me<strong>di</strong>aPlayer();<br />

mp.setDataSource(PATH_TO_FILE);<br />

mp.prepare();<br />

mp.start();<br />

nel caso in cui i sorgenti siano un file o un URL; oppure attraverso:<br />

Me<strong>di</strong>aPlayer mp = Me<strong>di</strong>aPlayer.create(context, R.raw.sound_file_1);<br />

mp.start();<br />

nel caso si richieda l'esecuzione <strong>di</strong> un file raw.<br />

Come si può notare dal <strong>di</strong>agramma, la transizione attraverso gli stati <strong>di</strong> un<br />

Me<strong>di</strong>aPlayer dopo la sua istanziazione può avvenire attraverso chiamate a meto<strong>di</strong><br />

sincroni o asincroni (archi con <strong>una</strong> o due frecce). Lo stato iniziale (e post-reset) è <strong>lo</strong><br />

stato Idle, quel<strong>lo</strong> finale End; inoltre l'invocazione <strong>di</strong> meto<strong>di</strong> non <strong>per</strong>messi in<br />

particolari stati è gestita me<strong>di</strong>ante OnErrorListener.onError() nel caso in cui<br />

l'eccezione sia stata previamente registrata attraverso<br />

49

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!