2012-04-28 91 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

相關問題