CameraX相机加载速度慢

时间:2019-08-13 06:22:36

标签: android android-camerax

因此,我从使用旧版相机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.我也偶尔会看到预览撕裂

1 个答案:

答案 0 :(得分:2)

因此,我花了很多时间试图找到解决方案,但无济于事。 我什至遇到过多个问题(使用alpha04):

  • 打开/关闭相机时,随机SIGSEGV崩溃
  • 我尝试了来自google的示例项目和代码实验室,这些示例项目和代码实验室在测试的设备上也无法100%地工作
  • 在某个时候我收到通知 相机被用于背景,即使它被绑定到 生命周期和关闭的窗口,这是我希望用户得到的最后一件事 看。
  • 相机的加载确实确实比较慢,即使关闭分析仪,我的FPS也很糟糕。
  • 分辨率将降至最低,并且某些设备上的预览像素化
  • 每隔一段时间,预览就会开始垂直撕裂
  • 分析器框架的尺寸与预览的尺寸不同,并且存在一些长宽比问题,需要花费很多时间才能解决。
  • 要运行,仍然需要很多样板
  • 几乎没有用于极端情况的文档,因此大多数内容都是反复试验。

最后,我刚刚开始寻找其他库,并遇到了https://github.com/natario1/CameraView,这是迄今为止我所见过的最容易使用的库。即使在后台运行分析仪步骤的情况下,它也比camerax简单得多,似乎可以正常工作,加载速度更快,以2到3倍的FPS渲染预览。到目前为止,我还没有问题。

尽管我坚信,但我在使用CameraX时缺少了一些东西,并且可能有一种使之工作的方法,最后,它似乎暂时不值得,我可能会等到出现问题为止。生产就绪版本,直到我再试一次。