mul$mediasupportin*android* · pdf filemul$mediasupport • mediaplayer*class* –...

15
Mul$media Support in Android

Upload: ledat

Post on 28-Mar-2018

220 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Mul$media  Support  in  Android  

Page 2: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Mul$media  Support  •  Android  provides  comprehensive  mul$media  func$onality:  

–  Audio:  all  standard  formats  including  MP3,  Ogg,  Midi,  …  –  Video:  MPEG-­‐4,  H.263,  H.264,    –  Images:  PNG  (preferred),  JPEG,  GIF  (not  recommended)  

•  Several  different  media  formats  and  codecs  are  supported  •  You  can  play  audio  or  video  from:  

–  Media  files  stored  in  the  applica$on's  resources  (raw  resources)  –  Media  files  in  the  filesystem  (e.g.,  SD  Card)  –  Data  stream  arriving  over  a  network  connec$on.  

COMP  107x  (Muppala)   Mul$media  in  Android   2  

Page 3: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Mul$media  Support  

•  MediaPlayer  class  –  Long  sustained  playing  of  audio/video  –  Primary  API  for  sound  and  video  

•  SoundPool  class  –  Short  bursts  of  sound  

•  AudioManager  – Managing  audio  output  and  audio  sources  

COMP  107x  (Muppala)   Mul$media  in  Android   3  

Page 4: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

2D  Graphics  with  SurfaceView  Exercise  

•  Off  to  the  next  exercise:  – Using  SurfaceView  instead  of  a  View  – Background  thread  

COMP  107x  (Muppala)   Mul$media  in  Android   4  

Page 5: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

The  MediaPlayer  Class  

Page 6: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Media  Playback  and  Recording  

•  Standard  method  to  manipulate  audio/video:  – Media  playback  supported  through  the  MediaPlayer  class  

– Media  recording  supported  through  the  MediaRecorder  class  

– Creates  its  own  thread  for  processing  – Requires  audio  as  file  or  stream  based  data  

COMP  107x  (Muppala)   Mul$media  in  Android   6  

Page 7: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

MediaPlayer  Methods  •  Crea$ng  a  media  player:  

MediaPlayer  player  =  new  MediaPlayer();  •  Specifying  the  source  of  the  media:  

–  If  file  in  the  resource  directory  raw:  player  =  MediaPlayer.create(context,  R.raw.music_file);  

–  If  file  or  stream:  player.setDataSource(path);  player.prepare();  or  player.prepareAsync();  •  Use  prepareAsync()  when  media  needs  to  be  prepared  or  buffered  offline  •  Will  return  when  media  is  ready  •  Requires  the  implementa$on  of  OnPreparedListener()  interface:  

onPrepared()  method  needs  to  be  implemented  

COMP  107x  (Muppala)   Mul$media  in  Android   7  

Page 8: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

MediaPlayer  Methods  

•  Start  playback  player.start();  

•  Pause  playback  player.pause();  

•  Stop  playback  player.stop();  player.release();  

COMP  107x  (Muppala)   Mul$media  in  Android   8  

Page 9: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

MediaPlayer  •  Rich  API  designed  for  long  playing  media  streams,  such  as  voice  

audio  recordings,  music  and  videos  –  seeking  opera$ons  supported  –  Source  buffering  

•  Heavyweight  resource-­‐wise    •  Slow  to  ini$alize  •  Not  suitable  for  low-­‐latency  scenarios  like  playing  short  audio  

samples  for  sound  effects,  such  as  in  games.  •  Designed  for  situa$ons  with  no  more  than  one  or  two  MediaPlayers  

working  at  the  same  $me  

COMP  107x  (Muppala)   Mul$media  in  Android   9  

Page 10: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Shoo$ng  Game  with  Sounds  Exercise  

•  Off  to  the  next  exercise  – Adding  explosion  sound  when  the  AndroidGuy  is  hit  by  a  bullet  

– Using  SoundPool  class  

COMP  107x  (Muppala)   Mul$media  in  Android   10  

Page 11: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Genera$ng  Sounds  using  SoundPool  

Page 12: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

SoundPool  Class  •  The  SoundPool  class  manages  and  plays  audio  resources  for  applica$ons.  •  A  SoundPool  is  a  collec$on  of  samples  that  can  be  loaded  into  memory  

from  a  resource  inside  the  APK  or  from  a  file  in  the  file  system  •  The  SoundPool  library  uses  the  MediaPlayer  service  to  decode  the  audio  

into  a  raw  16-­‐bit  PCM  mono  or  stereo  stream  •  This  allows  applica$ons  to  ship  with  compressed  streams  without  having  

to  suffer  the  CPU  load  and  latency  of  decompressing  during  playback  •  Typical  usage  scenario  includes  games  with  sound  where  several  sounds  

are  used  in  a  level  and  may  have  to  be  played  with  overlap  some$mes  

COMP  107x  (Muppala)   Mul$media  in  Android   12  

Page 13: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

SoundPool  Class  Features  •  Sekng  the  maximum  number  of  sounds  to  play  at  the  

same  $me  •  Priori$zing  the  sounds  so  that  the  low-­‐priority  ones  will  be  

dropped  when  the  maximum  threshold  is  reached  •  Pausing  and  stopping  sounds  before  they  finish  playing  •  Looping  sounds  •  Changing  the  playback  rate  (effec$vely,  the  pitch  of  each  

sound)  •  Sekng  stereo  volume  (separate  for  lel  and  right  channels)  

COMP  107x  (Muppala)   Mul$media  in  Android   13  

Page 14: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Android  Audio  Comparison  

Audio  Requirements   Audio  Class  Choice  

Require  low  latency,  such  as  in  games  or  sound  effects   SoundPool  

Need  to  play  video  that  has  an  audio  track   MediaPlayer  

Play  a  set  of  short  sounds  many  $mes   SoundPool  

Stream  audio  from  an  external  source,  e.g.  HTTP  or  TCP  stream   MediaPlayer  

Play  background  music   MediaPlayer  

COMP  107x  (Muppala)   Mul$media  in  Android   14  

Page 15: Mul$mediaSupportin*Android* · PDF fileMul$mediaSupport • MediaPlayer*class* – Long*sustained*playing*of*audio/video* – Primary*APIfor*sound*and*video* • SoundPool*class*

Shoo$ng  Game  with  More  Sounds  

•  Assignment:  – Add  more  sounds  to  the  Shoo$ng  Game  

•  Android  Guy  falling  off  the  screen  •  Bullets  going  off  the  screen  at  the  top  

COMP  107x  (Muppala)   Mul$media  in  Android   15