android 相机与手电筒的互斥

本文详细解析了Android系统中手电筒功能的工作原理及其与相机应用之间的冲突原因,并提供了解决方案,通过互相监听对方的状态来避免两者同时使用同一硬件资源。
相机和SystemUI。


在android5.0的快捷开关上面有一个手电筒的开关,并且支持后台运行。
需要明确的一点就是,之所以他们两个不能一起使用是因为手电筒其实调用的也是相机里面的闪光灯。他们作为同一个硬件是不能一起使用的
首先看一下手电筒是怎么工作的:
/SystemUI_q5.1/src/com/android/systemui/statusbar/policy/FlashlightController.java
    private void postUpdateFlashlight() {
        ensureHandler();
        mHandler.post(mUpdateFlashlightRunnable);
    }
重点在于他如何实现Runnable接口的
    private final Runnable mUpdateFlashlightRunnable = new Runnable() {
        @Override
        public void run() {
            updateFlashlight(false /* forceDisable */);
        }
    };

   private void updateFlashlight(boolean forceDisable) {
        try {
            boolean enabled;
            synchronized (this) {
                enabled = mFlashlightEnabled && !forceDisable;
            }
            if (enabled) {
                if (mCameraDevice == null) {
                    startDevice();
                    return;
                }
                if (mSession == null) {
      &n
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值