我写了一个基本的自定义相机,我最近更改为使用设备上的闪光灯(如果有)。一旦我做了更改,代码就像以前一样在我的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);
在这些设备上有经验的人能提供解决方案吗?
答案 0 :(得分:2)
经过上周的大量试验和错误后,我偶然发现了两个可能解决这个问题的方法,其中第一个对我没有任何意义:
强制缩放大于x1。出于某种原因,如果我将变焦设置为x1.2等,相机会像我期望的那样再次工作。
确保所选图片大小的宽高比与设备的原始宽高比相匹配。 S4的分辨率为1920x1080,因此任何符合此16:9比例的图像尺寸都可以与闪光灯一起使用。这更有意义,但是为什么flash会产生差异以及为什么不支持的任何东西应该由getSupportedPictureSizes()返回我不知道(尽管它们看起来似乎没有闪存。)
< / LI> 醇>目前我选择使用选项2并在我的其他设备上进行测试。 可能还值得一提的是,我在S4上的下一步是允许用户自己打开/关闭闪光灯/自动,但这需要每次都摧毁并重新创建相机。