1
1
package com.stop.alarm
2
2
3
- import android.app.NotificationChannel
4
3
import android.app.NotificationManager
5
- import android.app.PendingIntent
6
4
import android.content.BroadcastReceiver
7
5
import android.content.Context
8
6
import android.content.Intent
9
- import androidx.core.app.NotificationCompat
10
- import com.stop.alarm.LastTimeCheckWorker.Companion.NOTIFICATION_ID
11
7
import com.stop.MainActivity
12
8
import com.stop.R
13
9
import com.stop.isMoreThanOreo
10
+ import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_CODE
11
+ import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_HIGH_ID
12
+ import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_ID
13
+ import com.stop.util.getAlarmReceiverNotification
14
+ import com.stop.util.getAlarmReceiverPendingIntent
15
+ import com.stop.util.getAlarmScreenOnNotification
16
+ import com.stop.util.isScreenOn
14
17
15
18
class AlarmReceiver : BroadcastReceiver () {
16
19
17
20
override fun onReceive (context : Context , intent : Intent ) {
18
- val alarmCode = intent.extras?.getInt(" ALARM_CODE" ) ? : - 1
21
+ val notificationManager = context.getSystemService(Context .NOTIFICATION_SERVICE ) as NotificationManager
22
+ notificationManager.cancel(ALARM_NOTIFICATION_ID )
19
23
20
24
val soundServiceIntent = Intent (context, SoundService ::class .java)
25
+ val content = context.getString(R .string.alarm_content_text)
21
26
22
- if (isMoreThanOreo()) {
23
- context.startForegroundService(soundServiceIntent)
24
-
25
- val id = context.getString(R .string.notification_channel_id)
26
- val name = context.getString(R .string.notification_channel_name)
27
-
28
- val notificationManager = context.getSystemService(NotificationManager ::class .java)
29
- if (notificationManager.getNotificationChannel(id) == null ) {
30
- NotificationChannel (id, name, NotificationManager .IMPORTANCE_HIGH ).apply {
31
- notificationManager.createNotificationChannel(this )
32
- }
27
+ if (context.isScreenOn()) {
28
+ if (isMoreThanOreo()) {
29
+ context.startForegroundService(soundServiceIntent)
30
+ } else {
31
+ context.startService(soundServiceIntent)
33
32
}
34
33
35
- val pendingIntent = PendingIntent .getActivity(context, alarmCode, Intent (context, MainActivity ::class .java).apply {
36
- putExtra(" ALARM_CODE" , alarmCode)
37
- }, PendingIntent .FLAG_UPDATE_CURRENT or PendingIntent .FLAG_IMMUTABLE )
34
+ val alarmStartPendingIntent = context.getAlarmReceiverPendingIntent()
35
+ val alarmStartNotification = context.getAlarmScreenOnNotification(alarmStartPendingIntent, content)
38
36
39
- val title = context.getString(R .string.notification_title)
40
- val content = context.getString(R .string.alarm_content_text)
37
+ notificationManager.notify(ALARM_NOTIFICATION_ID , alarmStartNotification)
41
38
42
- val builder = NotificationCompat .Builder (context, id)
43
- .setSmallIcon(R .mipmap.ic_bus)
44
- .setContentTitle(title)
45
- .setContentText(content)
46
- .setAutoCancel(true )
47
- .setPriority(NotificationCompat .PRIORITY_HIGH )
48
- .setCategory(NotificationCompat .CATEGORY_ALARM )
49
- .setFullScreenIntent(pendingIntent, true )
50
-
51
- try {
52
- notificationManager.notify(NOTIFICATION_ID , builder.build())
53
- } catch (e: Exception ) {
54
- e.printStackTrace()
55
- }
39
+ /* Intent(context, MainActivity::class.java).apply {
40
+ putExtra("ALARM_CODE", ALARM_CODE)
41
+ context.startActivity(this)
42
+ }*/
56
43
} else {
57
- context.startService(soundServiceIntent)
44
+ if (isMoreThanOreo()) {
45
+ context.startForegroundService(soundServiceIntent)
58
46
59
- Intent (context, MainActivity ::class .java).apply {
60
- putExtra(" ALARM_CODE" , alarmCode)
61
- context.startActivity(this )
47
+ val alarmStartPendingIntent = context.getAlarmReceiverPendingIntent()
48
+ val alarmStartNotification = context.getAlarmReceiverNotification(
49
+ alarmStartPendingIntent,
50
+ content
51
+ )
52
+
53
+ notificationManager.notify(ALARM_NOTIFICATION_HIGH_ID , alarmStartNotification)
54
+ } else {
55
+ context.startService(soundServiceIntent)
56
+ Intent (context, MainActivity ::class .java).apply {
57
+ putExtra(" ALARM_CODE" , ALARM_CODE )
58
+ context.startActivity(this )
59
+ }
62
60
}
63
61
}
62
+
64
63
}
65
64
66
65
}
0 commit comments