Android本地图片视频循环播放实现
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
"Android应用程序开发,涉及Android视频和图片的循环播放功能,主要问题在于处理不同类型的文件路径URI。" 在Android应用开发中,有时我们需要实现一个功能,让用户能够选择本地的图片或视频,并在应用内进行循环播放。这个过程涉及到Android的多媒体处理和文件系统交互。下面将详细介绍如何实现这一功能。 首先,为了允许用户选择本地的图片或视频,我们需要创建一个 Intent 来启动系统文件选择器。在 `setVideoPath()` 方法中,我们创建了一个 Intent 对象,设置其动作为 `ACTION_GET_CONTENT`,类型设为 `*/*`,表示可以选取任何类型的文件,并添加了 `CATEGORY_OPENABLE` 类别,以便能够打开并读取选定的文件。 ```java private void setVideoPath() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent, VIDEO_PATH); } ``` 当用户选择文件后,应用会接收到一个结果回调,在 `onActivityResult()` 方法中处理。根据请求码 `VIDEO_PATH` 或 `PIC_PATH`,我们可以获取到用户选择的 Uri,并调用 `getPath()` 方法来获取实际的文件路径。 ```java @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) return; switch (requestCode) { case VIDEO_PATH: Uri uri = data.getData(); String videoPath = getPath(uri); showToastReal("你选中的视频路径:" + videoPath); SpUtils.getInstance(this).saveString("videoPath", videoPath); break; case PIC_PATH: Uri picUri = data.getData(); String picPath = getPath(picUri); showToastReal("你选中的图片路径:" + picPath); SpUtils.getInstance(this).saveString("picPath", picPath); break; } } ``` 关键在于 `getPath()` 方法,它需要处理两种类型的 Uri:一种是以 "file://" 开头,直接指向文件系统的路径;另一种是以 "content://" 开头,可能来自其他应用的提供者。针对这两种情况,我们需要进行不同的处理: ```java public String getPath(Uri uri) { String path; if ("file".equalsIgnoreCase(uri.getScheme())) { // 使用第三方应用打开 path = uri.getPath(); } else if ("content".equalsIgnoreCase(uri.getScheme())) { // 通过ContentResolver获取 Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); path = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)); cursor.close(); } else { path = uri.toString(); } } else { path = uri.toString(); // 其他类型的Uri } return path; } ``` 在这个方法中,如果 Uri 的 scheme 是 "file",我们直接获取它的路径部分。如果是 "content",我们使用 `getContentResolver()` 获取一个 Cursor,查询 MediaStore 中与该 Uri 相关联的数据,特别是 DATA 列,它通常包含了实际的文件路径。如果未找到 Cursor,或者没有对应的数据列,我们直接返回 Uri 的字符串表示。 在获取到图片或视频的路径后,我们将其保存在 SharedPreferences(这里使用了 SpUtils)中,以便后续的播放逻辑可以使用。循环播放通常会涉及使用 Android 的媒体播放器(如 `MediaPlayer` 或 `ExoPlayer`)以及一个定时器或 Handler 来在播放结束时重新加载媒体文件。 需要注意的是,由于权限问题,从 "content://" Uri 获取文件路径可能在Android 6.0(API级别23)及以上版本需要运行时权限。确保你的应用已经请求了相应的读取存储权限。 总结来说,Android应用实现图片或视频的循环播放,需要处理文件选择、Uri解析以及多媒体播放的相关技术。这个过程涉及到Intent交互、ContentResolver的使用,以及可能的权限管理。理解这些知识点对于开发Android多媒体应用至关重要。
![](https://csdnimg.cn/release/download_crawler_static/12770714/bg1.jpg)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 3
- 资源: 905
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)