我正在处理原始相机图像,但需要在捕获图像后重新启动预览。当我在takePicture之后调用startPreview()时,安卓系统挂起了,因为相机还在使用中。我一直等到原始图像写入磁盘后,但相机仍在使用中,因此开始预览仍然挂起系统。
camera.takePicture(null, null, null);
(test needed here){
camera.startPreview();
}将开始预览放在rawcallback中会挂起android。
调用takePicture时,jpegCallback发生在相机完成之后,因此可以安全地启动预览,但这也会创建一个.jpg。
问题是,在takePicture之后,有什么方法可以确定摄像头何时空闲?(除了jpegCallback?)。
我已经找到了解决这个问题的方法,比如在计时器上启动预览,但仍然想知道是否有任何方法来确定相机的实际状态,以及何时保存以重新启动预览的测试方法。
发布于 2013-03-05 03:31:32
调用takePicture() function后,必须等到JPEG回调返回后,摄像头才能再次使用。没有办法监控它的状态。该文档明确说明了以下内容:
在调用此方法之后,在
回调返回之前,不得调用startPreview()或拍摄另一张图片。
如果您需要一些快速的方法来抓取帧(即图像),而无需停止和重新启动相机预览,您可以实现PreviewCallback接口,它将允许您在根本不停止预览的情况下抓取预览帧。只需记住,您将需要将它们从YUV格式转换(使用安卓的YUVImage class这并不困难。
https://stackoverflow.com/questions/15209409
复制相似问题