android视频播放器实训报告.docx
- 文档编号:26223579
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:18
- 大小:622.92KB
android视频播放器实训报告.docx
《android视频播放器实训报告.docx》由会员分享,可在线阅读,更多相关《android视频播放器实训报告.docx(18页珍藏版)》请在冰豆网上搜索。
android视频播放器实训报告
实训报告书
实训名称:
Android视频播放器
系(部):
专业班级:
学生姓名:
学号:
指导教师:
完成日期:
实训课题
Android视频播放器
实训人姓名
同组人员
实训日期
实训成绩
指导教师评语
指导教师签名:
______________
_______年____月____日
android视频播放器系统的设计与实现
1实训目的
本学期我们学习了JAVA课程和Android应用程序开发课程。
而Android应用程序是利用Java语言开发的,本次实训能够对我们所学的Java语言和Android应用程序开发的一次综合实践,使我们能够更好的掌握Java语言在实际开发中的应用,同时也为了使我们能够更好的掌握和学习Android应用程序开发,对所学的知识进一步牢固.培养运用所学知识解决实际课程的能力,培养开发Android应用程序的思想和方法。
同时在实训过程中也能不断学习新的知识。
2Android视频播放器系统的分析与设计
2.1系统功能描述
该系统是一个能够在Android平台下运行的视频播放器.能够实现一下功能:
1)播放功能:
能够实现mp4、avi格式文件的播放。
2)暂停功能:
点击暂停按钮时能够暂停播放视频,再次点击暂停按钮时能够继续播放。
3)重播功能:
点击重播按钮时能够从头开始播放视频。
4)停止功能:
点击停止按钮时能够停止播放视频,再点击播放按钮时能够从头开始播放。
5)快进功能:
点击快进按钮时能够向前跳跃5秒播放。
6)后退功能:
点击回退按钮时能够向后跳跃5秒播放。
7)显示进度条:
能够显示文件播放进度。
拖动进度条能够实现视频快进、快退功能。
8)退出功能:
点击退出按钮时能够正常退出程序。
2。
2系统模块设计
1、输入文件模块:
在该模块中采用EditText控件来实现。
2、播放视频模块:
该模块是用MediaPlayer类通过surfaceView来实现。
3、暂停播放模块:
该模块是用MediaPlayer。
push()方法来实现。
4、重播模块:
该模块通过MediaPlayer.reset()方法来实现。
5、停止播放模块:
该模块通过MediaPlayer.stop()方法实现。
6、快进模块:
该模块通过MediaPlayer.seekTo()方法来实现.
7、后退模块:
该模块通过MediaPlayer.seekTo()方法来实现.
8、退出模块:
该模块通过调用finish()方法来实现,并释放资源。
3主要代码清单
3。
1main。
xml布局文件
xmlversion="1。
0”encoding=”utf—8”?
〉
android="http: //schemas.android。 com/apk/res/android” android: layout_width=”fill_parent” android: layout_height=”fill_parent” android: orientation="vertical”> android: id="@+id/textview" android: layout_width="fill_parent” android: layout_height=”wrap_content” android: text=”@string/filename” /〉 android: id="@+id/filename" android: layout_width=”fill_parent" android: layout_height="wrap_content" android: text="yueshen。 mp4” /> 该部分是在主界面上放置一个EditText看控件,在本程序中用于接收输入的文件名。 android: id=”@+id/surfaceView" android: layout_width=”fill_parent” android: layout_height="300dp" /〉 SurfaceView控件是用于播放视频的控件 android: id=”@+id/move” android: layout_width=”fill_parent" android: layout_height="wrap_content" /〉 进度条控件 android: layout_width=”fill_parent” android: layout_height="wrap_content" android: orientation="horizontal"> 〈ImageButton android: id=”@+id/play" android: layout_width="wrap_content" android: layout_height="wrap_content" android: src=”@drawable/play" android: layout_weight="1" />播放按钮 〈ImageButton android: id=”@+id/suspend” android: layout_width="wrap_content” android: layout_height="wrap_content” android: src="@drawable/suspend” android: layout_weight="1” />暂停按钮 android: id="@+id/reset" android: layout_width=”wrap_content" android: layout_height=”wrap_content" android: src="@drawable/reset" android: layout_weight=”1” />复位按钮 android: id="@+id/stop” android: layout_width="wrap_content" android: layout_height=”wrap_content” android: src=”@drawable/stop" android: layout_weight="1" />停止按钮 〈ImageButton android: id="@+id/back" android: layout_width=”wrap_content” android: layout_height="wrap_content" android: src=”@drawable/back” android: layout_weight="1" /〉后退按钮 〈ImageButton android: id="@+id/quick" android: layout_width=”wrap_content” android: layout_height=”wrap_content" android: src=”@drawable/quick" android: layout_weight=”1" /〉快进按钮 〈ImageButton android: id=”@+id/exit” android: layout_width="wrap_content” android: layout_height="wrap_content” android: src=”@drawable/exit" android: layout_weight=”1" /〉退出按钮 3.2Activity_main。 java文件 1。 seekbar拖动控件监听器 seekbar。 setOnSeekBarChangeListener(newOnSeekBarChangeListener(){ @Override publicvoidonStopTrackingTouch(SeekBararg0){ //TODOAuto-generatedmethodstub } @Override publicvoidonStartTrackingTouch(SeekBararg0){ //TODOAuto-generatedmethodstub } @Override publicvoidonProgressChanged(SeekBarseekBar,intprogcess,booleanfromUser){ //TODOAuto-generatedmethodstub intprocess=seekBar。 getProgress(); intmax=seekBar。 getMax(); if(mediaPlayer! =null){ mediaPlayer.seekTo(mediaPlayer。 getDuration()*process/max); } } }); } 2.播放、停止、暂停、重播、快进、后退、退出按钮监听器 privatefinalclassButtonClickListenerimplementsView。 OnClickListener { @Override publicvoidonClick(Viewv){ //TODOAuto—generatedmethodstub if(! Environment。 getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Toast.makeText(ZhaoActivity。 this,R.string。 sdcarderror,1)。 show(); return; } filename=filenameText.getText()。 toString(); try{ switch(v.getId()) { caseR。 id。 play: play(); break; caseR.id。 suspend: if(mediaPlayer.isPlaying()) { mediaPlayer.pause(); } else { mediaPlayer。 start(); } break; caseR.id。 reset: if(mediaPlayer.isPlaying()) { mediaPlayer.seekTo(0); } else { play(); } break; caseR。 id。 quick: if(mediaPlayer。 isPlaying()) { inti=mediaPlayer。 getCurrentPosition()+5000; mediaPlayer.seekTo(i); } break; caseR.id。 back: if(mediaPlayer。 isPlaying()) { inti=mediaPlayer.getCurrentPosition()—5000; mediaPlayer。 seekTo(i); } break; caseR.id。 stop: if(mediaPlayer。 isPlaying()) { mediaPlayer.stop(); } break; caseR。 id。 exit: mediaPlayer。 release();//释放资源 finish(); break; } }catch(Exceptione){ //TODOAuto—generatedcatchblock e。 printStackTrace(); Log.e(TAG,e。 toString()); } } } 3.播放功能方法 privatevoidplay()throwsIOException{ FilevideoFile=newFile(Environment。 getExternalStorageDirectory(),filename); mediaPlayer。 reset();//重置为初始状态 mediaPlayer.setAudioStreamType(AudioManager。 STREAM_MUSIC); mediaPlayer。 setDisplay(surfaceView。 getHolder()); if(! videoFile。 exists()) { Toast.makeText(ZhaoActivity.this,R。 string.fileerror,1)。 show(); return; } mediaPlayer。 setDataSource(videoFile。 getAbsolutePath()); mediaPlayer.prepare();//缓冲 mediaPlayer.start();//播放 } } 4程序运行与测试 4.1在模拟器中运行结果 图4.1。 1文件不存在时报错信息 图4。 1。 2文件播放成功 4.2在手机中运行结果 图4.2.1程序安装成功 图4。 2。 2要播放的视频不存在 图4.2。 3播放成功 5实训总结 两个星期的《android应用程序开发实训》已经结束了,同时也使我们对我们所学的Java和android应用程序开发的知识有了更深的认识和理解,同时也锻炼了我们把所学的知识运用到实际开发中的能力,在这个过程中也使我深深感受到了自己所掌握的知识是远远不够的。 在刚开始的时候我并没有详细的做一个模块实际图,只是把想当然的几个功能加了进来,只是简单想实现播放器的播放、重播、暂停、停止功能,而忘了考虑快进、后退和进度条的问题。 现将在整个过程中遇到的问题总结如下: 1、主界面设计问题 在设计主界面的之前我参考了一些常用的android视频播放的主界面,只设置了播放、停止、暂停、重播、退出的按钮,然后再老师的指导下又加进了快进和后退按钮,在最后程序成型之后又发现没有显示播放进度的按钮.在添加上播放、停止、暂停、重播、退出的ImageButton之后,在添加播放界面时又遇到了问题不知道用什么控件去实现播放功能,后来通过学习达内的教学视频采用了surfaceview控件。 而播放进度条通过网上查资料决定采用SeekBar控件来实现。 2、视频播放器程序设计问题 在设计完主界面之后通过学习达内的教学视频采用MediaPlayer类来控制播放,然而在写完程序之后发现没有退出功能,在添加了退出功能之后,程序能够退出,但新的问题出现了,程序退出之后但声音还在继续播放,这是由于资源没有被释放的原因,后添加了mediaPlayer.release()方法解决了此问题 3、进度条拖动问题 在添加了SeekBar之后虽然能拖动但并不能实现视频文件的快进。 在查找资料之后,发现时由于SeekBar监听器方法出了问题。 经修改之后问题得以解决. 4、程序改善 虽然程序已经完成,但功能好不够完善,首先进度条不能自动更新显示动态,只能实现拖动快进、后退的功能。 没有添加音量控制,不能实现文件扫描,只能手动输入文件。 这些问题我会在以后的学习中去解决。 实训已经结束了,在整个过程中是我感触最深的是自己掌握的知识在实际应用开发中,还远远不够,虽然学习了达内的视频,但最初并没有真正理解代码的含义,只知其然而不知其所以然。 整个过程我最大的收获就是对MediaPlayer类有了更深的认识.在今后的学习过程中我会加倍努力积累知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 视频 播放 器实训 报告