0

如果我在 HTC Hero (CyanogenMod 6.1.0) 上运行这个演示,我会从 Camera.startPreview() 方法中得到一个 RuntimeException。

这似乎与此处描述的问题相同:

Android 相机将无法工作。开始预览失败

也就是说,在设置预览大小的时候需要左右切换宽度和高度。确实这可行,但随后会破坏其他设备上的演示。

现在,我了解演示的目的是展示如何启动和运行相机预览(因此这个问题超出了它的范围)但我想知道是否有一个干净的解决方法,因为我不想要在我的代码中加入“if HTC_HERO”风格的逻辑(无论如何,我确信其他设备也会有类似的行为)?

一种技巧可能是捕获异常,然后使用交换的参数重新调用 setPreviewSize() 方法,但我希望找到更好的方法。

4

1 回答 1

1

我不想在我的代码中加入“if HTC_HERO”风格的逻辑(无论如何,我确信其他设备也会有类似的行为)?

在某种程度上,这是不可避免的,如果你试图让 100% 的设备运行 100% 的任意 ROM 模块,因为错误会比比皆是。

一种技巧可能是捕获异常,然后使用交换的参数重新调用 setPreviewSize() 方法,但我希望找到更好的方法。

理论上,应该有一些通用的预览尺寸代码来确定正确的尺寸并进行SurfaceView相应的配置。如果 AOSP 相机应用程序的代码有任何迹象,则此代码将非常庞大,并且仍然不太可能在任何地方都有效(例如,违反“通用”解决方案的作者所考虑的任何假设的不规范设备或 ROM 模块)。

您可能希望检查像 ZXing 的条码扫描仪这样的项目,看看他们是如何解决问题的。

于 2012-03-25T16:55:35.883 回答