Я разработал приложение для Android под названием Multi Countdown Timer, в котором мы можем запускать несколько таймеров одновременно. Приложение работает в фоновом режиме с использованием службы переднего плана для непрерывной работы и отмены режима сна Android.
Я тестировал свое приложение на Samsung s6, A7, Nokia 3.1, LG Nexus 5x и некоторых эмуляторах. Приложения работают отлично и просыпаются по истечении таймера. Но, с другой стороны, всякий раз, когда я запускаю свое приложение на устройствах Huawei (EMUI 8 Android Oreo 8.0.0), результат совершенно неудовлетворительный. Проблема, с которой я сталкиваюсь, заключается в том, что приложение не разбудило экран, когда таймер закончился, и когда таймер закончился, когда я открываю свое устройство, он звонит, но не автоматически пробуждает экран, когда он работает. другие устройства.
Я скопировал это приложение секундомер с несколькими таймерами и это приложение отлично работает даже на устройствах Huawei.
Это моя активность в Manifest.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)
И это моя тревожная активность onCreate
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) Я протестировал несколько Wake Locks в своей службе переднего плана, но все еще получаю такое же поведение.
3) При использовании Android AlarmManager с setExactAndAllowWhileIdle устройство все еще не выводилось из спящего режима.
4) Использовалось решение Don'tKillMyApp для использования тега LocationManagerService в Wake Lock. т помочь.