在我的相机应用中,UI方向固定为纵向。
通过设置camera.setdisplayorientation(90),可以在横向和纵向上正确显示预览。
我可以拍照并将其保存到文件中。 当我通过ImageView显示它时, 横向拍摄的照片可以正确显示。 (我左边的手机顶部)
但是......纵向拍摄的那个并不是那么幸运...... 它看起来像向左转90度。
我尝试通过传感器检测设备方向,以便我可以设置EXIF标头, 但......到目前为止......对我来说太难了......有没有人可以帮我解决这个问题?
答案 0 :(得分:4)
使用getRotation方法:
Display display = ((WindowManager)
context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
来自文档:
Returns the rotation of the screen from its "natural" orientation.
The returned value may be Surface.ROTATION_0 (no rotation), Surface.ROTATION_90, Surface.
ROTATION_180, or Surface.ROTATION_270.
For example, if a device has a naturally tall screen, and the user has turned it on its side to go into a landscape orientation, the value returned here may be either Surface.ROTATION_90 or Surface.ROTATION_270 depending on the direction it was turned.
The angle is the rotation of the drawn graphics on the screen, which is the opposite direction of the physical rotation of the device.
For example, if the device is rotated 90 degrees counter-clockwise, to compensate rendering will be rotated by 90 degrees clockwise and thus the returned value here will be Surface.ROTATION_90.
getRotation是从Android 2.2引入的。如果您的目标是旧设备,请使用getOrientation。
这里有答案表格: how to detect orientation of android device?
如果您只想检测设备的方向,则可以使用OrientationEventListener。
但在你使用任何东西之前,请查看这篇关于android中方向处理的优秀博客文章: http://android-developers.blogspot.in/2010/09/one-screen-turn-deserves-another.html