如何检索cameraID并使用setTorchMode?

问题描述 投票:2回答:2

所以Android M最近出现了它现在有一个内置的cameralight函数叫做setTorchMode。我很好奇这个参数是如何工作的(String cameraID,Boolean true / false)。布尔值显然决定了灯是打开还是关闭,但是如何获得cameraID呢?我知道有一个名为getCameraIDList的方法,但它返回一个ID数组,而不仅仅是一个。你怎么知道该列表中的哪一个使用?

android light android-6.0-marshmallow
2个回答
1
投票

您应该使用CameraManager“getCameraIdList”函数,该函数将检索字符串列表,其中每个字符串代表一个活动的摄像头。


0
投票
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
        try {
            for (String camID : mCameraManager.getCameraIdList()) {
                CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID);
                int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
                if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                    mCameraId = camID;
                    break;
                } else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                    mCameraId = camID;
                }
            }
            if (mCameraId != null) {
                mCameraManager.setTorchMode(mCameraId, true);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

如果可用,mCameraId将打开前置摄像头闪光灯,如果可用,则打开后置摄像头闪光灯。如果没有可用的闪存,则mCameraId将为null,并且不会调用setTorchMode。

© www.soinside.com 2019 - 2024. All rights reserved.