1
1
package com.stop.util
2
2
3
- import android.app.*
3
+ import android.app.Notification
4
+ import android.app.NotificationChannel
5
+ import android.app.NotificationManager
6
+ import android.app.PendingIntent
4
7
import android.content.Context
5
8
import android.content.Intent
6
9
import android.content.res.Resources
7
- import android.os.PowerManager
8
10
import android.util.DisplayMetrics
9
11
import android.util.Size
10
12
import android.view.WindowManager
11
13
import android.view.WindowMetrics
12
14
import androidx.core.app.NotificationCompat
13
- import com.stop.*
14
- import com.stop.alarm.AlarmReceiver
15
- import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_CODE
16
- import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_MAP_CODE
15
+ import com.stop.R
16
+ import com.stop.isMOreThanRedVelVet
17
+ import com.stop.isMoreThanOreo
17
18
18
- fun Context.getAlarmSettingPendingIntent (): PendingIntent {
19
- val intent = Intent ( this , MainActivity :: class .java)
20
- intent.putExtra( " ALARM_MAP_CODE " , ALARM_MAP_CODE )
19
+ fun Context.getActivityPendingIntent (
20
+ intent : Intent , requestCode : Int
21
+ ): PendingIntent {
21
22
return PendingIntent .getActivity(
22
- this ,
23
- ALARM_MAP_CODE ,
24
- intent,
25
- PendingIntent .FLAG_UPDATE_CURRENT or PendingIntent .FLAG_IMMUTABLE
23
+ this , requestCode, intent, PendingIntent .FLAG_UPDATE_CURRENT or PendingIntent .FLAG_IMMUTABLE
26
24
)
27
25
}
28
26
29
- fun Context.getAlarmSettingNotification (pendingIntent : PendingIntent , content : String ): Notification {
30
- val id = applicationContext.getString(R .string.notification_channel_id)
31
- val name = applicationContext.getString(R .string.notification_channel_name)
32
- val title = applicationContext.getString(R .string.notification_title)
33
-
34
- createDefaultNotificationChannel(applicationContext, id, name)
35
-
36
- return NotificationCompat .Builder (applicationContext, id)
37
- .setContentTitle(title)
38
- .setContentText(content)
39
- .setSmallIcon(R .mipmap.ic_bus)
40
- .setOngoing(true )
41
- .setContentIntent(pendingIntent)
42
- .build()
43
- }
44
-
45
- fun Context.getAlarmStartPendingIntent (): PendingIntent {
46
- val intent = Intent (this , AlarmReceiver ::class .java)
47
- intent.putExtra(" ALARM_CODE" , ALARM_CODE )
27
+ fun Context.getBroadcastPendingIntent (
28
+ intent : Intent , requestCode : Int
29
+ ): PendingIntent {
48
30
return PendingIntent .getBroadcast(
49
- this ,
50
- ALARM_CODE ,
51
- intent,
52
- PendingIntent .FLAG_UPDATE_CURRENT or PendingIntent .FLAG_IMMUTABLE
53
- )
54
- }
55
-
56
- fun Context.isThisAppRunning () =
57
- (getSystemService(Context .ACTIVITY_SERVICE ) as ActivityManager )
58
- .runningAppProcesses
59
- .firstOrNull()
60
- ?.processName
61
- ?.equals(" com.stop" )
62
- ? : false
63
-
64
- fun Context.isScreenOn () =
65
- (getSystemService(Context .POWER_SERVICE ) as PowerManager ).isInteractive
66
-
67
- fun Context.getAlarmReceiverPendingIntent (): PendingIntent {
68
- val intent = Intent (this , AlarmActivity ::class .java)
69
- intent.putExtra(" ALARM_CODE" , ALARM_CODE )
70
- intent.flags = Intent .FLAG_ACTIVITY_NEW_TASK or Intent .FLAG_ACTIVITY_CLEAR_TASK
71
- return PendingIntent .getActivity(
72
- this ,
73
- ALARM_CODE ,
74
- intent,
75
- PendingIntent .FLAG_UPDATE_CURRENT or PendingIntent .FLAG_IMMUTABLE
31
+ this , requestCode, intent, PendingIntent .FLAG_UPDATE_CURRENT or PendingIntent .FLAG_IMMUTABLE
76
32
)
77
33
}
78
34
79
- fun Context.getAlarmScreenOnNotification (pendingIntent : PendingIntent , content : String ) : Notification {
35
+ fun Context.getAlarmDefaultNotification (
36
+ pendingIntent : PendingIntent , content : String
37
+ ): Notification {
80
38
val id = applicationContext.getString(R .string.notification_channel_id)
81
39
val name = applicationContext.getString(R .string.notification_channel_name)
82
40
val title = applicationContext.getString(R .string.notification_title)
83
41
84
42
createDefaultNotificationChannel(applicationContext, id, name)
85
43
86
- return NotificationCompat .Builder (applicationContext, id)
87
- .setContentTitle(title)
88
- .setContentText(content)
89
- .setSmallIcon(R .mipmap.ic_bus)
90
- .setAutoCancel(true )
91
- .setContentIntent(pendingIntent)
92
- .build()
44
+ return NotificationCompat .Builder (applicationContext, id).setContentTitle(title).setContentText(content).setSmallIcon(R .mipmap.ic_bus).setOngoing(true ).setContentIntent(pendingIntent).build()
93
45
}
94
46
95
- fun Context.getAlarmReceiverNotification (pendingIntent : PendingIntent , content : String ): Notification {
47
+ fun Context.getAlarmHighNotification (
48
+ pendingIntent : PendingIntent , content : String
49
+ ): Notification {
96
50
val id = applicationContext.getString(R .string.notification_channel_high_id)
97
51
val name = applicationContext.getString(R .string.notification_channel_high_name)
98
52
val title = applicationContext.getString(R .string.notification_title)
99
53
100
54
createHighNotificationChannel(applicationContext, id, name)
101
55
102
- return NotificationCompat .Builder (applicationContext, id)
103
- .setContentTitle(title)
104
- .setContentText(content)
105
- .setSmallIcon(R .mipmap.ic_bus)
106
- .setAutoCancel(true )
107
- .setPriority(NotificationCompat .PRIORITY_HIGH )
108
- .setCategory(NotificationCompat .CATEGORY_ALARM )
109
- .setContentIntent(pendingIntent)
110
- .setFullScreenIntent(pendingIntent, true )
111
- .build()
56
+ return NotificationCompat .Builder (applicationContext, id).setContentTitle(title).setContentText(content).setSmallIcon(R .mipmap.ic_bus).setAutoCancel(true )
57
+ .setPriority(NotificationCompat .PRIORITY_HIGH ).setCategory(NotificationCompat .CATEGORY_ALARM ).setContentIntent(pendingIntent).setFullScreenIntent(pendingIntent, true ).build()
112
58
}
113
59
114
60
private fun createDefaultNotificationChannel (context : Context , id : String , name : String ) {
@@ -117,9 +63,7 @@ private fun createDefaultNotificationChannel(context: Context, id: String, name:
117
63
val importance = NotificationManager .IMPORTANCE_DEFAULT
118
64
119
65
NotificationChannel (
120
- id,
121
- name,
122
- importance
66
+ id, name, importance
123
67
).apply {
124
68
notificationManager.createNotificationChannel(this )
125
69
}
@@ -132,9 +76,7 @@ private fun createHighNotificationChannel(context: Context, id: String, name: St
132
76
val importance = NotificationManager .IMPORTANCE_HIGH
133
77
134
78
NotificationChannel (
135
- id,
136
- name,
137
- importance
79
+ id, name, importance
138
80
).apply {
139
81
notificationManager.createNotificationChannel(this )
140
82
}
0 commit comments