Android:从服务中获取当前设备方向

3
这个问题涉及到3D几何和对Android传感器的深入理解。我已经花了数周时间寻找解决方案,但没有成功,希望得到社区的帮助。
在Android服务中是否可以获取当前设备的方向(竖屏或横屏)?我不需要从传感器获得持续更新,只需要获取当前设备的方向。即使启动器处于竖屏状态(因为用户关闭了自动旋转),当设备横向握持时也应正确报告设备方向。
非常感谢提供示例代码。
谢谢。

1
找到任何解决方案了吗? - zaxy78
你找到解决方案了吗? - Greelings
2个回答

3

是的,你可以。

WindowManager windowService = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
int currentRatation = windowService.getDefaultDisplay().getRotation();

if (Surface.ROTATION_0 == currentRatation) {
   currentRatation = PORT;
} else if(Surface.ROTATION_180 == currentRatation) {
   currentRatation = PORT;
} else if(Surface.ROTATION_90 == currentRatation) {
   currentRatation = LAND;
} else if(Surface.ROTATION_270 == currentRatation) {
   currentRatation = LAND;
}

4
当在主屏幕上更改设备方向时,此功能无效。只有当设备屏幕方向发生更改时,此API才能正常工作。 - Meher

1

您可以通过以下方式检查服务中的资源

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//
} else {
//
}

当设备方向在主屏幕上改变时,这将无法工作。 - t0m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接