// CameraX core library using the camera2 implementation def camerax_version = "1.0.0-beta01" implementation "androidx.camera:camera-camera2:${camerax_version}" // If you want to use the CameraX view class implementation "androidx.camera:camera-view:1.0.0-alpha08" // If you want to use the CameraX extensions library implementation "androidx.camera:camera-extensions:1.0.0-alpha08" // If you want to use the CameraX lifecycle library implementation "androidx.camera:camera-lifecycle:${camerax_version}"
val cameraSelector = CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build() cameraProviderFuture.addListener(Runnable { val cameraProvider = cameraProviderFuture.get() val camera = cameraProvider.bindToLifecycle(this, cameraSelector,imagePreview) }, ContextCompat.getMainExecutor(this)) } //... }
val cameraSelector = CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build() cameraProviderFuture.addListener(Runnable { val cameraProvider = cameraProviderFuture.get() val camera = cameraProvider.bindToLifecycle(this, cameraSelector,imagePreview,imageAnalysis) }, ContextCompat.getMainExecutor(this)) }
/** * Helper extension function used to extract a byte array from an * image plane buffer */ privatefun ByteBuffer.toByteArray(): ByteArray { rewind() // Rewind the buffer to zero valdata = ByteArray(remaining()) get(data) // Copy the buffer into a byte array returndata// Return the byte array }
overridefunanalyze(image: ImageProxy) { val currentTimestamp = System.currentTimeMillis() // Calculate the average luma no more often than every second if (currentTimestamp - lastAnalyzedTimestamp >= TimeUnit.SECONDS.toMillis(1)) { // Since format in ImageAnalysis is YUV, image.planes[0] // contains the Y (luminance) plane val buffer = image.planes[0].buffer // Extract image data from callback object valdata = buffer.toByteArray() // Convert the data into an array of pixel values val pixels = data.map { it.toInt() and 0xFF } // Compute average luminance for the image val luma = pixels.average() // Log the new luma value Log.d("CameraX", "Average luminosity: $luma") // Update timestamp of last analyzed frame lastAnalyzedTimestamp = currentTimestamp } image.close() } }
val cameraSelector = CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build() cameraProviderFuture.addListener(Runnable { val cameraProvider = cameraProviderFuture.get() val camera = cameraProvider.bindToLifecycle(this, cameraSelector,imagePreview,imageAnalysis,imageCapture) }, ContextCompat.getMainExecutor(this)) }