Android 调用系统API打开闪光灯
我们用的android手机现在基本上都支持闪光灯了,实现一个闪光灯的功能不是很难,就是其中会碰到一些奇葩的问题。我就碰到了一些问题,因为国产ROM的一些??,导致我们的闪光灯总是不能正常的打开。作为一个开发人员,首先要保证我们开发出来的产品是稳定的,不能说崩溃就崩溃了。
现在市面上的一些机型,当你打开闪光灯的时候再去打开相机,它会给予“”“相机被第三方占用,请先关闭第三方”之类的提示。但是呢,总有一些比较坑爹的Rom, 当你打开闪光灯了再去打开相机,系统相机会直接占用第三方的闪光灯,这就导致再去点击就会出现异常。
接下来说说我的解决方案,直接上源码
一般开启前先检查下闪光灯是否开启,开启了点击就关闭,反之亦然
/* ** 是否开启了闪光灯* @return*/public boolean isFlashlightOn(boolean flag) {try {Camera.Parameters parameters = camera.getParameters();String flashMode = parameters.getFlashMode();if (flashMode.equals(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) {return true;} else {return false;}} catch (Exception e) {return false; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
写个工具方法,去操作
/*** 闪光灯开关*/public void flashlightUtils() {if (isFlashlightOn(false)) {Closeshoudian();camera = null;} else {Openshoudian();}}
这是开启方法
public void Openshoudian() {//异常处理一定要加,否则Camera打开失败的话程序会崩溃try {Log.d("smile","camera打开");camera = Camera.open();} catch (Exception e) {Log.d("smile","Camera打开有问题");Toast.makeText(context, "Camera被占用,请先关闭", Toast.LENGTH_SHORT).show();}if(camera != null){//打开闪光灯camera.startPreview();Camera.Parameters parameter = camera.getParameters();parameter.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);camera.setParameters(parameter);Log.d("smile","闪光灯打开");}}
这是关闭方法
public void Closeshoudian(){if (camera != null){//关闭闪光灯Log.d("smile", "closeCamera()");camera.getParameters().setFlashMode(Camera.Parameters.FLASH_MODE_OFF);camera.setParameters(camera.getParameters());camera.stopPreview();camera.release();camera = null;}}
这下不管怎么样,我们的程序都不会崩溃了,稳定第一。
Android 调用系统API打开闪光灯相关推荐
- Android 调用系统api录音的两种方式(MediaRecorder、AudioRecord)
废话 权限.权限.权限,必须要先获取了录音权限,其他的事情晚点再说. 另外,新版本的Android 10系统会对录音有调整,引入了一个录音焦点的概念,也就是说以前的麦克风只能一个APP使用,必须要等它 ...
- android调用系统相册打开图片不显示,【报Bug】打开相册,不显示图片,选中图片后,app会崩溃...
产品分类: uniapp/App PC开发环境操作系统: Mac PC开发环境操作系统版本号: 10 HBuilderX类型: 正式 HBuilderX版本号: 2.8.8 手机系统: Android ...
- Android调用系统应用打开各种类型文件
1.建立匹配表 //建立一个文件类型与文件后缀名的匹配表private static final String[][] MATCH_ARRAY={//{后缀名, 文件类型}{".3gp&qu ...
- Android P+通过反射调用系统API实现高级功能
Android P+通过反射调用系统API实现高级功能 1. 打开隐藏API 1.1 导入FreeReflection包 1.2 打开隐藏API 2. 反射系统服务并调用相应方法 通过反射调用系统AP ...
- android安装自动打开网页,Android调用系统自带浏览器打开网页的实现方法
Android调用系统自带浏览器打开网页的实现方法 在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接.只需要传入一个uri,可以是链接地址. 启动android默认浏览器 在A ...
- Android调用系统的拍照,打开相册功能
Android调用系统的拍照,打开相册功能 1 添加权限: <!-- 往SDCard写入数据权限 --> <uses-permission android:name="an ...
- Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享
Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享 标签: Android系统分享QQ分享朋友圈图文分享 2016-09-27 22:54 279人阅读 评论(0) 收藏 举报 ...
- android 调用系统文件管理器
今天,简单讲讲android如何调用系统的文件管理器获取目录下的文件资源. 这几天,还是因为搬家的事,导致自己状态很差.和领导说想要辞职,领导说还是先适应一下在说.所以还是坚持了. 这个其实也很简单, ...
- android 默认浏览器 视频播放 二维码,Android调用系统默认浏览器访问的方法
一.启动android默认浏览器 这样子,android就可以调用起手机默认的浏览器访问. 二.指定相应的浏览器访问 1.指定android自带的浏览器访问 ( "com.android.b ...
最新文章
- Nginx面试!mysql时间类型以及获取当前时间,干货满满
- HTML DOM 方法
- 如何实现手游app瘦身?
- 管道符和作业控制 shell变量 环境变量配置文件
- C语言以数据块的形式读写文件
- MFC m_pMainWnd
- UltraEdit for Mac
- Nginx——Nginx实现服务端集群搭建
- 最新版O泡易支付系统平台 PHP源码 第三方第四方免签支付平台系统 全开源可二开
- 在linux系统下观看和转码m3u8视频文件
- java jws-_java JWS 应用及实践
- 一键脚本搭建docker redis 集群(cluster)
- BLV脉动阵列实现矩阵SVD分解
- element-ui表格中表头表内容的居中左右对齐
- 什么是交换?路由?路由交换?
- PyCharm安装教程最新版(社区版)
- 传输线理论基础01——相关定义、信号速率、分布参数与电报方程
- 1.关于嵌入式开发软件工程师的理解
- 小程序分类功能的实现
- oracle rac v3500_OEL6.X IBM v3500存储多路径配置