Thomas Dy 7 rokov pred
rodič
commit
295eb3c040

+ 1 - 4
src/main/kotlin/MainActivity.kt

@@ -1,7 +1,6 @@
 package com.pleasantprogrammer.mpp;
 
 import android.app.Activity
-import android.content.Intent
 import android.os.Bundle
 
 import org.jetbrains.anko.*
@@ -21,9 +20,7 @@ class MainActivity : Activity() {
   }
 
   fun sendRequest() {
-    val intent = Intent(SendService.ACTION_SEND)
-    intent.setClass(this, SendService::class.java)
-    startService(intent)
+    startService(SendService.makeIntent(this))
   }
 
 }

+ 24 - 0
src/main/kotlin/SendService.kt

@@ -1,6 +1,8 @@
 package com.pleasantprogrammer.mpp;
 
+import android.app.AlarmManager
 import android.app.IntentService
+import android.app.PendingIntent
 import android.content.Context
 import android.content.Intent
 import android.content.SharedPreferences
@@ -10,6 +12,14 @@ class SendService : IntentService("SendService") {
 
   companion object {
     val ACTION_SEND = "com.pleasantprogrammer.mpp.action.SEND"
+
+    val INTERVAL = 60 * 1000L
+
+    fun makeIntent(ctx: Context): Intent {
+      val intent = Intent(ACTION_SEND)
+      intent.setClass(ctx, SendService::class.java)
+      return intent
+    }
   }
 
   val sharedPreferences: SharedPreferences by lazy {
@@ -21,6 +31,20 @@ class SendService : IntentService("SendService") {
       val smsManager = SmsManager.getDefault()
       smsManager.sendTextMessage("5554", null, "GS99", null, null)
       sharedPreferences.edit().putLong("last_requested", System.currentTimeMillis()).commit()
+      scheduleNext()
     }
   }
+
+  fun scheduleNext() {
+    val from = sharedPreferences.getLong("last_requested", -1)
+    if(from < 0) return
+
+    val pendingIntent = PendingIntent.getService(
+        this, 0, makeIntent(this), PendingIntent.FLAG_ONE_SHOT
+    )
+
+    val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
+    alarmManager.cancel(pendingIntent)
+    alarmManager.set(AlarmManager.RTC_WAKEUP, from + INTERVAL, pendingIntent)
+  }
 }