我实现了使用的iOS 4 & 5提供的AVFoundation框架摄像头,但一直在经历与captureStillImageAsynchronouslyFromConnection:completionHandler:
功能,其中完成处理程序块是从来没有所谓不一致的问题。在这种情况下快门声音不会启动并且预览会冻结。的iOS AVFoundation captureStillImageAsynchronouslyFromConnection:completionHandler:无限期地挂起
我已经遵循苹果(WWDC 2010 & 2011视频)和非Apple指南(博客和SO帖子)来实现照片分辨率下的静态图像捕获,但几乎没有任何改进。我已经能够在一定程度上一致地重现了下列条件下:
- 如果我设置闪到
AVCaptureFlashModeAuto
,并采取在低光照片,它挂起,从不完成块。闪光灯闪光,但快门声音不响。使用相同的代码,我可以在快门声闪烁的正常光线下拍摄照片,闪光灯不闪光,并且完成模块运行。 - 如果我没有设置
flashMode
或将其设置为关闭,我可以拍摄一些照片,但在少量数字后(通常在1到5之间),完成块会停止发射。对于澄清,方案可能是:- 采取在确认屏幕中的照片,并查看
- 回到拍照画面
- 重复1次& 2几次
- 命中拍照,并将它挂在完成块之前。
我实现
我有一个视图控制器处理的接口和独立的类来处理所有的AVFoundation东西。处理AVFoundation内容的独立类的实例变量位于ViewController中。它与示例实现不同,但我不明白为什么它会导致这种偶然的错误。
更多的观测
- 即使检查
[stillImageOutput isCapturingStillImage]
时,它将继续返回false继续。如果我切换到另一个应用程序运行captureStillImageAsynchronouslyFromConnection
功能 - ,锁定手机,采取某些其他诉讼在应用程序中,或点击“拍照”按钮一百万次,我就可以获得完成块以返回错误。他们根据哪个行动而不同。常见的是11800,11801和11830.它们似乎与挂起无关。
- 我已经让我们的测试手机(iPhone 4 GSM)坐了一个小时,看它是否会最终处理。没有骰子。
我很想知道,如果有什么东西,我可能会错过,属性未设置,或与周围的工作一个已知的问题。
谢谢。
(我看到一个类似的帖子,但没有答案解决了我的问题,我需要在应用程序中使用Photo res。供参考: iPhone SDK 4 AVFoundation - How to use captureStillImageAsynchronouslyFromConnection correctly?)