AlarmManager dalam Android

AlarmManager

Adalah sebuah Class yang menyediakan akses ke service dari sistem alarm.

Service dari sistem alarm ini digunakan untuk menjalankan aplikasi pada waktu yang telah dijadwalkan dengan cara membroadcast intent dimana intent inilah yang akan menjalankan aplikasi.

Metode set()

Digunakan untuk menjalankan aplikasi pada satu waktu yang telah dijadwalkan.

Syntax:

set(int tipe_waktu_alarm, long waktu_penjadwalan, PendingIntent intent_yang_dijalankan)

Contoh Kasus:

Saya ingin mengeluarkan pesan flash yang berisi tulisan “Alarm dalam 10 detik” dimana pesan ini tampil 10 detik setelah aplikasi dijalankan seperti terlihat pada gambar dibawah ini:

Pertanyaan:

Bagaimana cara membuatnya … ?

Jawaban:

Buatlah satu projek Android bernama alarm dengan sebuah activity bernama Alarm.java

Kode dalam Acitivity Alarm

public class Alarm extends Activity {

AlarmManager jadwal;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
jadwal = (AlarmManager) getSystemService(ALARM_SERVICE);

Intent i = new Intent(this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  i, 0);
jadwal.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+( 10*1000), pendingIntent);

 

}

}

Keterangan:

  • Tekan CTRL+SHIT+O untuk mengimport library yang dibutuhkan.
  • jadwal = (AlarmManager) getSystemService(ALARM_SERVICE), kode ini digunakan untuk membuat objek dari AlarmManager yaitu objek jadwal.
  • Intent i = new Intent(this, TimeAlarm.class), kode ini digunakan untuk mendefinisikan class yang akan dituj yaitu class TimeAlarm.
  • PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  i, 0), Kode ini digunakan untuk membuat PendingIntent.
  • jadwal.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+( 10*1000), pendingIntent), Kode ini digunakan untuk mengeset alarm dalam 10 detik untuk menjalankan pendingIntent.
  • System.currentTimeMillis(), kode ini digunakan untuk mendapatkan waktu sekarang dalam bentuk milisecond.
  • (10*1000) menghasilkan 1o ribu dalam satuan milisecond jadi jika dikonversi ke detik hasilnya menjadi 10 detik.

Membuat Class TimeAlarm

Buatlah satu class bernama TimeAlarm.java dengan isi seperti dibawah ini:

public class TimeAlarm extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

Toast.makeText(context, “Alarm dalam 10 detik”, Toast.LENGTH_SHORT).show();

}

}

Keterangan:

  • Karena AlarmManager membroadcast intent maka kita perlu menerimanya menggunakan BroadcastReceiver dengan menggunakan metode onReceive().

AndroidManifest

Bukalah file AndroidManifest.xml lalu masukkan kode berikut ini:

<receiver android:name=”TimeAlarm”  />

Metode setRepeating()

Digunakan untuk menjalankan aplikasi secara berulang-ulang pada interval waktu yang telah ditentukan.

Syntax:

set(int tipe_waktu_alarm, long waktu_penjadwalan, long interval_waktu, PendingIntent intent_yang_dijalankan)

Contoh Kasus:

Saya ingin mengeluarkan pesan flash yang berisi tulisan “Alarm dalam 10 detik” dimana pesan ini selalu tampil 10 detik secara berulang-ulang setelah aplikasi dijalankan.

Pertanyaan:

Bagaimana cara membuatnya … ?

Jawaban:

Rubahlah metode set() dalam acitivity Alarm.java yaitu:

jadwal.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+( 10*1000), pendingIntent);

Menjadi seperti dibawah ini:

jadwal.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),( 10*1000), pendingIntent);

Keterangan:

  • AlarmManager.RTC_WAKEUP adalah waktu alarm dalam satuan milisecond yang akan membangunkan device ketika akan mati.
  • System.currentTimeMillis() adalah waktu yang digunakan untuk menjalankan alarm.
  • ( 10*1000) adalah waktu yang digunakan untuk mengulang-ngulang alarm dalam interval 10  ribu milisecond yaitu 10 detik.
  • pendingIntent adalah Class yang akan menerima intent dari Alarm.

Pertanyaan:

Bagaimana caranya agar dapat menjalankan activity dari BroadcastReceiver … ?

Jawaban:

Kamu bisa gunakan kode seperti dibawah ini:

public class TimeAlarm extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

Intent i=new Intent(context, class_tujuan.class);

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(i);

}

}

Pertanyaan:

Bagaimana caranya agar dapat menjalankan service dari BroadcastReceiver … ?

Jawaban:

Kamu bisa gunakan kode seperti dibawah ini:

public class TimeAlarm extends BroadcastReceiver { 

@Override
public void onReceive(Context context, Intent intent) {

Intent i=new Intent(context, class_tujuan.class);

context.startService(i);

}

}



Jika tutorial ini bermanfaat silahkan katakan ‘Terima Kasih Fahmi Basya Kartapura‘.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *