В моем приложении мне нужно зафиксировать нажатие кнопки питания в упражнении, а затем показать другое занятие.Мне уже удалось поймать кнопку питания и показать новую активность, когда она нажата.Я использую BroadcastReceiver, чтобы подключить событие Power Press.Я добавил следующие флаги в свою активность, чтобы предотвратить блокировку экрана при нажатии кнопки питания:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //I am not sure it works.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);//turns the screen on
Несмотря на то, что я могу ловить нажатие на кнопку питания и показывать активность без блокировки, экранвыключается примерно на 1 секунду и снова включается автоматически, это не то, что я действительно хочу.Можно ли в любом случае оставить экран включенным, когда пользователь нажимает кнопку питания?
Я не смог поймать питание с помощью dispatchkeyevent, но я мог бы поймать его следующим образом:
screenoff = new BroadcastReceiver()
public static final String Screenoff = "android.intent.action.SCREEN_OFF";
@Override
public void onReceive(Context context, Intent intent) {
if (!intent.getAction().equals(Screenoff)) {
//code goes here return;
return;
}
};
IntentFilter offfilter = new IntentFilter (Intent.ACTION_SCREEN_OFF);
registerReceiver(screenoff, offfilter);
Проблема в том,что экран выключен примерно на 1 секунду.Почему это происходит и как я могу это исправить?
Спасибо, Хоссейн