android.hardware.camera2.CameraAccessException#getMessage ( )源码实例Demo

下面列出了android.hardware.camera2.CameraAccessException#getMessage ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public CustomVideoCapturerCamera2(Context ctx,
                            Publisher.CameraCaptureResolution resolution,
                            Publisher.CameraCaptureFrameRate fps) {
    cameraManager = (CameraManager) ctx.getSystemService(Context.CAMERA_SERVICE);
    display = ((WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    camera = null;
    cameraState = CameraState.CLOSED;
    reentrantLock = new ReentrantLock();
    condition = reentrantLock.newCondition();
    frameDimensions = resolutionTable.get(resolution.ordinal());
    desiredFps = frameRateTable.get(fps.ordinal());
    runtimeExceptionList = new ArrayList<RuntimeException>();
    isPaused = false;
    try {
        String camId = selectCamera(PREFERRED_FACING_CAMERA);
        /* if default camera facing direction is not found, use first camera */
        if (null == camId && (0 < cameraManager.getCameraIdList().length)) {
            camId = cameraManager.getCameraIdList()[0];
        }
        cameraIndex = findCameraIndex(camId);
    } catch (CameraAccessException e) {
        throw new Camera2Exception(e.getMessage());
    }
}
 
@Override
public synchronized void cycleCamera() {
    try {
        String[] camLst = cameraManager.getCameraIdList();
        swapCamera((cameraIndex + 1) % camLst.length);
    } catch (CameraAccessException e) {
        e.printStackTrace();
        throw new Camera2Exception(e.getMessage());
    }
}
 
@SuppressLint("all")
private void initCamera() {
    Log.d(LOG_TAG,"initCamera()");
    try {
        cameraState = CameraState.SETUP;
        // find desired camera & camera ouput size
        String[] cameraIdList = cameraManager.getCameraIdList();
        String camId = cameraIdList[cameraIndex];
        camFps = selectCameraFpsRange(camId, desiredFps);
        Size preferredSize = selectPreferredSize(
                camId,
                frameDimensions.getWidth(),
                frameDimensions.getHeight(),
                PIXEL_FORMAT
        );
        cameraFrame = ImageReader.newInstance(
                preferredSize.getWidth(),
                preferredSize.getHeight(),
                PIXEL_FORMAT,
                3
        );
        cameraFrame.setOnImageAvailableListener(frameObserver, cameraThreadHandler);
        characteristics = new CameraInfoCache(cameraManager.getCameraCharacteristics(camId));
        cameraManager.openCamera(camId, cameraObserver, cameraThreadHandler);
    } catch (CameraAccessException exp) {
        throw new Camera2Exception(exp.getMessage());
    }
}
 
private int doStartCapture() {
    Log.d(LOG_TAG,"doStartCapture enter");
    try {
        // create camera preview request
        if (isFrontCamera()) {
            captureRequestBuilder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
            captureRequestBuilder.addTarget(cameraFrame.getSurface());
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, camFps);
            captureRequestBuilder.set(
                    CaptureRequest.CONTROL_MODE,
                    CaptureRequest.CONTROL_MODE_USE_SCENE_MODE
            );
            captureRequestBuilder.set(
                    CaptureRequest.CONTROL_AF_MODE,
                    CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
            );
            captureRequestBuilder.set(
                    CaptureRequest.CONTROL_SCENE_MODE,
                    CaptureRequest.CONTROL_SCENE_MODE_FACE_PRIORITY
            );
            camera.createCaptureSession(
                    Arrays.asList(cameraFrame.getSurface()),
                    captureSessionObserver,
                    cameraThreadHandler
            );
        } else {
            captureRequestBuilder = camera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
            captureRequestBuilder.addTarget(cameraFrame.getSurface());
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, camFps);
            captureRequestBuilder.set(
                    CaptureRequest.CONTROL_AF_MODE,
                    CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
            );
            camera.createCaptureSession(
                    Arrays.asList(cameraFrame.getSurface()),
                    captureSessionObserver,
                    cameraThreadHandler
            );
        }
    } catch (CameraAccessException e) {
        throw new Camera2Exception(e.getMessage());
    }
    Log.d(LOG_TAG,"doStartCapture exit");
    return 0;
}