電源ボタンが押されたときに応答できるアプリケーションを作成しようとしています。より具体的には、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 に入らずにこれを実装できる他の方法はありますか。