Хотите получить доступ к событиям кнопки питания в Android
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 Key, но не работает для кнопки Power/Lock. Почему это происходит? Предложить пример или код.
2 ответа
Вы не можете отменить нажатие кнопки питания из своего приложения. Но при нажатии кнопки питания экран включается / выключается. Таким образом, вы можете обнаружить это с помощью приемника вещания.
<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
}
}
}
Надеюсь, это полезно для вас.
Примечание:-Для того, чтобы мой широковещательный приемник всегда работал в фоновом режиме. Мне написана одна фоновая служба, которая постоянно запускается в фоновом режиме и дает импульс моему широковещательному приемнику.
Вы должны добавить следующее разрешение в ваш файл манифеста:
<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />