设置横向而不锁定传感器方向

Cap*_*erd 3 android landscape-portrait

我正在开发具有内嵌视频播放器的应用程序。我需要重现 Youtube 的全屏行为。

当用户横向旋转设备时,我通过 onConfigurationChanged 捕获它并进行相应的布局修改。

但是,我也有一个按钮来设置全屏。我需要这个按钮去 landscpe(ergo,全屏),但不要通过传感器锁定方向变化。

这是我目前在 onConfigurationChanged 上所做的:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (this.isLandscape(newConfig.orientation)){
        this.goToFullScreenMode();
    }else{
        this.goToInlineMode();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在按钮中所做的但失败了,因为它将活动锁定在横向:

this.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

我需要的是进入横向模式,但允许用户使用传感器更改回纵向模式,就像 Youtube 那样。

我可以通过锁定横向直到设备水平(通过直接从传感器读取)然后再次解锁方向来做到这一点。我不认为这是最“正确”的做法。

Cap*_*erd 5

来自未来派 2016 年的问候。

生活的道路让我回到了另一个 Android 应用程序的同样困境,我发现问题的真正答案是简单地添加这个......

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
Run Code Online (Sandbox Code Playgroud)

...在将方向设置为所需设置后立即。


这是我自己以前的答案

由于缺乏答案,并且因为我无法以优雅的方式解决这个问题,我最终结束了使用 OrientationListener 来获取设备的原始度数。

有了这个,一旦设备像实际布局一样定位,我就能够释放用户的方向配置。

如果有人有兴趣了解有关它的更多信息,请告诉我。