Вопрос здесь относительно CameraX и его случая использования на ImageAnaysis. Я не уверен, что я плохо использую CameraX или это ошибка. Я использую последнюю версию CameraX в сборке Gradle на android, и большая часть моего потребления процессора уходит в USrfaceTextureRenderer. Мы строго используем сценарий использования ImageAnalysis, но система по-прежнему использует ЦП для визуализации изображения, даже если оно не требуется для нашего приложения. Есть ли способ отключить рендеринг поверхности? Вот мой код и импорт Gradle:
CODE
fun start(analyzer: ImageAnalysis.Analyzer) {
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener(Runnable {
// Camera provider is now guaranteed to be available
val cameraProvider = cameraProviderFuture.get()
val imageAnalysis = ImageAnalysis.Builder()
.setTargetResolution(Size(480, 640))
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
// Choose the camera by requiring a lens facing
val cameraSelector = CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_FRONT)
.build()
imageAnalysis.setAnalyzer(analyzerExecutor, analyzer)
// Attach use cases to the camera with the same lifecycle owner
val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, imageAnalysis)
}, ContextCompat.getMainExecutor(context))
}
GRADLE
def camerax_version = "1.0.0-beta01"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
implementation("androidx.camera:camera-core:${camerax_version}") {
exclude group: 'com.google.guava'
}
implementation("androidx.camera:camera-camera2:${camerax_version}") {
exclude group: 'com.google.guava'
}
implementation "androidx.camera:camera-lifecycle:${camerax_version}"