46 lines
1.7 KiB
Kotlin
46 lines
1.7 KiB
Kotlin
|
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 app’s 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))
|
|||
|
}
|
|||
|
}
|