如何注册方向变化的监听器?

5

我的安卓应用将在后台运行,当屏幕方向改变时,我需要立即得到通知。例如,当用户从纵向旋转手机至横向(或从横向旋转至纵向)时,系统应该告诉我的应用方向已经改变。

谢谢。

3个回答

7
屏幕旋转时调用此方法。
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
        //Do stuff here
}

这个方法会在我的应用程序没有启动的情况下被调用吗?我真正需要的是当方向改变时,我的应用程序能够唤醒(或启动)。 - Nguyen Minh Binh
阅读这个这个 - Rafiq
1
在我发布问题之前,我已经阅读了这些内容。它们说:“当您的活动正在运行时,系统调用设备配置更改。” 因此,如果我的应用程序未运行,则不会调用该方法。 那么,有没有解决方案适用于我? - Nguyen Minh Binh
@NguyenMinhBinh 你解决了吗?我现在也有同样的问题,谢谢。 - sospedra

3

您不必显式设置方向监听器。

onConfigurationChanged将由系统调用。

@Override
public void onConfigurationChanged(Configuration myConfig) {
    super.onConfigurationChanged(myConfig);
    int orient = getResources().getConfiguration().orientation; 
    switch(orient) {
                case Configuration.ORIENTATION_LANDSCAPE:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    break;
                case Configuration.ORIENTATION_PORTRAIT:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    break;
                default:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
                }
}

0

但是你可以在守护进程中实现onConfigurationChanged。这里有服务


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