Massive/android/app/src/main/java/com/massive/AlarmModule.kt

46 lines
1.7 KiB
Kotlin
Raw Normal View History

2022-07-05 00:43:04 +00:00
package com.massive
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import android.app.PendingIntent
import android.app.AlarmManager
import androidx.annotation.RequiresApi
import com.facebook.react.bridge.ReactMethod
import android.content.Intent
import com.massive.MyBroadcastReceiver
import android.app.AlarmManager.AlarmClockInfo
import android.content.Context
import android.os.Build
import android.util.Log
// replace com.your-app-name with your apps name
class AlarmModule internal constructor(context: ReactApplicationContext?) :
ReactContextBaseJavaModule(context) {
private var pendingIntent: PendingIntent? = null
private var alarmManager: AlarmManager? = null
override fun getName(): String {
return "AlarmModule"
}
@RequiresApi(api = Build.VERSION_CODES.O)
@ReactMethod
fun timer(milliseconds: Int) {
Log.d("AlarmModule", "Queue alarm for $milliseconds delay")
val intent = Intent(reactApplicationContext, MyBroadcastReceiver::class.java)
pendingIntent = PendingIntent.getBroadcast(
reactApplicationContext, 69, intent, PendingIntent.FLAG_IMMUTABLE
)
alarmManager =
reactApplicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val info = AlarmClockInfo(System.currentTimeMillis() + milliseconds, pendingIntent)
alarmManager!!.setAlarmClock(info, pendingIntent)
}
@ReactMethod
fun stop() {
Log.d("AlarmModule", "Request to stop timer.")
alarmManager?.cancel(pendingIntent)
reactApplicationContext.stopService(Intent(reactApplicationContext, AlarmService::class.java))
}
}