Android屏幕方向传感器

时间:2011-01-19 06:43:55

标签: android orientation

我想通过设置

强制按钮单击时将屏幕方向设置为横向
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

工作正常。现在我希望应用程序跟随传感器,以便在倾斜回到肖像时将方向恢复为纵向。我知道这可以通过设置setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);来实现,但不知道在哪里设置它。如果方向被强制为横向,无论您向任何方向倾斜,方向都将保持在横向。任何人都可以指定如何重置方向标志吗?

3 个答案:

答案 0 :(得分:11)

当前的YouTube应用可以满足您的要求 我在我的视频播放应用程序中遇到了同样的问题。

如果用户在他/她处于肖像时强制定位到横向,请初始化 OrientationEventListener ,它会从SensorManager通知您设备方向,范围从0到360。

观察设备是否倾斜到横向方向范围((orientation >= 60 && orientation <= 120) || (orientation >= 240 && orientation <= 300)左右)并将此状态保存为枚举或标记,然后设备返回纵向方向范围({{1} }),检查枚举/标志并调用orientation <= 40 || orientation >= 320,重置标志/枚举并禁用传感器,直到用户再次强制定位为止。

这是演示代码:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

这与YouTube功能类似,希望这会有所帮助。

答案 1 :(得分:4)

我想在这里你应该使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)

答案 2 :(得分:1)

这取决于您希望传感器再次检测旋转的时间。

我正在开发的个人应用程序中我有一个特定的活动,我需要处于纵向模式,因此我在此活动的setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);onResume()中使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); onPause()并且它工作正常,当我输入它设置为纵向的活动时,如果它不是并且不允许更改并且在退出传感器时再次工作...

您在哪里尝试启用和禁用传感器?