Нажатие кнопки питания - держать экран включенным - PullRequest
1 голос
/ 31 июля 2011

В моем приложении мне нужно зафиксировать нажатие кнопки питания в упражнении, а затем показать другое занятие.Мне уже удалось поймать кнопку питания и показать новую активность, когда она нажата.Я использую 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 секунду.Почему это происходит и как я могу это исправить?

Спасибо, Хоссейн

1 Ответ

0 голосов
/ 31 июля 2011

Вы должны использовать

boolean     dispatchKeyEvent(KeyEvent event)
Called to process key events.

в классе Activity для записи ключевых событий.

Не уверен, что он ловит кнопку питания.

...