1

我正在使用此相机代码来要求相机旋转捕获的图像数据:

Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);

这似乎适用于所有手机,除了 Droid。有没有其他人看过这个?图像数据始终是横向的,但是,Droid 上的本机相机应用程序可以生成纵向图像。

我想知道 Droid 是否只会尊重新Camera.Parameters.setRotation()方法,但这似乎只在 API 级别 5 中可用?

4

3 回答 3

2

setRotation在 Nexus One 上似乎也不适用于我,但我确实通过遵循 android Camera 应用程序本身的示例使图像旋转工作。
源代码可在此处获得: https ://android.googlesource.com/platform/packages/apps/Camera

从 Camera.java 开始,但您还将查看 ImageManager.java、Util.java 和其他文件。

基本思想是,您聆听方向变化并捕捉拍摄照片时的方向。然后,当您在回调中获取图片字节时,您操作位图,对位图进行旋转。然后将旋转的位图转换回 jpeg。完成后,您将不得不从相机应用程序中复制大量代码来进行旋转。

于 2010-02-14T03:31:42.440 回答
0

旋转可能只是存储在 jpeg exif 标头中,如 setRotation 文档中所述。在 Droid 上,情况确实如此。您可以使用 jhead 等 jpeg 标头读取工具来验证这一点。您还可以使用ExifInterface API来读取程序中的方向标签。

于 2009-12-20T12:38:11.077 回答
0

Droid 运行 Android 2.0(好吧,现在是 2.0.1),分别是 API 级别 5 和 6。

因此,Droid 很可能只尊重(更明智的)2.0+ API 进行旋转。

但是,我猜您担心的是跨一系列设备类型和操作系统版本的兼容性,所以我想您必须在检测到操作系统版本(使用android.os.Build.VERSION_CODES)后通过反射调用 2.0+ API。

于 2009-12-20T00:11:22.303 回答