版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Lesson3
媒体播放器第二阶段课堂回顾如何让控件动起来?自定义控件的原理自定义属性的两种方法实现音量控件长沙华瑞IT培训学校多媒体简介多媒体是计算机和视频技术的结合,实际上它是两个媒体:声音和图像音频和视频的播放,我们都会用到MediaPlayer这个类进行播放
长沙华瑞IT培训学校从源文件中播放1,在项目的res/raw目录下,放置一个android支持的多媒体文件,如MP3,会在R文件中生成对应的索引2,通过MediaPlayer.create(this,R.id.et_mp3)创建一个文件3,使用start播放长沙华瑞IT培训学校核心代码mediaplayer=MediaPlayer.create(this,R.raw.music02);
try{ mediaplayer.start(); }catch(IllegalStateExceptione){ e.printStackTrace(); }注:将muisc02.mp3文件放入res/raw的文件夹中长沙华瑞IT培训学校从文件系统中播放1,实例化一个MediaPlayer2,MediaPlayer.setData方法调用(输入文件所在路径)3,调用MediaPlayer.prepare进行准备4,调用start进行播放长沙华瑞IT培训学校核心代码privatevoidcreateMusicFromPath(Stringpath) { mediaplayer=newMediaPlayer(); try{ mediaplayer.setDataSource(path); mediaplayer.prepare(); mediaplayer.start(); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }注:将音频文件放入在手机的sdcard,输入路径即可播放长沙华瑞IT培训学校播放网络音乐1,获取音乐链接地址A,通过地址创建Uri,通过MediaPlayer.create(this,uri)创建,获取player对象B,new出MediaPlayer对象,通过MediaPlayer.setData(webPath)创建player对象,然后调用prepare();2,调用start方法进行播放长沙华瑞IT培训学校音乐播放器长沙华瑞IT培训学校多媒体状态长沙华瑞IT培训学校使用SeekBar实现控制播放位置功能1,在视图xml中拖入SeekBar控件2,设置seekBar.setMax(mediaPlayer.getDuration())为媒体的最大长度3,实现控件的OnSeekBarChangeListener接口4,实现onProgressChanged(//当进度状态发生变化时候SeekBarseekBar,intprogress,//当前的进度booleanfromUser)//是否由用户操作导致publicvoidonProgressChanged(SeekBararg0,intprogress,booleanisFromUser){
if(isFromUser)
{
mediaPlayer.seekTo(progress);
}}长沙华瑞IT培训学校实现进度条SeekBar自动移动效果//1,创建一个线程Runnablerun=newRunnable(){ publicvoidrun(){ //TODOAuto-generatedmethodstub //获取当前播放音乐的位置 if(mediaPlayer!=null) { intcurrent=mediaPlayer.getCurrentPosition(); progressBar.setProgress(current); if(mediaPlayer.isPlaying()) { progressHandler.postDelayed(run,100); } } }};//2,创建一个handler用于控制线程HandlerprogressHandler=newHandler();progressHandler.post(run);//启动线程progressHandler.postDelayed(run,100);//延时启动线程progressHandler.removeCallbacks(run);//删除指定的Runnable对象,使线程对象停止运行。长沙华瑞IT培训学校停止,暂停,重播功能实现A,停止1,首先判断是否是playing调用player的stop方法2,同时要将还没有执行的线程从handler中移除progressHandler.removeCallbacks(run);3,将进度条的seekbar的进度设置为0B,暂停1,利用一个boolean变量判断是否是pause状态2,判断playing,调用play的pause方法,并且removeCallbacks3,如果是pause状态,则执行start,并且执行progressHandler.post方法C,重播1,mediaPlayer.seekTo(0),2,progressBar.setProgress(0);长沙华瑞IT培训学校实现进度条SeekBar缓存条效果//设置缓存更新事件mediaPlayer.setOnBufferingUpdateListener(newOnBufferingUpdateListener(){//实现更新方法
publicvoidonBufferingUpdate(MediaPlayerarg0,intarg1){
//在每次更新之后,设置缓存条的进度 progressBar.setSecondaryProgress(arg1*progressBar.getMax()/100);} });长沙华瑞IT培训学校MediaPlayer的状态A,停止1,首先判断是否是playing调用player的stop方法2,同时要将还没有执行的线程从handler中移除progressHandler.removeCallbacks(run);3,将进度条的seekbar的进度设置为0B,暂停1,利用一个boolean变量判断是否是pause状态2,判断playing,调用play的pause方法,并且removeCallbacks3,如果是pause状态,则执行start,并且执行progressHandler.post方法C,重播1,mediaPlayer.seekTo(0),2,progressBar.setProgress(0);长沙华瑞IT培训学校核心代码mediaPlayer.reset();//重置为idle状态mediaPlayer.setDataSource(file.getAbsolutePath());//设置播放的文件mediaPlayer.prepare();//缓冲mediaPlayer.setOnPreparedListener(newMyPreparedListener());//设置缓冲完成监听mediaPlayer.pause();//暂停mediaPlayer.start();//播放音乐mediaPlayer.stop();();//停止mediaPlayer.seekTo(progress);//设置播放进度mediaPlayer.release();//释放关联的资源progressHandler.postDelayed(run,100);//定时调用Runnable对象progressHandler.post(run);//将Runnable对象发送到消息队列中progressHandler.removeCallbacks(run);//将run从消息队列中移除长沙华瑞IT培训学校视频播放器SurfaceView控件长沙华瑞IT培训学校SurfaceView控件SurfaceView可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器SurfaceHolder用来操纵surface,处理它在Canvas上画的效果和动画,控制表面,大小,像素等长沙华瑞IT培训学校核心代码SurfaceHoldersurfaceHolder=surfaceView.getHolder();//surfaceView的控制对象surfaceHolder.setFixedSize(176,144);//设置分辨率surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//不使用surfaceview自身的缓冲机制,把得到的数据直接输出surfaceHolder.setKeepScreenOn(true);//保持屏幕的亮度//在播放前设置显示画面mediaPlayer.setDisplay(surfaceView.getHolder());长沙华瑞IT培训学校VideoView的使用//获取VideoView对象videoView=(VideoView)this.findViewById(R.id.videoView);//创建播放视频的URIUriuri=Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()+"/video.mp4");//设置URIvideoView.setVideoURI(uri);//uri//设置多媒体控制器videoView.setMediaController(newMediaController(this));videoView.start();长沙华瑞IT培训学校SoundPool
android中可以用mediaplayer播放音乐,使用soundpool可以播一些短的反应速度要求高的声音,比如点击时候的音效//1,创建SoundPoolsoundPool=newSoundPool(3,//同时播放的流的最大数量AudioManager.STREAM_MUSIC,//流的类型,一般为STREAM_MUSIC0);//采样率转化质量,当前无效果,使用0作为默认值//2,载入音效intid=load(Contextcontext,intresId,intpriority)//从APK资源载入
//3,通过id播放音效soundPool.play(soundM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 癌症相关成纤维细胞调控机制
- 鲍尔环填料课程设计
- ice 系列合同范本
- 防雷审查合同范本
- 航空市场竞争态势
- 2024年度版权许可使用合同的许可范围确定
- 货物温度控制技术
- 机构投资者行为分析
- 发包工程安全管理合同范本
- 《应用结直肠癌组织探讨W-B、IHC及QDB技术在蛋白相关研究中的价值》
- 消防工程中常见质量问题及预防措施
- 12月ACCAF9考试真题答案(优推内容)
- led背光源BLU学习资料ppt课件
- 乌兰察布城规划管理技术规定
- 初中人教版七年级上册音乐1.5学吹竖笛(29张)ppt课件
- 飞行模拟器视景显示系统的设计
- 基于NFC移动支付技术在地铁自动售检票系统中运用分析
- 肺炎PPTPPT课件
- 新生儿访视技术规范
- 浅谈如何在生物教学中渗透健康教育
- 关于在我县建设1000亩前胡中药材基地的报告 (4)
评论
0/150
提交评论