Java CameraCaptureSession abortCapture性能非常差

Java CameraCaptureSession abortCapture性能非常差,java,android,camera,camera2,Java,Android,Camera,Camera2,要使用新状态(焦距、曝光时间)更新相机捕获会话,似乎必须在当前会话中调用abortCaptures。不过,调用此命令大约需要0.3秒。视口在此期间也会冻结。似乎其他应用程序在不结巴的情况下改变了焦点,但这些应用程序是如何做到的 如果我在我的会话中不调用abortCaptures,它最终会更新到一个新的焦距,而不会结巴,但只会在大约10秒后 源文件: 您不需要调用abortCaptures来更改相机捕获参数-通常,只有在您希望快速更改到新的捕获会话时才需要它,并且只有当您有新的目标曲面时才需要它。

要使用新状态(焦距、曝光时间)更新相机捕获会话,似乎必须在当前会话中调用abortCaptures。不过,调用此命令大约需要0.3秒。视口在此期间也会冻结。似乎其他应用程序在不结巴的情况下改变了焦点,但这些应用程序是如何做到的

如果我在我的会话中不调用abortCaptures,它最终会更新到一个新的焦距,而不会结巴,但只会在大约10秒后

源文件:

您不需要调用abortCaptures来更改相机捕获参数-通常,只有在您希望快速更改到新的捕获会话时才需要它,并且只有当您有新的目标曲面时才需要它。例如从照片模式切换到视频模式


只需在“捕获请求生成器”(capture request builder)中更改焦距或曝光设置,生成请求并将其提交到相机设备(可能通过setRepeatingRequest())。

谢谢!我并不知道setRepeatingRequest的存在。。我在计时器中调用了捕获,除了焦点等没有更新外,它工作正常。setRepeatingRequest工作正常请看一看Google示例,了解如何连接一个基本的摄像头应用程序-希望它会有所帮助。@EddyTalvala如果我们有一个repeatingRequest来捕获视频,那么我们必须调用abortCapture来停止该重复请求。在这种情况下,大约需要3-5秒的延迟。这里的替代方案是什么?我也尝试过停止捕获,但这也需要很多时间。3-5秒似乎很长,但如果abortCaptures()和stopRepeating()都需要那么长的时间,那么您最好使用stopRepeating(),因为它更安全。但是,如果您只是停止录制但继续预览,则可以仅使用预览替换重复请求,而不停止/中止以前的请求。但细节将取决于您的实际用例。