android视频播放器源码

上传人:无*** 文档编号:120153355 上传时间:2022-07-16 格式:DOC 页数:19 大小:487KB
收藏 版权申诉 举报 下载
android视频播放器源码_第1页
第1页 / 共19页
android视频播放器源码_第2页
第2页 / 共19页
android视频播放器源码_第3页
第3页 / 共19页
资源描述:

《android视频播放器源码》由会员分享,可在线阅读,更多相关《android视频播放器源码(19页珍藏版)》请在装配图网上搜索。

1、本文讲的是“android视频播放器,并附有播放器源代码1开发环境:eclipse3.6ADT-0.9.7AVD1.62程序运行效果A启动AVD(虚拟设备)在应用程序界面主界面,我们可以看到艾文播放器B.点击打开后,会播放默认的一个coco的广告wwwJgpZcDni00:07C点击标题栏的按钮可以打开文件浏览器coco3gpL22MBD.点击视频文件,会提示使用的播放器E.选择艾文视频播放器打开后,按ctrl+f12,切换到横屏,发现视频并没有中断,而是继续播放3源码分析A. 图片都是网上找的,还有就是自己收藏的地方翻出来的,不多讲了。B. 布局文件main.xml:期中包含一个videov

2、iew,用于播放视频图像titlebar.xml:主视图的标题栏布局,主要用于添加一个菜单按钮,点击后打开文件浏览器myfile.xml:为文件浏览器布局1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.CVideoPlay.javaviewplaincopytoclipboardprint?packagecom.bestaone;importandroid.app.Activity;importandroid.content.Intent;.Uri;importandroid.os.Bundle;impo

3、rtandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.Window;importandroid.view.WindowManager;importandroid.widget.ImageButton;importandroid.widget.MediaController;importandroid.widget.TextView;importandroid.widget.VideoView;publicclassVideoPlayextends

4、ActivityprivateVideoViewvideoView;privatestaticintindex=0;OverridepublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);setContentView(R.layout.main);27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.

5、52.53.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);/设置标题栏的布局getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar);/这个空间暂时没用finalTextViewtitleTV=(TextView)findViewById(R.id.title);titleTV.setText();ImageButtontitleButto

6、n=(ImageButton)findViewById(R.id.titleButton);/为按钮添加鼠标点击事件titleButton.setOnClickListener(newOnClickListener()OverridepublicvoidonClick(Viewv)Intentintent=newIntent();intent.setClass(VideoPlay.this,MyFile.class);/打开MyFileactivitystartActivity(intent););Intentintent=getIntent();Stringvalue=intent.getD

7、ataString();videoView=(VideoView)findViewById(R.id.VideoView01);if(value=null)/加载默认视频videoView.setVideoURI(Uri.parse(android.resource:/com.bestaone/+R.drawable.coco);else/通过文件浏览器传过来的视频路径,播放videoView.setVideoPath(value);videoView.setMediaController(newMediaController(VideoPlay.this);54.55.56.57.58.59

8、.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.videoView.requestFocus();/启动OverrideprotectedvoidonStart()super.onStart();Log.i(mp4,onstart);OverrideprotectedvoidonResume()super.onResume();videoView.seekTo(index);videoView.start();Log.i(mp4,onresume);/暂停Overrideprotectedvoid

9、onPause()super.onPause();Log.i(mp4,onpause);/停止OverrideprotectedvoidonStop()super.onStop();84. videoView.pause();85. 在这里记住视频播放的位置,当屏幕横竖切换的时候可以从记录点继续播放86. index=videoView.getCurrentPosition();87. Log.i(mp4,onstop);88. 89.89. 销毁90. Override91. protectedvoidonDestroy()92. super.onDestroy();93. /videoVi

10、ew.destroyDrawingCache();94. index=videoView.getCurrentPosition();95. Log.i(mp4,ondestroy);96. 98.97. MyFile.javaviewplaincopytoclipboardprint?1. packagecom.bestaone;2.3. importjava.io.File;4. importjava.util.ArrayList;5. importjava.util.List;6.7. importandroid.app.ListActivity;8. importandroid.cont

11、ent.Intent;9. .Uri;10. importandroid.os.Bundle;11. importandroid.view.KeyEvent;12. importandroid.view.View;13. importandroid.widget.AdapterView;14. importandroid.widget.AdapterView.OnItemLongClickListener;15. importandroid.widget.Button;16. importandroid.widget.EditText;17. importandroid.widget.Imag

12、eButton;18. importandroid.widget.ListView;19. importandroid.widget.TextView;20. importandroid.widget.Toast;21.22.publicclassMyFileextendsListActivityimplementsOnItemLongClickListener23.24./支持的视频格式25.privatefinalStringFILE_MapTable=26.27. /后缀名,MIME类型28. .3gp,video/3gpp,29. .mov,video/quicktime,30.31.

13、32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.avi,video/x-msvideo,.rmvb,audio/x-pn-realaudio,.wmv,audio/x-ms-wmv;privateListitems=null;/items:存放显示的名称privateListpaths=null;/paths:存放文件路径privateListStringsizes=null;/sizes:文件大小privateStringrootPath=/;/rootPath:起始文件夹

14、privateTextViewpath_edit;privateImageButtonrb_qry;privateintisZoom=0;privateintisOpen=0;*重写返回键功能:返回上一级文件夹*/OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent)/是否触发按键为back键if(keyCode=KeyEvent.KEYCODE_BACK)path_edit=(EditText)findViewById(R.id.path_edit);Filefile=newFile(path_edit.getText().toStr

15、ing();if(rootPath.equals(path_edit.getText().toString()returnsuper.onKeyDown(keyCode,event);elsegetFileDir(file.getParent();returntrue;60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88./如果不是back键正常响应elsereturnsuper.onKeyDown(keyCode,event);Overrideprotectedvoidon

16、Create(Bundleicicle)super.onCreate(icicle);setContentView(R.layout.myfile);path_edit=(EditText)findViewById(R.id.path_edit);rb_qry=(ImageButton)findViewById(R.id.qry_button);rb_qry.setOnClickListener(listener_qry);getListView().setOnItemLongClickListener(this);getFileDir(rootPath);Button.OnClickList

17、enerlistener_qry=newButton.OnClickListener()publicvoidonClick(Viewarg0)Filefile=newFile(path_edit.getText().toString();if(file.exists()if(file.isFile()openFile(file);elsegetFileDir(path_edit.getText().toString();else89.Toast.makeText(MyFile.this,找不到该位置,请确定位置是否正确!,Toast丄ENGTH_SHORT).show();90. 91. 92

18、. ;93.94./*95. *设置ListItem被点击时要做的动作96. */97. Override98. protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid)99. Filefile=newFile(paths.get(position);100. fileOrDirHandle(file);101. 102.103.104./*105.*处理文件或者目录的方法106. *paramfile107. *paramflag108. */109. privatevoidfileOrDirHandle(finalFi

19、lefile)110. if(file.isDirectory()111. getFileDir(file.getPath();112. else113. openFile(file);114. 115. 116.*取得文件结构的方法*paramfilePath*/privatevoidgetFileDir(StringfilePath)/*设置目前所在路径*/path_edit.setText(filePath);items=newArrayList();paths=newArrayList();sizes=newArrayList();Filef=newFile(filePath);Fil

20、efiles=f.listFiles();if(files!=null)/*将所有文件添加ArrayList中*/for(inti=0;ifiles.length;i+)if(filesi.isDirectory()items.add(filesi.getName();paths.add(filesi.getPath();sizes.add();for(inti=0;i0)StringendName=fileName.substring(index,fileName.length().toLowerCase();118.119.120.121.122.123.124.125.126.127.1

21、28.129.130.131.132.133.134.135.136.137.138.139.140.141.142.143.144.145.Stringtype=null;146.for(intx=0;xFILE_MapTable.length;x+)147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171.172.173.174.175.176./支持的格式,才会在文件浏览器中显示if(endName.equals(FILE_MapTablex0)t

22、ype=FILE_MapTablex1;break;if(type!=null)items.add(filesi.getName();paths.add(filesi.getPath();sizes.add(MyUtil.fileSizeMsg(filesi);/*使用自定义的MyAdapter来将数据传入ListActivity*/setListAdapter(newFileListAdapter(this,items,paths,sizes,isZoom);*打开文件*paramf*/privatevoidopenFile(Filef)Intentintent=newIntent();in

23、tent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);/跳出列表供选择Stringtype=video/*;177. if(isOpen=0)178. type=MyUtil.getMIMEType(f,true);179. 180. /设置intent的file与MimeType181. intent.setDataAndType(Uri.fromFile(f),type);182. /intent.putExtra(path,sms_context);183. startActivity(intent);184. 185.186. Override187. publicbooleanonItemLongClick(AdapterViewarg0,Viewarg1,intarg2,188. longarg3)189. /TODOAuto-generatedmethodstub190. returnfalse;191. 192.193.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!