安卓视频录制、调用系统音乐、视频播放器所遇问题及解决(包含7.0兼容问题)
来源:互联网 发布:苹果手机excel软件 编辑:程序博客网 时间:2024/06/05 18:34
1.所遇问题:在部分手机上无法录制视频(测试的几个手机:华为P9(7.0),华为mate8(6.0), 锤子( 7.0)都无法录制)
问题原因:录制视频编码格式的问题,手机不支持 MPEG_4_SP 编码格式
解决方法:改为 H264 编码格式,以下为录制视频代码
2.所遇问题:安卓7.0版本调用系统播放器播放本地视频文件会崩溃的问题(解决方法是从网上找的,附上原文链接:http://blog.csdn.net/zz110753/article/details/60877594 会谈到照相后获取照片的问题),同样原因也会导致播放本地音频文件崩溃,app版本更新时用系统安装器安装APK会崩溃,这些在 http://blog.csdn.net/msn465780/article/details/59058088?locationNum=8&fps=1 链接中有做描述
问题原因:实际是7.0系统调用本地文件的问题,Android7.0中尝试传递 file:// URI 会触发 FileUriExposedException,因为在Android7.0之后Google认为直接使用本地的根目录即file:// URI是不安全的操作,直接访问会抛出FileUriExposedExCeption 异常
解决方法:
Google为我们提供了FileProvider类,进行一种特殊的内容提供,FileProvider时ContentProvide的子类,它使用了和内容提供器类似的机制来对数据进行保护,可以选择性地将封装过的Uri共享给外部,从而提高了应用的安全性。下面就让我们看一下如何使用这个内容提供者进行数据访问的:
步骤一、 使用FileProvider获取Uri就会将以前的file:// URI准换成content:// URI,实现一种安全的应用间数据访问,内容提供者作为Android的四大组件之一,使用同样需要在清单文件AndroidManifest.xml中进行注册的,注册方法如下:
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.zz.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /></provider>provider标签里的 android:name的值是FileProvider的包名+类名为固定值。android:authorities的值相当于一个标志,当我们使用FileProvider的getUriForFile方法时的一个参数需和清单文件注册时的保持一致,这里我使用的是:com.zz.fileprovider可自行定义。exported:要求必须为false,为true则会报安全异常。grantUriPermissions:true,表示授予 URI 临时访问权限。<meta-data />标签里面是用来指定共享的路径。
步骤二、android:resource="@xml/file_paths"就是我们的共享路径配置的xml文件。关于xml文件的配置如下:
在res目录下创建xml文件夹,file_paths.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?><resources> <paths> <external-path name="camera_photos" path="" /> </paths></resources>external-path标签用来指定Uri共享的,name属性的值可以自定义,path属性的值表示共享的具体位置,设置为空,就表示共享整个SD卡,也可指定对应的SDcard下的文件目录,根据需求自行定义。
步骤三、具体的代码中使用如下,附上调用系统播放器播放视频方法:
3.所遇问题:调用系统播放器播放音频文件时,部分华为手机无法播放,对此的解决方法是在调用时添加
intent = Intent.createChooser(intent, "Choose an application to open with:");
另附上调用系统播放器播放音频文件的代码
注:目前大部分手机测试没有问题,但是目前锤子 7.0手机,以及华为mate8(6.0)手机,还是无法调用系统播放器播放音频和视频文件,正在定位问题,后续会做更新
阅读全文
0 0
- 安卓视频录制、调用系统音乐、视频播放器所遇问题及解决(包含7.0兼容问题)
- android调用系统的录制、播放视频
- 安卓录制视频问题
- 解决Android7.0系统 调用系统相机、系统播放器播放视频、切图兼容问题,报异常android.os.FileUriExposedException
- 解决Android7.0系统 调用系统相机、系统播放器播放视频、切图兼容问题,报异常android.os.FileUriExposedException
- 解决Android7.0系统 调用系统相机、系统播放器播放视频、切图兼容问题,报异常android.os.FileUriExposedException
- 安卓音乐播放器和视频播放器实现
- android 调用系统的音乐和视频播放器
- Android 调用系统播发器播放音乐或视频
- android 多媒体编程(五) 调用系统播放器播放音乐/视频
- android视频录制(调用系统视频录制)
- 安卓开发——让系统可以调用自己写的视频播放器
- android 视频播放 -- 调用系统播放器
- Android 调用系统播放器播放视频
- iOS 调用音乐播放以及视频播放器
- 解决页面退出 WebView 继续播放视频音乐的问题
- 安卓实现视频录制
- SoundPool、录制音频、播放视频、调用摄像头
- Verilog中同步复位和异步复位比较
- Java:TreeSet定制排序后无法被对象输出流写入到文件
- iOS 获取设备的各种信息
- mysql批量提交数据实例
- 使用Hexo搭建个人博客
- 安卓视频录制、调用系统音乐、视频播放器所遇问题及解决(包含7.0兼容问题)
- JS关于字符串和数组的一些使用方法
- Linux数字权限解释
- 一些概念分析比较
- 【视频开发】ONVIF、RTSP/RTP、FFMPEG的开发实录
- STM32 Flash读写;Flash地址对应的存储内容及方式;
- 2015 ACM Amman Collegiate Programming Contest训练总结【12/12】
- 启动项目时出现java.io.EOFException异常
- 制作自定义图标字体,html引用web svg矢量字体