try harder at waking up the device on alarm trigger

This commit is contained in:
tibbi 2022-07-03 16:52:17 +02:00
parent 97b0c4dac6
commit c10452a904
4 changed files with 27 additions and 14 deletions

View File

@ -9,6 +9,8 @@
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
@ -48,7 +50,8 @@
<activity
android:name=".activities.ReminderActivity"
android:exported="false"
android:launchMode="singleTask" />
android:launchMode="singleTask"
android:showOnLockScreen="true" />
<activity
android:name=".activities.SettingsActivity"

View File

@ -1,6 +1,7 @@
package com.simplemobiletools.clock.activities
import android.annotation.SuppressLint
import android.app.KeyguardManager
import android.content.Context
import android.content.Intent
import android.media.AudioManager
@ -12,6 +13,7 @@ import android.os.VibrationEffect
import android.os.Vibrator
import android.view.MotionEvent
import android.view.ViewGroup
import android.view.WindowManager
import android.view.animation.AnimationUtils
import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.extensions.*
@ -245,4 +247,17 @@ class ReminderActivity : SimpleActivity() {
finish()
overridePendingTransition(0, 0)
}
private fun showOverLockscreen() {
window.addFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
)
setShowWhenLocked(true)
setTurnScreenOn(true)
(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).requestDismissKeyguard(this, null)
}
}

View File

@ -1,11 +0,0 @@
package com.simplemobiletools.clock.extensions
import android.app.Activity
import android.view.WindowManager
fun Activity.showOverLockscreen() {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
}

View File

@ -9,6 +9,7 @@ import android.content.Intent
import android.media.AudioAttributes
import android.net.Uri
import android.os.Handler
import android.os.PowerManager
import androidx.core.app.NotificationCompat
import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.activities.ReminderActivity
@ -43,11 +44,12 @@ class AlarmReceiver : BroadcastReceiver() {
}
}
val pendingIntent = PendingIntent.getActivity(context, 0, Intent(context, ReminderActivity::class.java).apply {
val reminderActivityIntent = Intent(context, ReminderActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
putExtra(ALARM_ID, id)
}, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
}
val pendingIntent = PendingIntent.getActivity(context, 0, reminderActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
val builder = NotificationCompat.Builder(context, "Alarm")
.setSmallIcon(R.drawable.ic_alarm_vector)
.setContentTitle(context.getString(R.string.alarm))
@ -58,6 +60,10 @@ class AlarmReceiver : BroadcastReceiver() {
try {
notificationManager.notify(ALARM_NOTIF_ID, builder.build())
val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
val wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP, "simpleClock:showAlarmLock")
wakeLock.acquire(10000)
} catch (e: Exception) {
context.showErrorToast(e)
}