简易视频播放器
比较不错的源码:
倒计时的实现方案 - 类似限时抢购商品等
http://www.eoeandroid.com/thread-231924-1-1.html
android 仿IPHONE桌面图标抖动
http://www.eoeandroid.com/thread-231330-1-1.html
Android中如何使用ViewPager实现类似laucher左右拖动效果
http://www.eoeandroid.com/thread-231368-1-1.html
eoe积分商城:
http://www.eoeandroid.com/plugin.php?id=auction
-----------------帖子正文-------------------------
为了熟悉android视频方面的api,结合论坛里的资料,动手写了一个调用系统API的视频播放器,只能播放系统自带能解码的格式,界面比较简单,如下图:
代码主要有两个部分:
1.搜索手机中所有视频并显示
主要通过以下代码实现:
cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null); if(cursor.moveToFirst()){ do{ VideoInfo info = new VideoInfo(); info.filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)); info.mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)); info.title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)); Log.d("-name debug-", info.title+" "+info.filePath); //获取当前Video对应的Id,然后根据该ID获取其Thumb int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID)); BitmapFactory.Options options = new BitmapFactory.Options(); options.inDither = false; options.inPreferredConfig = Bitmap.Config.ARGB_8888; info.b = MediaStore.Video.Thumbnails.getThumbnail(getContentResolver(), id, Images.Thumbnails.MICRO_KIND, options); //然后将其加入到videoList videoList.add(info); }while(cursor.moveToNext()); }
2.播放视频
通过videoview实现
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.player); viv=(VideoView)findViewById(R.id.videoView); mController=new MediaController(this); viv.setMediaController(mController); String videopath=getIntent().getStringExtra("path"); if (videopath!=null) { viv.setVideoPath(videopath); } viv.requestFocus(); viv.start(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架