找不到将 Camera2Config 或 Camera2Config.Extender 设置为 CameraX 的任何示例。
您能否提供一个示例,将这些对象设置为 CameraX ,以便例如获取回调方法调用。
基本上我想以 androidx.camera.camera2.impl.Camera.State 的格式获取Camera的状态。
答案 0 :(得分:4)
我最近也需要这个,在撰写本文时,这是对我有效的方式。 请注意,由于CameraX处于Alpha状态,这种方法可能会停止工作。
基本上,您需要使用Config.ExtendableBuilder
并将其传递给Camera2Config.Extender
的构造函数,然后再在其上调用build()
并创建UseCase。 >
例如,我从CameraX sample那里获取了代码,并将其调整为使用Camera2Config.Extender
。
// Set up the view finder use case to display camera preview
val viewFinderConfigBuilder = 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)
}
// Create the extender and pass in the config builder we want to extend
val previewExtender = Camera2Config.Extender(viewFinderConfigBuilder)
// Listen to camera state changes
previewExtender.setDeviceStateCallback(object : CameraDevice.StateCallback() {
// implementation omitted for sake of simplicity
})
// Build your config as usual and create your wanted UseCase with it
val viewFinderConfig = viewFinderConfigBuilder.build()
// Use the auto-fit preview builder to automatically handle size and orientation changes
preview = AutoFitPreviewBuilder.build(viewFinderConfig, viewFinder)
我也建议不要使用任何实现细节,而应像上面的示例一样使用CameraDevice.StateCallback
。