Вибрация блокируется камерой на Motorola Moto G04Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Вибрация блокируется камерой на Motorola Moto G04

Сообщение Anonymous »

У меня есть проблема, где, если я сканирую штрих -код с помощью CAMERAX и MLKIT, попробуйте сыграть вибрацию, используя класс вибратора, вибрация не будет играть. Я понял, что если я позвоню в cameraprovider.unbindall () после того, как анализатор считывает штрих -код, то вибратор успешно сыграет вибрацию. Но в моем случае моя камера всегда включена, чтобы включить сканирование и отключение и повторное определение камеры для каждого штрих-кода не идеально. Есть другой способ? Я уже пытался рассказать только об анализаторе вместо того, чтобы раскрыть все, но это не решило проблему.class BarcodeAnalyzerMainScreen(private val resultListener: BarcodeResultListener) : ImageAnalysis.Analyzer {
private val scanner = BarcodeScanning.getClient()
private var wait = AtomicBoolean(false)
private val context: Context = resultListener as Context
@androidx.annotation.OptIn(ExperimentalGetImage::class)
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image
if (mediaImage != null) {
val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
// Pass image to the scanner
scanner.process(image)
.addOnSuccessListener { barcodes ->
// Task completed successfully
if (barcodes.isNotEmpty()
&& wait.compareAndSet(false, true)) {
val barcode = barcodes[0]

val mainExecutor = ContextCompat.getMainExecutor(context)
mainExecutor.execute {
// This block now runs on the main thread.
resultListener.onBarcodeDetected(barcode.rawValue ?: "")
}
}
}
.addOnFailureListener { e ->
imageProxy.close()
throw Error(e)
}
.addOnCompleteListener {
imageProxy.close()
}
}
}

fun enableScanning() {
wait.set(false)
}}
< /code>
Код камеры: < /p>
class MainScreenCamera(
private val viewFinder: PreviewView,
private val cameraExecutor: ExecutorService,
private val context: Context,
private val lifecycleOwner: LifecycleOwner,
private val barcodeResultListener: BarcodeResultListener,
private val mainActivity: MainActivity
< /code>
)
{< /p>
fun startCamera() {
if (camera != null) {
checkForFlashSetting()
}
toggleFlashIcon()
if (isCameraStarted) return
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)

cameraProviderFuture.addListener({
// Used to bind the lifecycle of cameras to the lifecycle owner
cameraProvider = cameraProviderFuture.get()

// Preview
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewFinder.surfaceProvider)
}
barcodeAnalyzer = BarcodeAnalyzerMainScreen(barcodeResultListener)
// Setup the ImageAnalyzer for the ImageAnalysis use case
val imageAnalysisUseCase = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also {
it.setAnalyzer(cameraExecutor, barcodeAnalyzer!!)
}

// Select back camera as a default
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

try {
// Unbind use cases before rebinding
cameraProvider?.unbindAll()

// Bind use cases to camera
camera = cameraProvider?.bindToLifecycle(
lifecycleOwner, cameraSelector, preview, imageAnalysisUseCase
)

isCameraStarted = true
viewFinder.isVisible = true

checkForFlashSetting()

} catch (exc: Exception) {
if (DEBUG_FULL) {
Log.println(Log.DEBUG, "error", "Use case binding failed " + exc)
}
}

}, ContextCompat.getMainExecutor(context))
}

fun stopCamera() {
viewFinder.isVisible = false
if (!isCameraStarted) return
try {
cameraProvider?.unbindAll()
isCameraStarted = false
processingBarcode.set(false)
} catch (exc: Exception) {
if (DEBUG_FULL) {
Log.println(Log.DEBUG, "error", "Error stopping camera: $exc")
}
}
}

fun enableScanning() {
barcodeAnalyzer?.enableScanning()
}

fun allPermissionsGranted(requiredPermissions: Array): Boolean {
return requiredPermissions.all {
ContextCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
}

fun destroy() {
stopCamera()
}}


Подробнее здесь: https://stackoverflow.com/questions/797 ... a-moto-g04
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»