2012-04-28 90 views
4

我的Android应用程序将在后台运行,并且我需要在方向更改时立即通知。例如。当用户将手机从纵向旋转到横向(或横向到纵向)时,系统应该告诉我的应用程序方向已改变。如何注册一个侦听器以改变方向?

谢谢。当屏幕旋转

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
     //Do stuff here 
} 

回答

5

该方法被调用。

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

如果我的应用程序尚未启动,是否会调用此方法?我真正需要的是我的应用程序在方向更改时醒来(或开始)。 – 2012-04-28 08:58:02

+0

阅读[this](http://developer.android.com/reference/android/app/Activity.html#onConfigurationChanged(android.content.res.Configuration))和[this](http://developer.android。 com/guide/topics/resources/runtime-changes.html) – Rafiq 2012-04-28 09:12:20

+1

我在发布问题之前已阅读过这些内容。他们表示:“当您的活动正在运行时,设备配置发生变化时由系统调用。”所以,如果我的应用程序没有运行,该方法将不会被调用。有我的解决方案吗? – 2012-04-28 09:19:25

2

您没有明确设置定位监听

0

但是你可以在守护进程中实现onConfigurationChanged。 here:Service

相关问题