電源ボタンが押されたときに応答できるアプリケーションを作成しようとしています。より具体的には、2、3回押すと反応します。
とりあえず、以下をやってみました。
public class SMSKey extends BroadcastReceiver{
    static int countPowerOff = 0;
    private Activity activity = null;
    public SMSKey(Activity activity){
        this.activity = activity;
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
            countPowerOff++;
        }else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
            if(countPowerOff == 2){
                Intent i = new Intent(activity, SMSOptions.class);
                activity.startActivity(i);
            }
        }
    }
}
そして私のマニフェストで:
<receiver android:name=".SMSKey">
        <intent-filter >
            <action android:name="android.intent.action.SCREEN_OFF"/>
            <action android:name="android.intent.action.SCREEN_ON"/>
            <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
            <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
            <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
        </intent-filter>
    </receiver>
最後に私のMainActivty.javaで:
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
SMSKey mReceiver = new SMSKey(this);
registerReceiver(mReceiver, filter);
これは機能しますが、1 回目のみ機能し、電源ボタンを押したときに 2 回目または 3 回目の試行では機能しません。どうしてこんなことに ??
もう 1 つの質問: ご覧のとおり、私は MainActivity でこの KeyPress イベントを使用しています。つまり、アプリケーションは常に開いている必要があります。MainActivity に入らずにこれを実装できる他の方法はありますか。