我正在使用此相机代码要求相机旋转捕获的图像数据:
Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);
除了Droid之外,这似乎适用于所有手机。有没有人见过这个?图像数据始终是横向的,但是,Droid上的本机相机应用程序可以生成纵向图像。
我想知道Droid是否只会尊重新的Camera.Parameters.setRotation()
方法,但这似乎只能在API级别5中使用?
答案 0 :(得分:2)
setRotation
在Nexus One上似乎对我不起作用,但我确实按照Android相机应用程序本身的示例进行图像旋转工作。
源代码可在此处获得:
https://android.googlesource.com/platform/packages/apps/Camera
从Camera.java开始,但您也将查看ImageManager.java,Util.java和其他文件。
基本思路是,您可以聆听方向更改并捕捉拍摄照片时的方向。然后,当你在回调中获得图片字节时,你操纵位图,在位图上进行旋转。然后将旋转的位图转换回jpeg。当你完成后,你将不得不从相机应用程序中复制一些令人震惊的代码,仅用于此轮换。
答案 1 :(得分:0)
Droid运行Android 2.0(现在是2.0.1),分别是API级别5和6。
所以Droid很可能只尊重(更明智的)2.0+ API进行轮换。
但是,我猜您关注的是各种设备类型和操作系统版本之间的兼容性,因此我想在检测到操作系统版本后,必须通过反射调用2.0+ API(使用android.os.Build.VERSION_CODES
)。 / p>
答案 2 :(得分:0)
旋转可以只存储在jpeg exif标头中,如setRotation文档中所述。在Droid上实际上是这样的。您可以使用像jhead这样的jpeg标头阅读工具来验证这一点。您还可以使用ExifInterface API来阅读程序中的方向标记。