Merge pull request #195 from cyBerta/focus

Camera focus when reading QR
This commit is contained in:
pokamest 2023-03-28 15:21:54 +02:00 committed by GitHub
commit 1b44a01efd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,11 +2,11 @@ package org.amnezia.vpn.qt
import android.Manifest import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.MotionEvent
import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.* import androidx.camera.core.*
@ -17,9 +17,9 @@ import com.google.mlkit.vision.barcode.BarcodeScannerOptions
import com.google.mlkit.vision.barcode.BarcodeScanning import com.google.mlkit.vision.barcode.BarcodeScanning
import com.google.mlkit.vision.barcode.common.Barcode import com.google.mlkit.vision.barcode.common.Barcode
import com.google.mlkit.vision.common.InputImage import com.google.mlkit.vision.common.InputImage
import org.amnezia.vpn.R
import java.util.concurrent.ExecutorService import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors import java.util.concurrent.Executors
import org.amnezia.vpn.R
class CameraActivity : AppCompatActivity() { class CameraActivity : AppCompatActivity() {
@ -78,7 +78,7 @@ class CameraActivity : AppCompatActivity() {
} }
} }
@SuppressLint("UnsafeOptInUsageError") @SuppressLint("UnsafeOptInUsageError", "ClickableViewAccessibility")
private fun configureVideoPreview() { private fun configureVideoPreview() {
val cameraProviderFuture = ProcessCameraProvider.getInstance(this) val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
val imageCapture = ImageCapture.Builder().build() val imageCapture = ImageCapture.Builder().build()
@ -101,7 +101,20 @@ class CameraActivity : AppCompatActivity() {
try { try {
preview.setSurfaceProvider(viewFinder.surfaceProvider) preview.setSurfaceProvider(viewFinder.surfaceProvider)
cameraProvider.unbindAll() cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture, analysisUseCase) val camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture, analysisUseCase)
viewFinder.setOnTouchListener(View.OnTouchListener { view: View, motionEvent: MotionEvent ->
when (motionEvent.action) {
MotionEvent.ACTION_DOWN -> return@OnTouchListener true
MotionEvent.ACTION_UP -> {
val factory = viewFinder.meteringPointFactory
val point = factory.createPoint(motionEvent.x, motionEvent.y)
val action = FocusMeteringAction.Builder(point).build()
camera.cameraControl.startFocusAndMetering(action)
return@OnTouchListener true
}
else -> return@OnTouchListener false
}
})
} catch(exc: Exception) { } catch(exc: Exception) {
Log.e("WUTT", "Use case binding failed", exc) Log.e("WUTT", "Use case binding failed", exc)
} }
@ -146,7 +159,6 @@ class CameraActivity : AppCompatActivity() {
} }
} }
} }
imageProxy.close() imageProxy.close()
} }
.addOnFailureListener { .addOnFailureListener {