2012-04-28 3 views
4

Androidアプリはバックグラウンドで実行されるため、向きが変わると直ちに通知する必要があります。例えば。ユーザーが携帯電話を縦向きから横向き(または横向きから縦向き)に回転させると、システムは自分のアプリに向きが変わったことを伝える必要があります。オリエンテーションの変更にリスナーを登録する方法は?

ありがとうございました。

答えて

5

画面では、明示的にオリエンテーションリスナーを設定する必要はありません

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

私のアプリが起動していない場合、このメソッドは呼び出されますか?私が本当に必要とするのは、向きが変わったときに私のアプリが目を覚ます(または起動する)ことです。 –

+0

[こちら](http://developer.android.com/reference/android/app/Activity.html#onConfigurationChanged(android.content.res.Configuration))と[this] com/guide/topics/resources/runtime-changes.html) – Rafiq

+1

私は質問を投稿する前にこれらを読んでいます。彼らは、 "あなたの活動が実行されている間にデバイスの設定が変更されたときに、システムによって呼び出されます。"したがって、私のアプリケーションが実行されていない場合、メソッドは呼び出されません。私のための解決策はありますか? –

2

を回転させたときに、このメソッドが呼び出されます。

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はデーモンで実装できます。 ここに:Service

関連する問題