Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- override fun onOpened(camera: CameraDevice) {
- val barcodeDetector = BarcodeDetector.Builder(context!!)
- .setBarcodeFormats(Barcode.QR_CODE or Barcode.DATA_MATRIX)
- .build()
- if (!barcodeDetector.isOperational) {
- // TODO
- }
- val imgReader = ImageReader.newInstance(desiredWidth, desiredHeight, ImageFormat.JPEG, 1)
- imgReader.setOnImageAvailableListener({ reader ->
- val cameraImage = reader.acquireNextImage()
- val buffer = cameraImage.planes.first().buffer
- val bytes = ByteArray(buffer.capacity())
- buffer.get(bytes)
- val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.count(), null)
- val frameToProcess = Frame.Builder().setBitmap(bitmap).build()
- val barcodeResults = barcodeDetector.detect(frameToProcess)
- if (barcodeResults.size() > 0) {
- Log.d(TAG, "Barcode detected!")
- Toast.makeText(context!!, "Barcode detected!", Toast.LENGTH_SHORT).show()
- } else {
- Log.d(TAG, "No barcode found")
- }
- cameraImage.close()
- }, cameraBkgHandler)
- val captureStateCallback = object : CameraCaptureSession.StateCallback() {
- override fun onConfigured(session: CameraCaptureSession) {
- val builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)
- builder.addTarget(binding.cameraPreview.holder.surface)
- builder.addTarget(imgReader.surface)
- session.setRepeatingRequest(builder.build(), null, null)
- }
- override fun onConfigureFailed(session: CameraCaptureSession) {
- // TODO
- Log.d(TAG, "onConfigureFailed")
- }
- }
- camera.createCaptureSession(
- listOf(binding.cameraPreview.holder.surface, imgReader.surface),
- captureStateCallback,
- cameraBkgHandler
- )
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement