У меня есть приложение тревоги, где я активирую активную тревогу от приемника вещания, который был запущен диспетчером тревоги.
Так, чтобы разбудить устройство и разблокировать экран, я использую этот код измой широковещательный приемник перед запуском действия:
KeyguardManager.KeyguardLock lock = ((KeyguardManager) context.getSystemService(KEYGUARD_SERVICE)).newKeyguardLock(KEYGUARD_SERVICE);
PowerManager powerManager = ((PowerManager) context.getSystemService(POWER_SERVICE));
PowerManager.WakeLock wake = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, FULL_WAKE_UP);
lock.disableKeyguard();
wake.acquire();
и это объявление моей активности в манифесте:
<activity
android:name=".activities.ActiveAlarmActivity"
android:launchMode= "singleTask"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
android:windowSoftInputMode="stateHidden|adjustResize"></activity>
и внутри своей деятельности я использую следующий код:
baseAppCompatActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
);
Итак, как вы можете видеть, моя деятельность поддерживает все ориентации, однако, когда я использую специально эту строку:
lock.disableKeyguard();
моя активность блокируется только в портретном режиме, и ориентация не меняется при изменениифизическая ориентация.
Нужно ли мне в любом случае отключить защиту клавиатуры?
Пока я включаю устройство только с помощью диспетчера питания, тогда использую WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD в моей деятельности, если это будет сделаноработа для показа моей деятельности?