2011-07-31 15 views
1

私のアプリケーションでは、電源ボタンを押してアクティビティを押してから別のアクティビティを表示する必要があります。私は既に電源ボタンを押さえて、それが押されたときに新しいアクティビティを表示することができました。 私は、BroadcastReceiverを使用してパワープレスイベントをフックします。電源ボタンが押されたとき、私はロックされてから画面を防止するために、私の活動に次のフラグを追加しました:電源ボタン押し続ける

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked  
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //I am not sure it works.  
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);//turns the screen on 

を私はパワープレスをキャッチし、ロックアウトされずに活性を示すことができますが、画面がオフになります約1秒間、自動的にオンに戻り、それは私が本当に望むものではありません。 ユーザーが電源ボタンを押したときに画面をオンにできますか?

は私がdispatchkeyeventことによって電力を捕まえることができませんでしたが、私は、このことによってそれをキャッチすることができます:

screenoff = new BroadcastReceiver() 
public static final String Screenoff = "android.intent.action.SCREEN_OFF"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (!intent.getAction().equals(Screenoff)) { 
      //code goes here return; 

     return; 
     } 
    }; 
    IntentFilter offfilter = new IntentFilter (Intent.ACTION_SCREEN_OFF); 
    registerReceiver(screenoff, offfilter); 

の問題は、約1秒のための画面をオフにします。 なぜこれが起こり、どのように修正できるのですか?

おかげで、 ホセイン

答えて

0

あなたが代わりにキーイベントをキャプチャするActivityクラスに

boolean  dispatchKeyEvent(KeyEvent event) 
Called to process key events. 

を使用する必要があります。

電源ボタンを押したかどうかはわかりません。

+0

私はすでにbroadcastreceiverでイベントをキャッチしていましたが、1秒ほど画面が消えてしまいました。ユーザーが電源を押しても画面をオンにする方法はありますか?私はまた、 'getWindow()。addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);'しかし、私も私を助けなかった。 – Hossein

関連する問題