пропустить экран - PullRequest
       1

пропустить экран

0 голосов
/ 23 сентября 2011
protected void onPause()
    {
        super.onPause();        

        // If the screen is off then the device has been locked
        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        boolean isScreenOn = powerManager.isScreenOn();

        //screen locked 
        if (!isScreenOn) {

            boolean pressed = onKeyDown(26, null);

            //power button pressed
            if(pressed){
                //remove keyguard
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);                 
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

                //start intent
                Intent i = new Intent(this, VoiceRecognitionActivity.class);
                startActivity(i);
            }


        }
    }    

приведенный выше код: когда кнопка питания нажата, защита клавиатуры будет отменена и возобновление приостановленной активности.

Однако защита клавиатуры не исчезнет, ​​когда я нажал кнопку питания,и я должен разблокировать вручную.

Когда я нажимал кнопку питания, окно моей активности вспыхивало на секунду, и показывалось окно защиты клавиатуры.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

Этот фрагмент кода может помочь:

    final Window win = getWindow();
    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    // Turn on the screen unless we are being launched from the AlarmAlert
    // subclass.
    final boolean screenOff = getIntent().getBooleanExtra(SCREEN_OFF, false);
    if (!screenOff) {
        try {
            // API 8+
            win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
        } catch (final Throwable whocares) {
            // API 7+
            win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        }
    }
0 голосов
/ 23 сентября 2011

Если вы хотите, чтобы телефон не выключал экран (и в результате блокировал телефон), вам следует использовать WakeLock. Вы можете использовать PowerManager.newWakeLock() с FLAG_KEEP_SCREEN_ON или даже FULL_WAKE_LOCK.

...