2016-05-11 4 views
4
i=0; 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    System.out.println("In Key Down Method." + event.getKeyCode()); 
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { 
     i++; 
     System.out.println("Power button pressed."); 
     if (i == 2) { 
      System.out.println("Power button pressed continuoulsy 3 times."); 
      Toast.makeText(MainActivity.this, "Power button pressed " + i + " times.", Toast.LENGTH_SHORT).show(); 
     } else { 
      System.out.println("Power button pressed continuoulsy " + i + " times."); 
      Toast.makeText(MainActivity.this, "Power button pressed " + i + " times.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

に電源ボタンイベントにアクセスしたいですか? いくつかの例またはコードを提案する。は、私がVolume_UpとVolume_Downキーのために正常に動作上記code.Itsを使用して、電源ボタンイベントにアクセスしようとしているが、それが起こる電源/ロックButton.Whyのために働いていないのですアンドロイド

+0

[Androidの電源ボタンに接続する方法は?](http://stackoverflow.com/questions/3703071/how-to-hook-into-the-power-button-in-android) – xAF

+0

しかし、それも働いていない。 http://stackoverflow.com/questions/3703071/how-to-hook-into-the-power-button-in-android –

答えて

4

あなたは、アプリケーションからの電源ボタンを押して上書きすることはできません。しかし、電源ボタンを押すと画面がオン/オフになります。したがって、ブロードキャスト受信機を使用してこれを検出できます。

<receiver android:name=".MyBroadCastReciever"> 
<intent-filter> 
    <action android:name="android.intent.action.SCREEN_OFF"/> 
    <action android:name="android.intent.action.SCREEN_ON"/> 
</intent-filter> 
</receiver> 

MyBroadCastReciever.java

public class MyBroadCastReciever extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
     //Take count of the screen off position 
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
     //Take count of the screen on position 
    } 
} 
} 

これはあなたのために有用であると思います。

注:私の放送受信機を常にバックグラウンドで稼動させ続けるために、バックグラウンドで連続して起動し、ブロードキャスト受信機にブーストを与えるバックグラウンドサービスを作成しました。

+0

しかし、バックグラウンドで実行されていない放送受信者 は、アプリケーションがフォアグラウンドまたはタスクマネージャー このケースをどのように処理できますか? –

1

あなたのマニフェストファイルに次の権限を追加する必要があります

<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />

+0

すでにこの許可が追加されています –

関連する問題