Droid的设备 - 不会从旋转相机拍摄的图像? (Camera.Parameters)
-
20-09-2019 - |
题
我使用这个照相机的代码询问照相机旋转所捕捉的图像数据:
Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);
这似乎是工作在所有的手机,除了在Droid。有没有其他人看到了这一点?图像数据是永远的风景,然而,在Droid的原生相机应用产生的纵向图像确定。
我不知道是否对Droid只会尊重新Camera.Parameters.setRotation()
方法,但这似乎只能在API级别5?
解决方案
旋转可以仅被存储在JPEG Exif头信息作为setRotation文件中解释。在Droid的,其实是这样的。您可以使用JPEG头读取工具,如jhead的验证这一点。您也可以使用 ExifInterface API 阅读方向标签在你的程序
其他提示
setRotation
似乎也没有为我工作在Nexus One,但我没有得到图像旋转按照Android相机应用程序本身的示例正常工作。结果
源代码可以在这里:
https://android.googlesource.com/platform/packages/apps/Camera
先从Camera.java,但你也可以寻找ImageManager.java,Util.java,和其他文件。
其基本思想是,你听的方向变化和捕捉到的方向是对你嚷嚷图片中的什么时间。然后,当你在回调的图片字节,你操纵的位图,做的位图的旋转。然后转换为旋转后的位回JPEG。当你完成,你就不得不从相机应用程序代码的一个令人震惊的量只是复制该循环。
在Droid运行Android 2.0(当然,现在2.0.1),其API级别5和6,分别
因此,它很可能是在Droid只尊重用于旋转的(更明智)2.0+ API。
然而,我想你的关心是在一系列的设备类型和操作系统版本的兼容性,因此我想你将不得不(使用android.os.Build.VERSION_CODES
)检测所述OS版本之后调用经由反射2.0+ API。