【发布时间】:2019-11-26 15:08:25
【问题描述】:
我正在学习 CameraX API,CameraXBasic 是一个办公室示例代码。
CameraFragment.kt 在 CameraXBasic 中显示一个真实的相机预览,我希望添加一个 Switch 按钮来冻结当前预览,通过它即使我移动手机镜头,图片也不会改变。
如何使用 CameraX API?谢谢!
CameraFragment.kt
private lateinit var viewFinder: TextureView
private fun bindCameraUseCases() {
// Get screen metrics used to setup camera for full screen resolution
val metrics = DisplayMetrics().also { viewFinder.display.getRealMetrics(it) }
val screenAspectRatio = Rational(metrics.widthPixels, metrics.heightPixels)
Log.d(TAG, "Screen metrics: ${metrics.widthPixels} x ${metrics.heightPixels}")
// Set up the view finder use case to display camera preview
val viewFinderConfig = PreviewConfig.Builder().apply {
setLensFacing(lensFacing)
// We request aspect ratio but no resolution to let CameraX optimize our use cases
setTargetAspectRatio(screenAspectRatio)
// Set initial target rotation, we will have to call this again if rotation changes
// during the lifecycle of this use case
setTargetRotation(viewFinder.display.rotation)
}.build()
// Use the auto-fit preview builder to automatically handle size and orientation changes
preview = AutoFitPreviewBuilder.build(viewFinderConfig, viewFinder)
....
CameraX.bindToLifecycle(
viewLifecycleOwner, preview, imageCapture, imageAnalyzer)
}
【问题讨论】:
-
我还没有尝试过,但似乎
AutoFitPreviewBuilder.kt中的displayManager.unregisterDisplayListener可能是一种方法。 -
谢谢!但你的代码不起作用。
-
那
unregisterDisplayListener会做什么?把视图变黑? -
unregisterDisplayListener做笔记