@@ -5,20 +5,16 @@ import android.content.*
5
5
import android.content.pm.PackageManager
6
6
import android.media.AudioAttributes
7
7
import android.net.Uri
8
- import android.provider.Settings
9
- import android.text.TextUtils
10
8
import android.util.Log
11
9
import androidx.annotation.NonNull
12
10
import androidx.annotation.Nullable
13
- import com.google.gson.Gson
14
11
import io.flutter.embedding.android.FlutterActivity
15
12
import io.flutter.embedding.engine.FlutterEngine
16
13
import io.flutter.plugin.common.MethodCall
17
14
import io.flutter.plugin.common.MethodChannel
18
15
import io.flutter.plugins.GeneratedPluginRegistrant
19
16
import java.util.*
20
17
21
-
22
18
val CHANNEL = " alarm_method_channel"
23
19
24
20
const val REQUEST_CODE_FOR_ACCESSIBILITY = 167
@@ -29,49 +25,53 @@ var methodChannel: MethodChannel? = null
29
25
30
26
class MainActivity : FlutterActivity () {
31
27
32
- // lateinit var newFlutterEngine: FlutterEngine
28
+ // lateinit var newFlutterEngine: FlutterEngine
33
29
34
30
override fun configureFlutterEngine (@NonNull flutterEngine : FlutterEngine ) {
35
31
super .configureFlutterEngine(flutterEngine)
36
- GeneratedPluginRegistrant .registerWith(flutterEngine);
32
+ GeneratedPluginRegistrant .registerWith(flutterEngine)
37
33
38
34
val receiver = ComponentName (context, BootReceiver ::class .java)
39
35
context.packageManager.setComponentEnabledSetting(
40
- receiver,
41
- PackageManager .COMPONENT_ENABLED_STATE_ENABLED ,
42
- PackageManager .DONT_KILL_APP
36
+ receiver,
37
+ PackageManager .COMPONENT_ENABLED_STATE_ENABLED ,
38
+ PackageManager .DONT_KILL_APP
43
39
)
44
40
45
-
46
41
val sound: Uri =
47
- Uri .parse(ContentResolver .SCHEME_ANDROID_RESOURCE .toString() + " ://" + context.packageName + " /" + R .raw.rooster)
48
- val attributes: AudioAttributes = AudioAttributes .Builder ()
49
- .setUsage(AudioAttributes .USAGE_NOTIFICATION )
50
- .build()
42
+ Uri .parse(
43
+ ContentResolver .SCHEME_ANDROID_RESOURCE .toString() +
44
+ " ://" +
45
+ context.packageName +
46
+ " /" +
47
+ R .raw.rooster
48
+ )
49
+ val attributes: AudioAttributes =
50
+ AudioAttributes .Builder ().setUsage(AudioAttributes .USAGE_NOTIFICATION ).build()
51
51
val mChannel = NotificationChannel (" alarms" , " Alarms" , NotificationManager .IMPORTANCE_HIGH )
52
52
mChannel.description = " This pertains to all the alarms set by the user"
53
53
mChannel.setSound(sound, attributes)
54
54
val notificationManager = getSystemService(NOTIFICATION_SERVICE ) as NotificationManager
55
55
notificationManager.createNotificationChannel(mChannel)
56
56
57
- // isPresent("24/1/2023", "day")
58
- // isPresent("23/1/2023-29/1/2023", "week")
59
- // isPresent("Jan 2023", "month")
60
- // isPresent("2023", "year")
61
- // isPresent("longTerm", "longTerm")
57
+ // isPresent("24/1/2023", "day")
58
+ // isPresent("23/1/2023-29/1/2023", "week")
59
+ // isPresent("Jan 2023", "month")
60
+ // isPresent("2023", "year")
61
+ // isPresent("longTerm", "longTerm")
62
62
63
- methodChannel = MethodChannel (
64
- flutterEngine.dartExecutor.binaryMessenger,
65
- CHANNEL
66
- )
63
+ methodChannel = MethodChannel (flutterEngine.dartExecutor.binaryMessenger, CHANNEL )
67
64
methodChannel!! .setMethodCallHandler { call: MethodCall ? , result: MethodChannel .Result ? ->
68
65
handleMethodCalls(context, call, result)
69
66
handleNudgerCall(this , context, call, result)
70
67
}
71
68
}
72
69
73
70
override fun onActivityResult (requestCode : Int , resultCode : Int , @Nullable data : Intent ? ) {
74
- // this func checks whether accessibility has been enabled after returning from settings
71
+ // this func checks whether accessibility has been enabled after returning from settings
72
+ super .onActivityResult(requestCode, resultCode, data)
73
+
74
+ Log .d(" debugging" , " received activity result" )
75
75
if (requestCode == REQUEST_CODE_FOR_ACCESSIBILITY ) {
76
76
if (resultCode == RESULT_OK ) {
77
77
pendingResult?.success(true )
@@ -89,37 +89,35 @@ fun padDate(date: String): String {
89
89
components[0 ] = components[0 ].padStart(2 , ' 0' )
90
90
components[1 ] = components[1 ].padStart(2 , ' 0' )
91
91
return components.joinToString(" /" )
92
-
93
92
}
94
93
95
94
fun setAlarm (
96
- context : Context ,
97
- alarmId : String ,
98
- time : String ,
99
- repeatStatus : String ,
100
- repeatEnd : String ,
101
- taskId : String ,
102
- taskName : String ,
103
- taskDesc : String ,
104
- label : String ,
105
- finished : Boolean
95
+ context : Context ,
96
+ alarmId : String ,
97
+ time : String ,
98
+ repeatStatus : String ,
99
+ repeatEnd : String ,
100
+ taskId : String ,
101
+ taskName : String ,
102
+ taskDesc : String ,
103
+ label : String ,
104
+ finished : Boolean
106
105
) {
107
106
Log .d(
108
- " debugging" ,
109
- " alarm set from dart: $alarmId , $time , $repeatStatus , $repeatEnd , $taskId , $taskName , $taskDesc , $label , $finished "
107
+ " debugging" ,
108
+ " alarm set from dart: $alarmId , $time , $repeatStatus , $repeatEnd , $taskId , $taskName , $taskDesc , $label , $finished "
110
109
)
111
110
112
- val alarmIntent = Intent (context, AlarmReceiver ::class .java).apply {
113
- putExtra(" alarmId" , alarmId)
114
- }
111
+ val alarmIntent =
112
+ Intent (context, AlarmReceiver ::class .java).apply { putExtra(" alarmId" , alarmId) }
115
113
val pendingAlarmIntent =
116
- PendingIntent .getBroadcast(
117
- context,
118
- alarmId.toInt(),
119
- alarmIntent,
120
- PendingIntent .FLAG_IMMUTABLE or PendingIntent .FLAG_UPDATE_CURRENT
121
- )
122
- var interval: Long = 0 ;
114
+ PendingIntent .getBroadcast(
115
+ context,
116
+ alarmId.toInt(),
117
+ alarmIntent,
118
+ PendingIntent .FLAG_IMMUTABLE or PendingIntent .FLAG_UPDATE_CURRENT
119
+ )
120
+ var interval: Long = 0
123
121
when (repeatStatus) {
124
122
" everyDay" -> {
125
123
interval = AlarmManager .INTERVAL_DAY
@@ -142,65 +140,68 @@ fun setAlarm(
142
140
val year: Int = date.split(" /" )[2 ].toInt()
143
141
val hour: Int = realTime.split(" :" )[0 ].toInt()
144
142
val minute: Int = realTime.split(" :" )[1 ].toInt()
145
- val calendar: Calendar = Calendar .getInstance(). apply {
146
- timeInMillis = System .currentTimeMillis()
147
- clear ()
148
- set( Calendar . YEAR , year )
149
- set(Calendar .MONTH , month )
150
- set(Calendar .DAY_OF_MONTH , day )
151
- set(Calendar .HOUR_OF_DAY , hour )
152
- set(Calendar .MINUTE , minute )
153
- }
154
- val alarmManager =
155
- context.getSystemService(Context .ALARM_SERVICE ) as ? AlarmManager
143
+ val calendar: Calendar =
144
+ Calendar .getInstance(). apply {
145
+ timeInMillis = System .currentTimeMillis ()
146
+ clear( )
147
+ set(Calendar .YEAR , year )
148
+ set(Calendar .MONTH , month )
149
+ set(Calendar .DAY_OF_MONTH , day )
150
+ set(Calendar .HOUR_OF_DAY , hour )
151
+ set( Calendar . MINUTE , minute)
152
+ }
153
+ val alarmManager = context.getSystemService(Context .ALARM_SERVICE ) as ? AlarmManager
156
154
if (repeatStatus == " once" ) {
157
155
alarmManager!! .setExactAndAllowWhileIdle(
158
- AlarmManager .RTC_WAKEUP ,
159
- calendar.timeInMillis,
160
- pendingAlarmIntent
156
+ AlarmManager .RTC_WAKEUP ,
157
+ calendar.timeInMillis,
158
+ pendingAlarmIntent
161
159
)
162
160
} else {
163
161
alarmManager!! .setRepeating(
164
- AlarmManager .RTC_WAKEUP ,
165
- calendar.timeInMillis,
166
- interval,
167
- pendingAlarmIntent
162
+ AlarmManager .RTC_WAKEUP ,
163
+ calendar.timeInMillis,
164
+ interval,
165
+ pendingAlarmIntent
168
166
)
169
167
}
170
168
Log .d(" debugging" , " alarm set successfully" )
171
169
}
172
170
173
171
fun deleteAlarm (context : Context , alarmId : String ) {
174
172
Thread {
175
- var reqAlarm: ActiveAlarm ?
176
- val db: AppDB = AppDB .getDatabase(context)
177
- val activeAlarmDao = db.activeAlarmDAO()
178
- val fetchedAlarms: List <ActiveAlarm > = activeAlarmDao!! .getById(alarmId)
179
- if (fetchedAlarms.isNotEmpty()) {
180
- reqAlarm = fetchedAlarms[0 ]
181
- activeAlarmDao.delete(reqAlarm)
182
-
183
- val activeAlarms: List <ActiveAlarm > = activeAlarmDao.getAll()
184
- // Log.d("debugging", "in deleteAlarm method kotlin, all active alarms: $activeAlarms")
185
-
186
- Log .d(
187
- " debugging" ,
188
- " alarm deleted: $alarmId , ${reqAlarm.time} , ${reqAlarm.repeatStatus} , ${reqAlarm.repeatEnd} , ${reqAlarm.taskId} , ${reqAlarm.taskName} , ${reqAlarm.taskDesc} , ${reqAlarm.label} , ${reqAlarm.finished} "
189
- )
190
- val alarmIntent = Intent (context, AlarmReceiver ::class .java).apply {
191
- putExtra(" alarmId" , alarmId)
173
+ var reqAlarm: ActiveAlarm ?
174
+ val db: AppDB = AppDB .getDatabase(context)
175
+ val activeAlarmDao = db.activeAlarmDAO()
176
+ val fetchedAlarms: List <ActiveAlarm > = activeAlarmDao!! .getById(alarmId)
177
+ if (fetchedAlarms.isNotEmpty()) {
178
+ reqAlarm = fetchedAlarms[0 ]
179
+ activeAlarmDao.delete(reqAlarm)
180
+
181
+ val activeAlarms: List <ActiveAlarm > = activeAlarmDao.getAll()
182
+ // Log.d("debugging", "in deleteAlarm method kotlin, all active alarms:
183
+ // $activeAlarms")
184
+
185
+ Log .d(
186
+ " debugging" ,
187
+ " alarm deleted: $alarmId , ${reqAlarm.time} , ${reqAlarm.repeatStatus} , ${reqAlarm.repeatEnd} , ${reqAlarm.taskId} , ${reqAlarm.taskName} , ${reqAlarm.taskDesc} , ${reqAlarm.label} , ${reqAlarm.finished} "
188
+ )
189
+ val alarmIntent =
190
+ Intent (context, AlarmReceiver ::class .java).apply {
191
+ putExtra(" alarmId" , alarmId)
192
+ }
193
+ val pendingAlarmIntent =
194
+ PendingIntent .getBroadcast(
195
+ context,
196
+ alarmId.toInt(),
197
+ alarmIntent,
198
+ PendingIntent .FLAG_IMMUTABLE or
199
+ PendingIntent .FLAG_UPDATE_CURRENT
200
+ )
201
+ val alarmManager =
202
+ context.getSystemService(Context .ALARM_SERVICE ) as ? AlarmManager
203
+ alarmManager!! .cancel(pendingAlarmIntent)
204
+ }
192
205
}
193
- val pendingAlarmIntent =
194
- PendingIntent .getBroadcast(
195
- context,
196
- alarmId.toInt(),
197
- alarmIntent,
198
- PendingIntent .FLAG_IMMUTABLE or PendingIntent .FLAG_UPDATE_CURRENT
199
- )
200
- val alarmManager =
201
- context.getSystemService(Context .ALARM_SERVICE ) as ? AlarmManager
202
- alarmManager!! .cancel(pendingAlarmIntent)
203
- }
204
- }.start()
206
+ .start()
205
207
}
206
-
0 commit comments