【问题标题】:Behaviour after takePicture() different on different devices/Android versionstakePicture() 之后的行为在不同的设备/Android 版本上有所不同
【发布时间】:2014-08-22 16:20:00
【问题描述】:

我有一台搭载 android 4.4.2 的 Sony 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.

【问题讨论】:

  • 在 Xperia Z3 上遇到完全相同的问题,在 Xperia Z2、Xperia Z1、Xperia ZR 和 Xperia T2 Ultra 上运行良好...预览被冻结,但即使在重新开始预览,刚刚冻结
  • 在使用这个问题的答案后得到了一些修复,虽然非常烦人:stackoverflow.com/questions/8257318/…

标签: android


【解决方案1】:

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

至于您的 Xperia Z 为何如此运行,您必须询问 SONY。

【讨论】:

  • @Mick:与向您提供原型设备的人交谈,询问他们为什么他们的相机实施存在问题。也欢迎您尝试my camera library 及其演示应用程序,该应用程序可以在数十种设备上正确重新启动预览。如果您的原型设备出现同样的问题,则说明该设备本身表现不佳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2016-06-02
  • 2021-01-24
相关资源
最近更新 更多