Android移动应用开发基础教程第6章.pptx





《Android移动应用开发基础教程第6章.pptx》由会员分享,可在线阅读,更多相关《Android移动应用开发基础教程第6章.pptx(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Android移动应用开发基础教程讲授:XXXXX第6章 多媒体本章主要内容:播放多媒体文件记录声音使用摄像头和相册6.1 播放多媒体文件 手机已经成为日常人们听音乐和看电影的工具。Android提供了完整的API用于播放多媒体文件,使开发人员可以轻松实现简易的音频和视频播放APP。本节主要内容:1.使用SoundPool播放音效2.使用MediaPlay播放音频3.使用MediaPlayer播放视频6.1.1 使用SoundPool播放音效SoundPool类可用于管理和播放应用中的音频资源。这些音频资源即可实现包含在应用程序中,也可存放于存储器文件中。通常,SoundPool类只用于播放较
2、短的音频,比如游戏中的各种音效。要使用SoundPool播放音频,首先需创建SoundPool对象。例如:(实例项目:源代码06UseSoundPool)if(Build.VERSION.SDK_INT=21)SoundPool.Builder builder=new SoundPool.Builder();builder.setMaxStreams(2);/设置可加载的音频数量 /AudioAttributes是一个封装音频各种属性的方法 AudioAttributes.Builder attrBuilder=new AudioAttributes.Builder();attrBuilder
3、.setLegacyStreamType(AudioManager.STREAM_MUSIC);/预设音频类型 builder.setAudioAttributes(attrBuilder.build();/设置音频类型 sp=builder.build();/创建SoundPool对象else/当系统的SDK版本小于21时 sp=new SoundPool(2,AudioManager.STREAM_SYSTEM,0);在API 21(Android 5.0))之后的版本中,SoundPool()构造方法已经过时了,需用SoundPool.Builder来创建SoundPool对象。Soun
4、dPool.Builder对象可执行setMaxStreams()方法设置SoundPool对象中可加载的最大音频数量。setAudioAttributes()方法则用于设置音频的类型。SoundPool()构造方法的第一个参数为可加载音频最大数量,第二个参数为音频类型,第三个参数为声音品质(目前无效,用0表示默认值)。获得SoundPool对象后,首先应调用load()方法加载音频资源。load()方法基本格式如下:int load(Context context,int resId,int priority)int load(String path,int priority)int loa
5、d(AssetFileDescriptor afd,int priority)int load(FileDescriptor fd,long offset,long length,int priority)其中,context为当前应用上下文。resId事先存放到应用的res/raw文件中的音频文件的资源ID。priority为优先级,目前无效,1用于与未来版本兼容。path为存储器中音频文件的路径。AssetFileDescriptor为音频asset文件的描述符。在将多个音频存放在一个二进制文件中时,FileDescriptor为该音频文件的描述符,offset指定加载的因为在文件中的开始
6、位置,length指定音频长度。load()方法返回值为加载的音频的ID,在调用其他方法播放、暂停或其他操作处理音频时,用音频ID作为参数。调用load()方法准备好音频资源后,可调用play()方法来播放音频。play()方法基本格式如下:play(int soundID,float leftVolume,float rightVolume,int priority,int loop,float rate)其中soundID为load()方法加载音频资源时返回的ID。leftVolume和rightVolume分别为左声道音量和右声道音量,取值范围0.01.0。priority为优先级,0为
7、最低级。loop为重复次数,0表示不重复。Rate为播放速率,取值范围0.52.0,1.0为正常播放速度。例如,下面的语句播放soundId1对应的音频。sp.play(soundId1,1,1,1,0,1);其他SoundPool常用方法如下。pause(int streamID):暂停播放。release():释放SoundPool中加载的音频资源。resume(int streamID):继续播放暂停的音频。setLoop(int streamID,int loop):设置重复播放次数。setVolume(int streamID,float leftVolume,float right
8、Volume):设置音量。stop(int streamID):停止播放。unload(int soundID):卸载SoundPool中的音频资源。6.1.2 使用MediaPlay播放音频MediaPlay类提供了音频和视频播放功能,本节先学习用其播放音频。MediaPlay类比SoundPool类提供了更多的音频控制功能,支持更多的音频格式。在使用MediaPlay对象处理音频时,音频可处于多种状态,如图6-1所示(该图引用自:http:/ 使用MediaPlayer播放视频MediaPlayer即可用于播放音频,也可用于播放视频,在用法上没有多大区别。只是在播放视频时,应使用Surfa
9、ceView控件作为视频的显示容器。下面通过具体的例子说明如何使用MediaPlayer播放视频(上一小节中的UseMediaPlay实例略加修改即可用于播放视频)。(实例项目:源代码06UseMediaPlay2)6.2 记录声音MediaRecorder类提供了音频采集功能,使开发者可使用设备的麦克风记录声音。要在应用中实现音频采集功能,首先需要在应用程序的清单文件AndroidManifest.xml添加RECORD_AUDIO权限申请使用麦克风。例如:Android系统认为使用RECORD_AUDIO权限记录用户声音隐私,是一种“危险”行为。在从Android 6.0(API 23)开
10、始,需要在应用程序运行时动态向用户申请RECORD_AUDIO权限。用户授权后,应用可记录授权,不再重复询问。通常,调用ActivityCompat.requestPermissions()方法来动态申请权限。修改activity_main.xml主活动布局 MainActivity.java,为各个按钮添加单击事件监听器,实现音频的采集和播放控制protected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);m
11、FileName=getExternalCacheDir().getAbsolutePath();mFileName+=/audiorecord.3gp;/检查应用是否已经获得授权 if(ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO)!=PackageManager.PERMISSION_GRANTED)/如果没有权限,动态申请授权 ActivityCompat.requestPermissions(this,new StringManifest.permission.RECORD_AUDIO,1
12、);else initMediaRecorder();Button btStartRecord=(Button)findViewById(R.id.btStartRecord);btStartRecord.setOnClickListener(new View.OnClickListener()Override public void onClick(View v)/开始录音 try mediaRecorder.prepare();/准备MediaRecorder catch(IOException e)Log.e(LOG_TAG,准备MediaRecorder出错啦!);mediaRecor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 移动 应用 开发 基础教程

限制150内