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

View File

@ -1,6 +1,7 @@
package com.simplemobiletools.clock.activities package com.simplemobiletools.clock.activities
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.KeyguardManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.media.AudioManager import android.media.AudioManager
@ -12,6 +13,7 @@ import android.os.VibrationEffect
import android.os.Vibrator import android.os.Vibrator
import android.view.MotionEvent import android.view.MotionEvent
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import com.simplemobiletools.clock.R import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.extensions.* import com.simplemobiletools.clock.extensions.*
@ -245,4 +247,17 @@ class ReminderActivity : SimpleActivity() {
finish() finish()
overridePendingTransition(0, 0) 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.media.AudioAttributes
import android.net.Uri import android.net.Uri
import android.os.Handler import android.os.Handler
import android.os.PowerManager
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import com.simplemobiletools.clock.R import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.activities.ReminderActivity 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) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
putExtra(ALARM_ID, id) 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") val builder = NotificationCompat.Builder(context, "Alarm")
.setSmallIcon(R.drawable.ic_alarm_vector) .setSmallIcon(R.drawable.ic_alarm_vector)
.setContentTitle(context.getString(R.string.alarm)) .setContentTitle(context.getString(R.string.alarm))
@ -58,6 +60,10 @@ class AlarmReceiver : BroadcastReceiver() {
try { try {
notificationManager.notify(ALARM_NOTIF_ID, builder.build()) 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) { } catch (e: Exception) {
context.showErrorToast(e) context.showErrorToast(e)
} }