多媒体应用(声音)_第1页
多媒体应用(声音)_第2页
多媒体应用(声音)_第3页
多媒体应用(声音)_第4页
多媒体应用(声音)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章多媒体声音、培训目标、使用MediaPlayer播放音频使用SoundPool播放音频使用MediaRecorder录制音频、Android多媒体技术、Android是典型的音频编码、解码机制、支持的音频格式包括MP3、wav和33此类位于android.media包中。使用MediaPlayer播放音频时,程序控制的MediaPlayer对象的音频装载完成后,程序可以调用MediaPlayer的start()、pause()、stop()方法来执行播放控制。为了使MediaPlayer装载指定的音频文件,MediaPlayer提供了两种简单的静态方法:也就是说,static Medi

2、aPlayer create(uri):在指定的uri中装载音频文件,并返回新创建的media player对象。static MediaPlayer create(int resid):从与resid资源id对应的资源文件挂载音频文件,并返回新创建的media player对象。MediaPlayer可以播放的MP3音频资源可以是apk文件中包含的MP3、SD卡上存储的MP3、网络上的MP3文件等,使用MediaPlayer播放音频,MediaPlayer播放apk中包含的MP3,回放该类型的MP3文件需要两个步骤。步骤1:调用MediaPlayer的create(Context conte

3、xt,int resid)方法以加载指定的资源文件。步骤2:通过调用MediaPlayer的start()stop()pause()等方法控制播放。public class media player 1 activity extends activity public void on create(bundle savedinstancesestate)super . on create(saveSetContentView(r . layout . main);media player player=media player . create(this,r . raw . Qiu yuan)

4、;player . start();此方法通常需要三个步骤才能将音频资源文件放在res/raw目录中,使用MediaPlayer播放音频,MediaPlayer播放存储在SD卡上的MP3,从而播放该类型的MP3文件。步骤1:声明Uri对象,传递SD卡上MP3文件的绝对路径参数步骤2:调用MediaPlayer的create(Context context,Uri uri)方法,通过Uri加载指定的资源文件。步骤3:通过调用MediaPlayer的start()、stop()、pause()等来控制播放。string path=/mnt/SD card/Qiu yuan . MP3;uri ur

5、i=uri . parse(path);Player=media player.create (this,uri);player . start();此方法通常将音频资源文件导入SD目录,使用MediaPlayer播放音频,MediaPlayer循环存储在SD卡上的MP3。如果程序需要使用MediaPlayer重复播放步骤,请调用第1步:创建MediaPlayer对象第2步:MediaPlayer的setDataSource(path)方法以装载指定的音频文件。步骤3:调用MediaPlayer的prepare()方法准备音频,以便实际装载音频文件。这是因为在运行SetDataSource(p

6、ath)方法后,实际上没有装载音频。步骤4:通过调用MediaPlayer的start()、stop()、pause()等来控制播放。media player player=new media player();string path=/mnt/SD card/Qiu yuan . MP3;player . setdata source(path);player . prepare();player . start();使用MediaPlayer播放音频,以及MediaPlayer播放该类型的MP3文件需要三个步骤。步骤1:声明Uri对象,将网络中的MP3文件路径作为参数传递步骤2:调用Med

7、iaPlayer的create(Context context,Uri uri)方法,以加载通过Uri指定的资源文件。步骤3:通过调用MediaPlayer的start()、stop()、pause()等来控制播放。,string path= http:/Baidu/aa . MP3;uri uri=uri . parse(path);Player=media player.create (this,uri);player . start();使用MediaPlayer播放音频,专用button btn1,btn2,btn3,btn4Protected media player player

8、1,player 2;public void on create(bundle savedinstancestate)super . on create(savedinstancesestate);SetContentView(r . layout . main);player 1=media player . create(this,r . raw . Qiu yuan);player 2=new media player();Bt n1=(button)findvewbyid(r . id . Bt n1);Btn1 .seton click listner(listener);BTN 2

9、=(button)findvewbyid(r . id . BTN 2);Btn2 .seton click listner(listener);BTN 3=(button)findvewbyid(r . id . BTN 3);Btn3 .seton click listner(listener);BTN 4=(button)findvewbyid(r . id . BTN 4);Btn 4 .seton click listner(listener);private onclick listener=new onclick listener()public void onclick(vie

10、w v)button BTN=(button)v;switch(BTN . getid()case r . id . BTN 13360 player 1 . start();Breakcase r . id . BTN 2330 string path=/mnt/SD card/friend . MP3;try player 2 . setdata source(path);player 2 . prepare();catch(illegalargumentumptione)e . print stack trace();catch(illegalstate exception e)e .

11、print stack trace();catch(io exception e)e . printstacktrace();player 2 . start();Breakcase r . id . BTN : player 1 . stop();Breakcase r . id . BTN 43360 player 1 . pause();Break如果需要使用MediaPlayer播放音频、使用SoundPool播放音频以及在应用程序中播放短而密集的音频,则不适合使用MediaPlayer。MediaPlayer具有以下缺点:(1)资源利用率高,延迟时间长。(2)不支持同时播放多个音频,

12、要使用SoundPool播放音频,以及使用SoundPool播放音频,请调用使用SoundPool的配置方法来创建SoundPool对象。(2)指定资源,最好使用SoundPool对象的load()方法从文件加载声音,使用HashMap管理加载的声音。(3)调用play()来播放声音的Android提供了SoundPool播放音频,该音频使用声音池的概念管理多个短音频以及MediaPlayer播放音频。与Mediaplayer相比,SoundPool的优点是CPU资源利用率低,响应延迟小。SoundPool还支持直接设置声音质量、音量和播放速率等参数。Android通常使用SoundPool实

13、现游戏声音。SoundPool更适合在播放、效果声音、按钮声音等游戏中使用,因为sound pool具有大量异步线程,使用的资源更少,可以同时合成多个音频。使用SoundPool加载和播放多个音频时,建议使用具有相同参数的声音文件(如位速率、通道、采样率等),并使用OGG格式。否则,某些型号的手机可能会产生噪音,并重复播放等问题。使用SoundPool播放声音,public void on create(bundle savedinstancesestate)super . on create(savedinstancesestate);SetContentView(r . layout .

14、main);bomb=(button)findvewbyid(r . id . bomb);shot=(button)findvewbyid(r . id . shot);arrow=(button)findvewbyid(r . id . arrow);/设置最多可以包含10个音频流,音频质量为5 soundpool=new soundpool (10,audiomanager.stream _ system,5)。/load方法加载指定的音频文件,并返回加载的音频ID。此处使用HashMap管理这些音频流soundmap.put (1,soundpool.load (this,r.raw.

15、bomb,1)sound map . put(2,soundpool.load)Soundmap.put (3,soundpool.load (this,r.raw.arrow,1);Bomb。setonclicklistner(this);Shot .setonclicklistner(this);Arrow .setonclicklistner(this);使用SoundPool播放声音,public void onclick(view source)/switch(source . getid()case r . id . bomb 3360 sound pool .Breakcase

16、r . id . shot : sound pool . play(sound map . get(2),1,1,0,0,1);Breakcase r . id . arrow : sound pool . play(sound map . get(3),1,1,0,0,1);Break您可以使用MediaRecorder录制音频,并在当前手机上使用音频录制功能。当然需要硬件支持,手机通常提供麦克风硬件,因此可以在Android系统中用于录制音频。要在Android应用程序中录制音频,Android提供了android.media包中的MediaRecorder类。录制音讯的重要步骤:建立Me

17、diaRecorder物件呼叫MediaRecorder物件的setAudioSource()方法,以设定声音的来源。通常为MediaRecorder。AudioSource.MIC参数指定在Mike wind中录制的声音。调用MediaRecorder对象的setOutputFormat()方法设置录制的音频文件的格式(例如media recorder . output format . mpeg _ 4)。呼叫MediaRecorder物件的setAudioEncoder()方法,设定录制声音的编码格式,例如media recorder . audio encoder . default。

18、这些参数控制录制的声音品质、档案大小等。呼叫MediaRecorder物件的setOutputFile(String path)方法,设定录制档案的储存位置。使用MediaRecorder录制音频。这两个步骤不能反转位置。录制音讯的重要步骤是呼叫MediaRecorder物件的prepare()方法,准备录制呼叫MediaRecorder物件的start()方法。调用MediaRecorder对象的stop()方法停止录制,调用release()方法释放资源,然后使用MediaRecorder录制音频。案例,/SD卡上的if(!environment . getexternalstoragestate()。equals(Android . OS . environment . media _ mounted)toast . make tex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论