takePicture()之后的行为在不同设备/ Android版本上有所不同

时间:2014-08-22 16:20:00

标签: android

我有一个带有android 4.4.2的索尼xperia Z,我有一个可以拍照的应用程序。

它有一个用于预览的TextureView,所以我有一行说

camera.setPreviewTexture(preview_texture_view.getSurfaceTexture());

然后......

camera.startPreview();

该应用程序现在可以连续预览相机看到的内容。然后我可以按一个按钮,执行以下操作:

camera.takePicture(mShutterCallback, mPictureCallbackRaw, this);    

拍摄照片并保存。预览仍然有效(这正是我想要的)。

到目前为止一切顺利。但是当我尝试在我拥有的原型设备(运行Android 4.3)上运行完全相同的应用程序时,会出现问题。我看到预览确定,当我按下我的按钮时,照片被拍摄并保存好了。但预览现已冻结。该计划尚未崩溃。 takePicture()没有任何异常地返回。

我的怀疑是,在Android的不同版本中,可能会定义takePicture()在完成后以某种方式重置(?)相机的行为 - 也许是在4.3和4.4.1之间进行的一些设计更改,或许不同的硬件可能会有所作为。

有没有人遇到过类似的问题?如果是这样,它是如何解决的?

编辑:我试过把camera.startPreview();在我的PictureCallback的onPictureTaken方法中,但它立即崩溃:RuntimException startPreview failed.

1 个答案:

答案 0 :(得分:0)

您需要自己重启预览,例如来自onPictureTaken()。使用takePicture()自动停止预览,因此您不必手动停止预览,但必须手动重新启动它。

至于为什么你的Xperia Z表现得如此,你将不得不问索尼。