Ich möchte Power button press event
in meiner App erfassen und das auch in einem Service, die im Hintergrund läuft. Dazu habe ich folgenden Code mit Broadcast Receiver verwendet.Erfassen Ereignis, wenn Power-Taste für 3 Sekunden gedrückt wird oder 3 Mal innerhalb Service
private static final String ACTION="android.intent.action.SCREEN_ON";
private BroadcastReceiver yourReceiver;
OnReceive() Methode:
final IntentFilter theFilter = new IntentFilter();
theFilter.addAction(ACTION);
this.yourReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Do whatever you need it to do when it receives the broadcast
// Example show a Toast message...
Log.d("button","button pressed");
Toast.makeText(context,"pressed",Toast.LENGTH_LONG).show();
}
};
Mit diesem Code ich in der Lage bin Schaltfläche drücken Ereignis innerhalb Empfänger zu erfassen.
Jetzt möchte ich erkennen, dass, ob Power-Taste für 3 oder mehr Sekunden gedrückt wurde dann möchte ich bestimmte Aktion in meinem Empfänger durchführen. Dazu fand ich diese Methode aus
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_POWER) {
// Do something here...
return true;
}
return super.onKeyLongPress(keyCode, event);
}
Aber ich fand heraus, dass diese Methode nur innerhalb einer Aktivität läuft, aber ich will es in einem Dienst rufen.
Gibt es eine Möglichkeit festzustellen, ob der Netzschalter 3 Sekunden lang gedrückt wurde, oder ob wir die obige Methode im Service verwenden können.
Es ist eine Art Notfall-App, daher möchte ich meine App immer im Hintergrund laufen, daher verwende ich Service –
Sie können dies nicht tun. :) –