如果在S4设备上使用闪光灯,则自定义相机PictureCallback不会运行

时间:2014-11-04 11:54:02

标签: android android-camera

我写了一个基本的自定义相机,我最近更改为使用设备上的闪光灯(如果有)。一旦我做了更改,代码就像以前一样在我的HTC One Mini 2上运行良好,但不再适用于我的Galaxy S4。单步执行后,发现我的jpeg回调从未在S4上到达,而是运行原始回调,但提供了空字节[]。

我发现了类似的问题: S4 Flash Problem

这似乎证实这些设备存在问题和解决方案,但该解决方案尚未记录。

要重新进行迭代,只要我不打开闪光灯,代码就能在S4上正常工作:

Camera.Parameters p = mCamera.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);//Or FLASH_MODE_ON
mCamera.setParameters(p);

在这些设备上有经验的人能提供解决方案吗?

1 个答案:

答案 0 :(得分:2)

经过上周的大量试验和错误后,我偶然发现了两个可能解决这个问题的方法,其中第一个对我没有任何意义:

  1. 强制缩放大于x1。出于某种原因,如果我将变焦设置为x1.2等,相机会像我期望的那样再次工作。

  2. 确保所选图片大小的宽高比​​与设备的原始宽高比相匹配。 S4的分辨率为1920x1080,因此任何符合此16:9比例的图像尺寸都可以与闪光灯一起使用。这更有意义,但是为什么flash会产生差异以及为什么不支持的任何东西应该由getSupportedPictureSizes()返回我不知道(尽管它们看起来似乎没有闪存。)

    < / LI>

    目前我选择使用选项2并在我的其他设备上进行测试。 可能还值得一提的是,我在S4上的下一步是允许用户自己打开/关闭闪光灯/自动,但这需要每次都摧毁并重新创建相机。