通过手机上安装的第三方播放器来播放APK内的视频文件
来源:互联网 发布:网站排名seo 编辑:程序博客网 时间:2024/05/30 23:45
通过手机上安装的第三方播放器来播放APK内的视频文件
刚开始在网上查了很多资料,因为以前做过 通过第三方播放器播放本地视频的功能
大概代码如下
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/Test_Movie.m4v");
//调用系统自带的播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
Log.v("URI:::::::::", uri.toString());
intent.setDataAndType(uri, "video/mp4");
startActivity(intent);
把视频文件放到raw文件夹中或者assets文件夹下,获取的URI,传递给Intent后都提示视频不存在
而这个URI通过videoView播放的话是没有问题的
所以判断是APK内的视频只能输出流给外部,无法通过URI让第三方调用
所以考虑 另一种方案:
在APK初次安装时把视频文件写入SD卡中,试过后可以实现功能,
代码如下
manifest中需要如下权限
//MainActivity的OnCreate()方法中执行createFile();方法
private StringfileDirPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()// 得到外部存储卡的数据库的路径名
+ "/wavebot/example/";// 我要存储的目录
privateString fileName= "example.mp4";// 要存储的文件名
/**
* 复制文件到SD卡
*
*/
private void createFile() {
String filePath = fileDirPath + "/" + fileName;// 文件路径
try {
File dir = new File(fileDirPath);// 目录路径
if (!dir.exists()) {// 如果不存在,则创建路径名
* 复制文件到SD卡
*
*/
private void createFile() {
String filePath = fileDirPath + "/" + fileName;// 文件路径
try {
File dir = new File(fileDirPath);// 目录路径
if (!dir.exists()) {// 如果不存在,则创建路径名
Log.v (TAG,"要存储的目录不存在");
if (dir.mkdirs()) {// 创建该路径名,返回true则表示创建成功
Log.v (TAG,"已经创建文件存储目录");
} else {
Log.v (TAG,"创建目录失败");
}
}
// 目录存在,则将apk中raw中的需要的文档复制到该目录下
File file = new File(filePath);
}
// 目录存在,则将apk中raw中的需要的文档复制到该目录下
File file = new File(filePath);
if (!file.exists()) {// 文件不存在
Log.v(TAG,"要打开的文件不存在");
InputStream ins = getResources().openRawResource(
R.raw.example);// 通过raw得到数据资源
Log.v (TAG,"开始读入");
FileOutputStream fos = new FileOutputStream(file);
Log.v (TAG,"开始写出");
byte[] buffer = new byte[8192];
int count = 0;// 循环写出
while ((count = ins.read(buffer)) > 0) {
fos.write(buffer, 0, count);
fos.write(buffer, 0, count);
}
Log.v (TAG,"已经创建该文件");
fos.close();// 关闭流
ins.close();
}
} catch (Exception e) {
e.printStackTrace();
}
ins.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
播放视频的时候 直接调用
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(new File(android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()// 得到外部存储卡的数据库的路径名
+ "/wavebot/example/example.mp4"));
intent.setDataAndType(uri, "video/*");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(new File(android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()// 得到外部存储卡的数据库的路径名
+ "/wavebot/example/example.mp4"));
intent.setDataAndType(uri, "video/*");
startActivity(intent);
但是考虑会占用 手机SD卡的内存,也不是最完美的解决方案,在此记录,以后找到更完美的方案,再做修改
1 0
- 通过手机上安装的第三方播放器来播放APK内的视频文件
- 一个播放器的第三方框架
- AVI 视频文件的播放
- 音视频文件的播放
- 写一个APP控制第三方播放器播放,以及获取正在播放的歌曲信息
- 常用的第三方视频播放工程
- 在正在播放的视频文件上叠加图片
- 在正在播放的视频文件上叠加图片收藏
- 解决FLV视频文件在服务器上无法播放的问题
- 为什么网站上的flv视频文件不能播放
- android开发--指定播放器来播放视频文件
- 对Android基于vitamio框架调用第三方播放器播放视频的初步认识
- 第三方视频播放器
- 真正的通过手机控制PPT播放
- android通过webView加载第三方h5应用,无法加载图片和播放视频的解决方法
- 通过脚本来实现音频的播放
- 苹果手机上音乐播放的问题
- Android视频播放项目总结之 点击listview条目调用手机上其他的视频播放器播放
- 搭建Java开发环境,书写你的第一个Java程序
- 测试基础(1)
- bag of words model 应用于图像
- 如何确定apache的执行用户及它的权限
- HTML5:Sublime Text 的安装与使用
- 通过手机上安装的第三方播放器来播放APK内的视频文件
- CWnd与HWND的区别与转换
- Android周报94期(一)
- 初见spark streaming之JavaNetWorkWordCount
- Mysql 重置密码
- 我要开始学习爬虫啦
- 软件测试(2)
- 用Java代码通过JDBC连接Hiveserver2
- 安卓listView不得不说的那些细节