我正在做的事情看起来似乎很简单,但是在阅读了我能找到的每一个Stackoverflow答案并搜索了每一篇文章后,我仍然不知所措。
我正在使用预览SurfaceView,在我的AndroidManifest.xml中将屏幕方向设置为“landscape”,从活动中捕获图像。
我遵循了示例相机应用程序代码,并认为一切都正常工作,直到我在几个运行1.5版本的Motorola设备上尝试我的应用程序时才意识到问题。
我已经成功运行OrientationEventListener,并使用反射检查是否设置了旋转,如下所示:
这些摩托罗拉设备出了什么问题?我原以为我的问题是摩托罗拉相机驱动程序没有旋转图像,因此找到了适用于Android的Sanselan EXIF读取类,并准备自己旋转它们。有趣的是,存在EXIF头但没有旋转元素。
如果我手动将旋转角度设置为90度,则摩托罗拉设备上的图像效果完美,但现在G1和NexusOne的图像旋转了90度(不是我想要的)。这里肯定有些事情我没有理解。
我怀疑这不是1.5的问题,否则就会有人发布相关信息了吧?
我正在使用预览SurfaceView,在我的AndroidManifest.xml中将屏幕方向设置为“landscape”,从活动中捕获图像。
我遵循了示例相机应用程序代码,并认为一切都正常工作,直到我在几个运行1.5版本的Motorola设备上尝试我的应用程序时才意识到问题。
我已经成功运行OrientationEventListener,并使用反射检查是否设置了旋转,如下所示:
final int latchedOrientation = roundOrientation(mLastOrientation + 90);
Parameters parameters = preview.camera.getParameters();
JPLog.d("Setting camera rotation = %d", latchedOrientation);
try {
// if >= 2.0
Method method = Camera.Parameters.class.getMethod("setRotation",
int.class);
if(method != null) {
method.invoke(parameters, latchedOrientation);
}
} catch(Throwable t) {
// if < 2.0
parameters.set("rotation", latchedOrientation);
}
preview.camera.setParameters(parameters);
- 运作良好。latchedOrientation = 0,图片没有EXIF头中的任何旋转。
- 也运作良好。latchedOrientation = 0,图片OK。
- 图片被旋转了。latchedOrientation = 0,图片中没有EXIF旋转元素。
- 图片被旋转了。latchedOrientation = 0,图片中没有EXIF旋转元素。这些摩托罗拉设备出了什么问题?我原以为我的问题是摩托罗拉相机驱动程序没有旋转图像,因此找到了适用于Android的Sanselan EXIF读取类,并准备自己旋转它们。有趣的是,存在EXIF头但没有旋转元素。
如果我手动将旋转角度设置为90度,则摩托罗拉设备上的图像效果完美,但现在G1和NexusOne的图像旋转了90度(不是我想要的)。这里肯定有些事情我没有理解。
我怀疑这不是1.5的问题,否则就会有人发布相关信息了吧?