The SENSOR_SENSITIVITY and SENSOR_EXPOSURE_TIME settings are not applied when capturing

24 Views Asked by At

I'm trying to make a simple application. The SENSOR_SENSITIVITY and SENSOR_EXPOSURE_TIME settings are not applied when capturing. `cameraManager.openCamera(cameraId, object : CameraDevice.StateCallback() { override fun onOpened(camera: CameraDevice) { cameraDevice = camera captureRequest = camera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)

    captureRequest.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF)
    captureRequest.set(CaptureRequest.SENSOR_SENSITIVITY, 2000)
    captureRequest.set(CaptureRequest.SENSOR_EXPOSURE_TIME, 10000000000)

    imageReader = ImageReader.newInstance(
        3000, // Replace with the desired image width
        3000, // Replace with the desired image height
        ImageFormat.JPEG, // Image format, you can change it if needed
        1 // Max images that can be accessed at once
    )

    val captureRequest = captureRequest.build()

    cameraDevice.createCaptureSession(
        listOf(imageReader.surface, imageReader!!.surface),
        object : CameraCaptureSession.StateCallback() {
            override fun onConfigured(session: CameraCaptureSession) {
                try {
                    session.capture(captureRequest, object : CameraCaptureSession.CaptureCallback() {
                        override fun onCaptureCompleted(
                            session: CameraCaptureSession,
                            request: CaptureRequest,
                            result: TotalCaptureResult
                        ) {
                                    
                            session.close()

                        }`

I get an error

Session 0: Exception while stopping repeating: android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): cancelRequest:652: Camera 0: Error clearing streaming request: Function not implemented (-38)

I will be glad of any information.

1

There are 1 best solutions below

0
Xi 张熹 On

Your device may not support the values you set. e.g. you can get a valid rage of by:

val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraIdList = cameraManager.cameraIdList
val characteristics = cameraManager.getCameraCharacteristics(cameraIdList[0])
val exposureTimeRange = characteristics.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE)