1. Create a BroadcastReceiver for receiving the pending intent from AlarmManager.
import android.widget.Toast import android.content.Intent import android.content.BroadcastReceiver import android.content.Context class MyAlarmReceiver: BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show() } }
2. Register the above BroadcastReceiver in the manifest file inside the application tag.
<receiver android:name=".MyAlarmReceiver"/>
3. Creating the alarm manager and starting it in an Activity.
import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.app.AlarmManager import android.content.Context import android.app.PendingIntent import android.content.Intent import kotlinx.android.synthetic.main.activity_main.* import java.util.* class MainActivity: AppCompatActivity() { private val REQUEST_CODE = 100 private lateinit var alarmManager: AlarmManager private lateinit var pendingIntent: PendingIntent override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) tv_current_time.text = Date().toString() // Creating the pending intent to send to the BroadcastReceiver alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager val intent = Intent(this, MyAlarmReceiver::class.java) pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT) // Setting the specific time for the alarm manager to trigger the intent, in this example, the alarm is set to go off at 23:30, update the time according to your need val calendar = Calendar.getInstance() calendar.timeInMillis = System.currentTimeMillis() calendar.set(Calendar.HOUR_OF_DAY, 23) calendar.set(Calendar.MINUTE, 30) // Starts the alarm manager alarmManager.setRepeating( AlarmManager.RTC, calendar.timeInMillis, AlarmManager.INTERVAL_DAY, pendingIntent ) } override fun onDestroy() { super.onDestroy() // Cancels the pendingIntent if it is no longer needed after this activity is destroyed. alarmManager.cancel(pendingIntent) } }
No comments:
Post a Comment
Note: only a member of this blog may post a comment.