我有一个带有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.
答案 0 :(得分:0)
您需要自己重启预览,例如来自onPictureTaken()
。使用takePicture()
自动停止预览,因此您不必手动停止预览,但必须手动重新启动它。
至于为什么你的Xperia Z表现得如此,你将不得不问索尼。