Я разработал приложение Android под названием Multi Countdown Timer, в котором мы можем запускать несколько таймеров одновременно. Приложение работает в фоновом режиме, используя Foreground Service для непрерывной работы и отмены режима Android Doze .
. Я протестировал свое приложение на Samsung s6, A7, Nokia 3.1, LG Nexus 5x и некоторые эмуляторы. Приложения работают отлично и просыпаются, когда таймер закончил. Но, с другой стороны, всякий раз, когда я запускаю свое приложение на Huawei Devices (EMUI 8 Android Oreo 8.0.0), результат вообще не является удовлетворительным. Проблема, с которой я сталкиваюсь, заключается в том, что приложение не запускает экран, когда таймер завершен, и когда таймер заканчивается, когда я открываю свое устройство, он звонит, но не запускает функцию автоматического включения экрана, когда он работает. другие устройства.
Я реплицировал это приложение Мульти-таймер StopWatch , и это приложение работает нормально даже на устройствах Huawei.
Это моя активность в манифесте. xml.
android:name=".view.alarm.AlarmActivity"
android:process="alarm.process"
android:screenOrientation="portrait"
android:showOnLockScreen="true"
android:showWhenLocked="true"
android:turnScreenOn="true"
android:theme="@style/splashScreenTheme" />
Вот как я назвал свою активность по тревоге.
val alarmIntent = Intent(this@CountDownTimerForegroundService, AlarmActivity::class.java)
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT)
}
alarmIntent.putExtra(ALARM_PASSING_ID, timerObj.id)
startActivity(alarmIntent)
И это моя активность по тревоге при создании
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
or WindowManager.LayoutParams.FLAG_FULLSCREEN
or WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
)
setContentView(R.layout.activity_alarm)
Любая помощь будет очень оценили. Заранее спасибо.
Обновление:
1) На устройстве Huawei я провел тестирование после внесения в белый список моего приложения в PowerManager, а также включил функцию оптимизации аккумулятора, но также не помогите.
2) Я проверил некоторые блокировки пробуждения в службе Foreground, но все еще получаю то же поведение.
3) Использовал Android AlarmManager с setExactAndAllowWhileIdle устройство еще не проснулось.
4) Использовано Don'tKillMyApp Решение использовать LocationManagerService Тег в Wake Lock также не помог.