android 打开闪光灯 java

该文章介绍了如何在Android应用中使用Camera2API来初始化相机管理器,获取相机特性,特别是检查并控制相机的闪光灯功能。`initCamera()`方法遍历所有相机ID,查找具有闪光灯功能的相机,而`openFlashlight()`和`closeFlashlight()`方法则用于打开和关闭闪光灯。为了实现这些功能,应用需要在AndroidManifest.xml中声明相机权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:
官方文档: https://developer.android.google.cn/reference/android/hardware/camera2/CameraManager
本文参考chatGPT, 使用Camera2 API

代码:

    private CameraManager cameraManager;
    private String cameraId;

    private void initCamera() {
        cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        try {
            for (String id : cameraManager.getCameraIdList()) {
                CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id);
                Boolean hasFlash = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
                if (hasFlash != null && hasFlash) {
                    cameraId = id;
                    break;
                }
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    private void openFlashlight() {
        try {
            if (cameraManager == null) {
                initCamera();
            }
            if (cameraId != null) {
//                需要初始化cameraManager之后才能,调用setTorchMode方法
//                需要确认cameraId存在
                cameraManager.setTorchMode(cameraId, true);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    private void closeFlashlight() {
        try {
            if (cameraManager == null) {
                initCamera();
            }
            if (cameraId != null) {
                cameraManager.setTorchMode(cameraId, false);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

androidManifest.xml 添加硬件权限

    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-permission android:name="android.permission.CAMERA"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值