因此,我从使用旧版相机api迁移到了CameraX,尽管设置非常简单,但我注意到了一个问题。现在,开始显示预览的时间似乎比以前快了将近两倍。 我正在测试银河s7。 我的代码如下:
val previewConfig = PreviewConfig.Builder().apply {
setTargetAspectRatio(Rational(1, 1))
setTargetResolution(Size(binding.codeScannerView.width, binding.codeScannerView.height))
}.build()
val preview = Preview(previewConfig)
preview.setOnPreviewOutputUpdateListener { preview ->
val parent = binding.codeScannerView.parent as ViewGroup
parent.removeView(binding.codeScannerView)
parent.addView(binding.codeScannerView, 0)
binding.codeScannerView.surfaceTexture = preview.surfaceTexture
}
val analyzerConfig = ImageAnalysisConfig.Builder().apply {
val analyzerThread = HandlerThread(
"QrCodeReader").apply { start() }
setCallbackHandler(Handler(analyzerThread.looper))
setImageReaderMode(
ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
}.build()
val analyzerUseCase = ImageAnalysis(analyzerConfig).apply {
analyzer = QrCodeAnalyzer(requireContext(), Handler(), { qrCode ->
if (activity == null) {
return@QrCodeAnalyzer
}
presenter.disableCameraPreview()
presenter.updateTable(qrCode.toLowerCase().parseTableId(), isFromOrder, Screens.MENU_SCREEN)
})
}
CameraX.bindToLifecycle(this, preview, analyzerUseCase)
关于如何使其更快显示的任何想法?
P。 S.我也偶尔会看到预览撕裂
答案 0 :(得分:2)
因此,我花了很多时间试图找到解决方案,但无济于事。 我什至遇到过多个问题(使用alpha04):
最后,我刚刚开始寻找其他库,并遇到了https://github.com/natario1/CameraView,这是迄今为止我所见过的最容易使用的库。即使在后台运行分析仪步骤的情况下,它也比camerax简单得多,似乎可以正常工作,加载速度更快,以2到3倍的FPS渲染预览。到目前为止,我还没有问题。
尽管我坚信,但我在使用CameraX时缺少了一些东西,并且可能有一种使之工作的方法,最后,它似乎暂时不值得,我可能会等到出现问题为止。生产就绪版本,直到我再试一次。