gpt4 book ai didi

android - 锁定屏幕方向

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:15 25 4
gpt4 key购买 nike

我正在制作一个允许您阅读维基百科页面的应用程序。

每次手机从纵向旋转到横向或反之时,我都想显示一个图标。如果用户愿意,它会让用户锁定屏幕方向,否则屏幕将根据传感器数据进行定向。此功能由 google play 中的某些 App 实现,例如 - Pocket

要做到这一点,我已经覆盖了

public void onConfigurationChanged(Configuration newConfig)

现在,如果我通过使用设置锁定配置(orientation_dir 是存储在共享首选项中的方向值,它是正确的,因为我已经通过代码对其进行了调试。)

if(orientation_dir == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
else if(orientation_dir == Configuration.ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}

然后方向设置正确,但当手机旋转时不会调用 onConfigurationChanged() 方法。

如果我这样设置方向

if(orientation_dir == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(orientation_dir == Configuration.ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}

然后未设置所需的方向。手机根据传感器数据重置方向。

我什至尝试不在方法中调用 super,因为我认为它可能设置错误,但随后它给了我异常“Super not called”。

我已经尝试了 2 天,但没有找到解决这个问题的方法。

最佳答案

通常 onConfigurationChanged() 事件仅在发生配置更改时触发。在您的应用程序中,方向更改事件仅在屏幕可以自由旋转时发生。如果您已锁定屏幕方向,则不会触发屏幕方向事件。 onConfigurationChanged() 不监听负责旋转设备的传感器,而是仅在发生适当的事件时触发。

所以您真正想要的是访问 SensorManager 并附加一个 SensorListener。这是您聆听设备实际方向的方式。

这是一个非常好的演示,演示了 SensorManager 与手机方向的功能:

http://www.workingfromhere.com/blog/2009/03/30/orientation-sensor-tips-in-android/

更新:方向传感器是一种复合传感器,可让开发人员更轻松地进行操作。它实际上并不存在于手机中。是一个结合了加速度计传感器和磁场传感器的非常简洁的传感器。根据文档 (http://developer.android.com/guide/topics/sensors/sensors_position.html),OrientationSensor 目前已弃用。

参见 What is the alternative to android orientation sensor?示例使用。

它可能需要一些修复,我还没有对其进行太多测试。

关于android - 锁定屏幕方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com