在android项目中单独使用手电筒或者闪光灯是没有任何问题的。但是在你相机camera打开的时候再打开手电筒功能这时候就或多或少有问题。会报类似于这种错Fail to connect to camera service。下面给出解决方法

 。因为最近在做一个类似于共享单车这种的项目,利用Zxing SDK 打开相机扫描,来识别二维码或者条形码的功能。项目需要把手电筒或者闪光灯加进去。用户可以选择打开或者关闭。自己先从网上找了打开手电筒的方法,各种方法各种加,都会报Fail to connect to camera service。网上查了下解决方法。找到如下结果。

1.手机上有安装安全过滤软件。因为camera属于较为敏感的权限,所以,有些手机安全管家会自动拒绝camera的打开操作。
  针对这种错误,可以在手机安全管家软件中,降低一下camera的安全级别,或把自己的APP添加到白名单中。
  
2.AndroidManifest.xml中没有添加camera的权限申请,对策则是添加<uses-permission android:name="android.permission.CAMERA"/>权限申请。

3.之前对camera打开后,并没有释放掉。
  解决对策就是调用下面的处理
  camera.stopPreview();
  camera.release();
  camera = null;

4.内存占用过多,可能导致了自己应用可分配的内存不足了。
  这个场景的错误差不多是在自己的应用中打开摄像头,对摄像头取得的每一帧数据都进行额外的处理,随着处理次数的增加,如果有没被及时销毁的对象存在,则就极有可能会导致本文开头出现的异常了。
  针对此种问题,解决的方法就是仔细检查下临时创建的对象是否都已经释放掉。

2和3这两个排除掉,自己都加了,1和4没试过。所以找了一个方法可以解决。在Zxing中的.Zxing.camera 包下的CameraManager类中,加入打开和关闭闪光灯的方法,然后在使用的地方直接调用flashHandler()就可以了。

public void flashHandler() {  
            //camera.startPreview();  
            Parameters parameters = camera.getParameters();  
            // 判断闪光灯当前状态來修改
            if (Parameters.FLASH_MODE_OFF.equals(parameters.getFlashMode())) {  
                turnOn(parameters);  
            } else if (Parameters.FLASH_MODE_TORCH.equals(parameters.getFlashMode())) {  
                turnOff(parameters);  
            }  
        }    
        //開
        private void turnOn(Parameters parameters) {  
            parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);  
            camera.setParameters(parameters);  
        }   
        //關
        private void turnOff(Parameters parameters) {  
            parameters.setFlashMode(Parameters.FLASH_MODE_OFF);  
            camera.setParameters(parameters);  
        }

-----------------------------------------------------------------------------------------
布局使用:
    <ToggleButton android:id="@+id/toggleButton1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:checked="true"
android:turnOff="关灯"
android:turnOn="开灯"
        android:text="ToggleButton"/>

注:Togglebutton控件是一个开关按钮。

二 。单独使用手电筒功能

toggleButton = (ToggleButton) this.findViewById(R.id.toggleButton1);

toggleButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (!toggleButton.isChecked()) {
PackageManager pm = this.getPackageManager();
FeatureInfo[] features = pm.getSystemAvailableFeatures();
for (FeatureInfo f : features) {
if (PackageManager.FEATURE_CAMERA_FLASH.equals(f.name)) // 判断设备是否支持闪光灯
{
if (null == m_Camera) {
m_Camera = Camera.open();
}

Camera.Parameters parameters = m_Camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
m_Camera.setParameters(parameters);
m_Camera.startPreview();
toggleButton.setBackgroundColor(0x30ffffff);
}
}
} else {
if (m_Camera != null) {
m_Camera.stopPreview();
m_Camera.release();
m_Camera = null;
}
toggleButton.setBackgroundColor(0xffffffff);
}
}
});

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ToggleButton android:id="@+id/toggleButton1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:checked="true"
        android:text="ToggleButton"
        android:longClickable="false" />
</LinearLayout>

权限:

<uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.hardware.camera" />

<uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.autofocus" />

结尾给出素材,仅供参考,如有雷同,纯属巧合。

android 相机闪光灯和手电筒的使用相关推荐

  1. android 相机闪光灯,在Android中使用相机闪光灯闪烁

    我已经写了一个简单的代码,它应该会在500ms暂停时闪烁Android设备的相机闪光灯.但有些事情是没有做...在Android中使用相机闪光灯闪烁 public void flicker_500ms ...

  2. Android 相机 LED 做手电筒

    2019独角兽企业重金招聘Python工程师标准>>> Netkiller Android 手札 http://www.netkiller.cn/android/index.html ...

  3. android 闪光灯 实现,android将闪光灯作为手电筒的实现代码

    手电筒是使用Android手机的闪光灯,所以需添加权限 import com.jwzhangjie.test.R; import android.app.Activity; import androi ...

  4. android手电筒项目代码,Android 开启闪光灯做手电筒 源码-Fun言

    权限: 布局 android:layout_width="fill_parent" android:layout_height="fill_parent" an ...

  5. Android 开启闪光灯做手电筒 源码

    权限:<uses-permission android:name="android.permission.FLASHLIGHT" /><uses-permissi ...

  6. java闪光灯手电筒_Android_Android 开启闪光灯做手电筒的详解,复制代码 代码如下:public class H - phpStudy...

    Android 开启闪光灯做手电筒的详解 public class HandLightActivity extends Activity implements OnClickListener{ pri ...

  7. 初学Android——闪光灯当做手电筒使用

    http://blog.csdn.net/canghai1129/article/details/11643343 我本身是做功能机出身,MTK的方案,业内人士都知道,功能机没落了.最近在学习andr ...

  8. 基于Android平台开发的手电筒Light

    基于Android平台开发的手电筒Light 1.     需求分析: 在现代社会中,手机的功能越来越完善,手电筒就是这些功能中必不可少的一种.当行走在漆黑的道路上,当你在黑暗狭小的地方寻找物品,当你 ...

  9. camera (19)---Android 相机开发的基本流程

    [Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article/details/54563910 相机开发现在有2 ...

最新文章

  1. html用户注册信息,首页-用户注册-填写注册信息
  2. Finding the Edges (Sobel Operator)
  3. EEG伪影详解和过滤工具的汇总(二)
  4. Flask框架(flask-script扩展命令行和flask中数据库migrate扩展的使用)
  5. .Net Core跨平台应用研究-HelloArm(串口篇)
  6. vscode python print 输出窗口中文乱码
  7. 写给开发者——从比特币脚本引擎到以太坊虚拟机
  8. 谷歌开源 Python 代码漏洞查找工具 Atheris
  9. 提高页面渲染速度的建议以及方案
  10. qa 芯片测试_关于半导体设备测试,看这一篇就够了
  11. 区块链中国专利申请状况及技术分析
  12. 搜索引擎优化主要对网站哪些方面做优化
  13. 强制横屏java_Android强制设定横屏时,SurfaceView一直黑屏
  14. 使用python爬取号码归属地列表,制作握手包破解字典
  15. 使用Codemirror的markdown编辑器和使用showdown的Vue.js预览器
  16. Apache Log4j Server 反序列化漏洞(CVE-2017-5645)
  17. 安装Linux win双系统 无法正常启动 读不出U盘
  18. java构造器(构造方法、构造函数)(精炼而详细)
  19. html语言基范例,简单html网页范例
  20. 来自一位运营的真实产品体验

热门文章

  1. 【RabbitMQ】消息应答--ack机制
  2. Latex图表中英文双标注之多个子图
  3. 台式电脑显示无法自动修复此计算机,windows无法自动修复此计算机怎么解决
  4. CI/CD之搭建私有git仓库gitlab
  5. 【黑马课程笔记】webAPI
  6. 分享一个Qt实现的AI版俄罗斯方块
  7. IOS微信下问题1 底部导航栏导致标签位置偏移
  8. 起底欧莱雅“美护”帝国:23个品牌“连轴转”,打下2119亿江山
  9. 10 直线方程—— 一般式、 参数式、向量式、点向式(标准式)、两点式,直线方程互换
  10. 中国式“被公司加班”的办公室文化有多可怕