Android 自定义相机黑屏
最近遇到了一个奇葩问题 ,自定义相机 ,拍照一直没有问题 三百年没有动过的代码 ,在项目上uat的时候拍照黑屏了 ,先上代码让大家看一下 避免出现这个错误
if (mCamera == null) {mCamera = getCamera(mCameraId); if (mHolder != null) {
startPreview(mCamera, mHolder);
}}
在onResume方法中这么写的一直没有问题 但是今天打开相机就是黑屏 ,后来发现了 在onResume方法中给开启相机会有一定的延迟 ,具体为什么我也不知道 ,因为我切换前后摄像头是可以预览的 所以我坚信了我预览的代码没有问题
然而,为了解决这个问题 我把开启相机的代码放在了SurfaceHolder的surfaceCreated方法中
public void surfaceCreated(SurfaceHolder holder) {if (mCamera == null) {mCamera = getCamera(mCameraId); }if (mCamera == null) {ToastUtil.makeText("请检查相机相关权限是否打开!"); }else { startPreview(mCamera, holder);}}
我以为这样就没有问题了 还是自己太年轻啊正常的拍照是没有问题了 但是 锁屏和跳转到别的界面再回来的时候 又是黑屏了 因为 我在onPause方法中把相机设为null 在网上查了好多资料 有的说是设置预览大小的时候 获取宽高为奇数,我的不是这种问题 ,因为如果我的是这样的问题就不会出现有预览的界面 所以我Pass了 网上还有的人说在onResume方法中sleep一下 我尝试延时时间缩短到50ms已经可以完全正常预览了,而且视觉上几乎感觉不到延迟(zxing的二维码扫描预览视觉上也会有略微延迟),而如果改成10ms就不行了。差不多这个时间应该是需要用来调用底层so档的最短时间。所以最终解决办法还需要将上述OnResume()中的开启相机方法改成如下
if (isONe!=1){if (mCamera == null) {mCamera = getCamera(mCameraId); if (mHolder != null) {new Thread(){@Override public void run() {super.run(); try{Thread.sleep(50); }catch (Exception e){}startPreview(mCamera, mHolder); }}.start(); }} }
嘻嘻 代码修改成这样 拍照已经是可以了 但是你以为这样就完成了 那就错了 你们太小看我家测试的能力了 。。。。。其实这时候我心中一万只曹尼玛经过 但是没有办法 我只能一个测试会改变一个程序员的代码习惯 ,因为我被我家的测试改变了 好了废话不多说了 我们自测只是小心翼翼的点击操作 好像自己的孩子一样 怕点坏了 但是我家测试就把你写的程序当作是他的天敌 使劲的操作 不点蹦就誓不罢休 唉 天有不测风云啊 android 这么多机型 总有一款机型会会出现问题
下面我就说一下这个特殊机型 魅族 ,当手机的拍照权限拒绝的时候 魅族获取的Camera不为null 那么这就尴尬了 因为我判断逻辑就是判断Camera是否为null 上代码
if (mCamera == null) {ToastUtil.makeText("请检查相机相关权限是否打开!"); }else { startPreview(mCamera, holder);}
因为mCamera不为null 所以走进了开启相机 但是相机权限的关闭了 爆出了异常 所以 我在判断权限的位置多加了代码 代码如下
if (mCamera == null) {ToastUtil.makeText("请检查相机相关权限是否打开!"); }else {try{// setParameters 是针对魅族MX5。MX5通过Camera.open()拿到的Camera对象不为null Camera.Parameters mParameters = mCamera.getParameters(); mCamera.setParameters(mParameters); startPreview(mCamera, holder); }catch(Exception e) {ToastUtil.makeText("请检查相机相关权限是否打开!"); }}
这样就能满足条件了 嘻嘻完美解决了 之前还遇到了特别的问题 小米手机拍出的照片比一般的手机排除的照片要大 因为之前做视频拍摄的时候 视频要做压缩 所以在做视频配置的时候 小米手机要做特别的处理
第一写这么就的文章 写的不好 大家多多包涵
Android 自定义相机黑屏相关推荐
- Android系统(121)---Android启动页黑屏及最优解决方案
Android启动页黑屏及最优解决方案 前言 相信做过Android的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页.那么这个黑屏或者白屏 ...
- Android 系统(119)---Android启动页黑屏及最优解决方案
Android启动页黑屏及最优解决方案 前言 相信做过Android的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页.那么这个黑屏或者白屏 ...
- android最优化启动画面,Android启动页黑屏及最优解决方案
原标题:Android启动页黑屏及最优解决方案 作者:拉丁吴 链接:https://juejin.im/post/58ad90518ac2472a2ad9b684 前言 相信做过Android的朋友都 ...
- Android 自定义相机Demo 入门学习
Android 自定义相机Demo 本文是参考网上一些自定义相机示例,再结合自己对相机的功能需求写的,基本上包含了很多基本功能,比如相机对焦.闪光灯,以及在手机预览界面上绘制自己想要绘制的图案. 话不 ...
- Android自定义相机拍照、图片裁剪的实现
原文:Android自定义相机拍照.图片裁剪的实现 最近项目里面又要加一个拍照搜题的功能,也就是用户对着不会做的题目拍一张照片,将照片的文字使用ocr识别出来,再调用题库搜索接口搜索出来展示给用户,类 ...
- Android自定义相机,切换前后摄像头,照相机拍照
Android自定义相机,简单实现切换前后摄像头,照相机拍照 Ctrl +C Ctrl+V 可以直接 run 起来,注释比较详细;源码下载 <?xml version="1.0&qu ...
- android进入应用黑屏原因以及解决方案
android 界面进入黑屏解决方案: .1 原因 加载onCreate 方法 执行方法加载数据耗时,需要跑完onCreate和onResume才会显示界面.2 闪黑屏的原因主要是我们启动Activi ...
- android 实现自动拍照,Android自定义相机实现定时拍照功能
这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能. 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: activity_main.xml andro ...
- android 自定义相机源码,Android 自定义相机及分析源码
Android 自定义相机及分析源码 使用Android 系统相机的方法: 要想让应用有相机的action,咱们就必须在清单文件中做一些声明,好让系统知道,如下 action的作用就是声明action ...
最新文章
- 《构建高性能web站点》随笔 无处不在的性能问题
- 关于ORA-06508 , ORA-04068异常的详细说明
- c语言从串口获取数据,如何通过串口来读写数据,请教达人
- PyCharm简单使用介绍及注意事项
- 2021牛客暑期多校训练营1 G-Game of Swapping Numbers(最优解转化+贪心)
- 安装redis并开启_如何安装Redis,以及对Redis配置文件的更改和测试
- vue实现数字“滚动式增加”效果 【插件化封装】
- 模式识别中的特征向量和矩阵的特征向量有什么关系
- uboot向linux传递输出任何log信息的方法
- 设置PDF文件默认缩放比例
- nginx反向代理docker registry报”blob upload unknown解决办法
- kjb文件 解析_微信安装包解析异常
- 2.2CP分解CP-RALS算法推导python实现
- 因IP被列入黑名单导致U-Mail被退信的处理方法
- 使用python打印九九乘法表
- 正交投影与弱透视投影
- 时间中常用时区的英文缩写对照中文释义
- 淘宝的互动项目,为什么总会刷爆你的好友圈?
- 有苦有乐的算法 --- 一个数组中,有两种数出现了奇数次,其余数都出现了偶数次,找到这两种数
- 简易计算机led数码管单片机课设,单片机课程设计报告--简易计时器——LED?数码管显示接口技术应用.docx...
热门文章
- 例题5-3 安迪的第一个字典 UVa10815
- 传统会计和计算机会计的职能,论会计信息化对传统财务会计职能的影响
- linux使用certbot,如何自动续期~
- 最新PyCharm基本使用(3)------编码(Code)、重构(Refactor)
- 银行数字化转型导师坚鹏:浙江浙商金控公司培训圆满结束
- 推荐几个网站 - (可视化、博客、社区、学习网站)
- Excle常用快捷键
- RabbitMQ中交换机的几种模式
- 好用在线html编辑器,求一款好用的html在线编辑器
- python牛顿法算立方根_立方根求解(牛顿迭代法)