
Naučte sa vyvíjať Android aplikácie – prehrávanie zvuku a videa
Na podporu práce s multimédiami sú na platforme Android pre vývojárov aplikácií k dispozícii triedy AudioManager, - trieda umožňuje aplikáciám prehrávať zvukové efekty a zvukové súbory, či ovládať hardvérové zariadenia súvisiace s prehrávaním zvuku, napríklad reproduktory a bezdrôtové slúchadlá. Aplikácie získa referenciu na triedu AudioManager volaním metódy
getSystemService(Context.AUDIO_SERVICE). Následne je možné načítať zvukové súbory a ovládať hardvérové zariadenia.
SoundPool - trieda obsahuje kolekciu zvukových vzoriek alebo streamov. SoundPool umožňuje miešať a hrať viac vzoriek súčasne.
RingtoneManager, Ringtone – na ovládanie zvukov vyzváňania a alarmov
MediaPlayer – trieda umožňuje aplikáciám prehrávať audio a video súbory. Z triedy MediaPlayer budete najčastejšie využívať metódy
- setDataSource() - pomocou tejto metódy oznámite triede MediaPlayer, aké streamy sa budú prehrávať.
- prepare() - v metóde sa inicializuje MediaPlayer a načítajú sa potrebné multimediálne streamy. Metóda je synchrónna, čo znamená, že ju budete používať vtedy, ak mediálny obsah je uložený v súbore na zariadení. K dispozícii je aj asynchrónna verzia tejto metódy, ktorú použijete, ak je mediálny obsah streamovaný z internetu.
- start() –umožní spustiť prehrávanie, alebo pokračovať v pozastavenom prehrávaní
- pause() – umožní pozastaviť prehrávanie
- seekTo() - metóda umožňuje prejsť na konkrétnu pozíciu v streame
- stop() – zastaví prehrávanie
- release()- uvoľňuje aktuálne používané prostriedky na prehrávanie multimediálneho obsahu
MediaRecorder- umožňuje aplikáciám záznam zvuku a obrazu
Camera - umožňuje aplikáciám ovládanie hardvéru na snímanie fotografií
Príklad – prehrávanie zvuku
Zadanie príkladu je komplet v jeho názve. Vytvorte projekt Android aplikácie, ktorá bude prehrávať súbor z krátkym zvukovým efektom, napríklad sirénou vo formáte. Súbor získate z internetu. V zložke res vytvorte vnorenú zložku raw a do nej prekopírujte zvukový súbor.
V layoute hlavnej aktivity bude tlačidlo na prehranie zvukového efektu a dva tlačidlá na ovládanie hlasitosti. Úroveň hlasitosti v škále od 0 do 10 taktiež zobrazíme na displeji.
V kóde hlavnej aktivity, v metóde OnCreate získa aplikácia odkaz na triedu AudioManager a nastaví implicitnú hodnotu hlasitosti.
Po získaní referencie na tlačidlo Play sa toto tlačidlo zakáže dovtedy, kým sa nevytvorí trieda SoundPool a nenaplní sa obsahom, teda zvukom zo súboru. Po naplnení bude SoundPool obsahovať jeden audiostream. Ak by sa to nepodarilo, nebolo by čo prehrávať. Tlačidlo Play povolíme po nahraní zvuku v metóde setOnLoadCompleteListener. Pre jednoduchosť zvukový súbor načítame v hlavnom vlákne, nakoľko súbor je krátky a je súčasťou aplikácie. Netreba ho nahrávať z internetu ani z pamäťovej karty.
Aplikácia môže prehrávať zvuk až potom, keď získa fokus na príslušný hardvér.
int result = audioManager.requestAudioFocus(afChangeListener,
AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
V aplikácii na prehrávanie zvuku by sa patrilo pomocou zvukového efektu signalizovať aj ťuknutie na tlačidlá regulácie hlasitosti. Preto prehráme zvuk
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
Kompletný kód hlavnej aktivity
Príklad – prehrávanie videa
Na zobrazovanie videa sa využíva trieda VideoView odvodená od triedy SurfaceView, ktorá vnútorne využíva MediaPlayer. Trieda VideoView dokáže načítať video obsah z rôznych zdrojov a riadiť jeho prehrávanie. V aplikácii zobrazíme okno na prehrávanie videa a integrované ovládacie prvky na riadenie prehrávania.
Vytvorte projekt Android aplikácie, ktorá bude prehrávať krátke video. Súbor získate z internetu, alebo z príkladov ktoré sú súčasťou Android SDK. V zložke res vytvorte vnorenú zložku raw a do nej prekopírujte súbor s videom. Nakoľko video bude súčasťou aplikácie, vyberajte krátke video, aby veľkosť súboru nepresiahla niekoľko megabajtov.
V layoute hlavnej aktivity bude iba prvok VideoView na prehrávanie videa.
V metóde OnCreate aplikácia získa odkaz na prvok VideoView. Následne vytvára inštanciu triedy MediaController, ktorý obsahuje ovládacie prvky pre ovládanie prehrávača.
V projektoch tohto typu môžete využiť metódy triedy VideoView
- setVideoPath(String path) – cesta k video súboru. Môže to byť URL adresa videa na webe, alebo cesta k lokálnemu súboru.
- setVideoUri(Uri uri) – adresa videa na webe ako URI objekt
- start() – spusti prehrávanie.
- stopPlayback() – zastav prehrávanie.
- pause() – preruš prehrávanie.
- isPlaying() – vráti Boolean hodnotu, či sa video práve prehráva.
- setMediaController(MediaController) – Vytvorí inštanciu objektu MediaController na zobrazenie ovládacích prvkov prehrávania.
- setOnCompletionListener(MediaPlayer.OnCompletionListener) - callback metóda, volá sa keď je prehrávanie videa na konci.
- setOnErrorListener(MediaPlayer.OnErrorListener) – callback metóda, volá sa, ak pri prehrávaní videa dôjde k chybe.
- setOnPreparedListener(MediaPlayer.OnPreparedListener) – callback metóda, volá sa keď je video pripravené na prehrávanie.
- getDuration() – čas trvania videa. Hodnotu -1 vráti kým sa neaktivuje callback OnPreparedListener()
- getCurrentPosition() – pozícia prehrávania (integer).
Video sa nahráva cez URI, ktorý odkazuje na súbor uložený v zložke res/raw.
Metóda OnPreparedListener sa bude volať, akonáhle je súbor s videom načítaný a pripravený na prehrávanie.
Kompletný kód hlavnej aktivity
Ak prehrávate video z internetu, nezabudnite túto skutočnosť deklarovať v aplikačnom manifeste
<uses-permission android:name="android.permission.INTERNET" />
Rekapitulácia seriálu
1 – Prvá aplikácia
3 - Zorientujte sa v projekte aplikácie
4 – Princípy dizajnu a škálovania
5 – Uporiadanie prvkov používateľského rozhrania
6 – Obsluha udalostí
7 – Aplikácia s dvomi aktivitami
8 – Spustenie na reálnom zariadení
9 – Intenty, alebo kto to urobí
10 – Dotyky a gestá
11 - Dotyky a gestá II
12 - Zmena orientácie displeja
13 – Grafika 1
14 – Grafika II
15 - Animácia
16 – Animácia II
Zobrazit Galériu