Pada tutorial ini kita akan membahas bagaimana membuat aplikasi alarm sederhana pada platform android

Membuat Aplikasi Alarm Sederhana di Android

Pada tutorial kali ini kita akan membuat aplikasi alarm pada android. Aplikasi ini akan membunyikan alarm pada waktu yang sudah ditentukan oleh user. Untuk mempersingkat waktu, berikut hal yang dibutuhkan untuk membuat aplikasi ini.

  • IDE (Android Studio)
  • Sound untuk alarm format mp3
  • MainActivity
  • TimePicker Dialog
  • OnTimeSetListener
  • Receiver Class

Pertama buat project baru dengan minSdkVersion 8 dan targetSdkVersion 15. Beri nama sesuka anda.

Setelah itu buka layout untuk MainActivity dan ubah menjadi seperti ini.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="My Alarm"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <AnalogClock
        android:id="@+id/analogClock1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/startSetDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@android:drawable/ic_lock_idle_alarm"
        android:text="Set Alarm" />

    <TextView
        android:id="@+id/alarmprompt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center" />

</LinearLayout>

 Jika sudah maka tampilan akan menjadi seperti ini

 

Pada Activity ini kita menggunakan view AnalogClock hanya untuk sekedar menampilkan waktu. Button Set Alarm digunakan untuk menentukan kapan alarm berbunyi. Sekarang kita mau saat user menekan button maka akan ditampilkan TimePicker sehingga user bisa menentukan jam dan menit berapa alarm akan berbunyi.

 

Tambahkan beberapa field berikut pada MainActivity. Field tersebut akan digunakan untuk view yang ada pada layout dan sebuah field untuk requestCode.

TimePicker myTimePicker; 
Button buttonstartSetDialog; 
TextView textAlarmPrompt; 
 
TimePickerDialog timePickerDialog; 
 
final static int RQS_1 = 1; 

Pada fungsi onCreate tambahkan baris code ini 

textAlarmPrompt = (TextView) findViewById(R.id.alarmprompt); 
 
buttonstartSetDialog = (Button) findViewById(R.id.startSetDialog); 
buttonstartSetDialog.setOnClickListener(new OnClickListener() { 
 
   @Override 
   public void onClick(View v) { 
      textAlarmPrompt.setText(""); 
      openTimePickerDialog(false); 
 
   } 
}); 

Sekarang saat user menekan button Set Alarm maka aplikasi akan menampilkan TimePicker dengan fungsi berikut. Tambahkan baris code ini ke MainActivity.

private void openTimePickerDialog(boolean is24r) { 
   Calendar calendar = Calendar.getInstance(); 
 
   timePickerDialog = new TimePickerDialog(MainActivity.this, 
         onTimeSetListener, calendar.get(Calendar.HOUR_OF_DAY), 
         calendar.get(Calendar.MINUTE), true); 
   timePickerDialog.setTitle("Set Alarm Time"); 
 
   timePickerDialog.show(); 
 
}

Jika waktu sudah diset maka kita memerlukan satu listener lagi yaitu OnTimeSetListener. Berikut baris code nya.

OnTimeSetListener onTimeSetListener = new OnTimeSetListener() { 
 
   @Override 
   public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
 
      Calendar calNow = Calendar.getInstance(); 
      Calendar calSet = (Calendar) calNow.clone(); 
 
      calSet.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      calSet.set(Calendar.MINUTE, minute); 
      calSet.set(Calendar.SECOND, 0); 
      calSet.set(Calendar.MILLISECOND, 0); 
 
      if (calSet.compareTo(calNow) <= 0) { 
         // Today Set time passed, count to tomorrow 
         calSet.add(Calendar.DATE, 1); 
         Log.i("hasil", " =<0"); 
      } else if (calSet.compareTo(calNow) > 0) { 
         Log.i("hasil", " > 0"); 
      } else { 
         Log.i("hasil", " else "); 
      } 
 
      setAlarm(calSet); 
   } 
};

 

Sekarang kita perlu mengirim waktu yang sudah ditentukan ke receiver alarm (receiver akan dibuat setelah ini).

 

private void setAlarm(Calendar targetCal) { 
 
   textAlarmPrompt.setText("***\n" + "Alarm set on " + targetCal.getTime() 
         + "\n***"); 
 
   Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); 
   PendingIntent pendingIntent = PendingIntent.getBroadcast( 
         getBaseContext(), RQS_1, intent, 0); 
   AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
   alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), 
         pendingIntent); 
 
}

 

Terakhir kita membuat sebuah class baru bernama AlarmReceiver dengan extends BroadcastReceiver. Class ini akan bekerja sesuai namanya yaitu sebagai receiver .

 

package com.alarm.app; 
 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.widget.Toast; 
 
public class AlarmReceiver extends BroadcastReceiver { 
   MediaPlayer player; 
 
   @Override 
   public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      Toast.makeText(context, "Alarm aktif!", Toast.LENGTH_LONG).show(); 
      player = MediaPlayer.create(context, R.raw.alarm); 
      player.start(); 
   } 
 
}

Sebelum kita bisa menguji aplikasi alarm yang sudah dibuat kita memerlukan sebuah file suara untuk dijadikan alarm. Buatlah sebuah folder bernama raw di dalam res folder.

Buka folder tersebut lalu simpan file suara yang akan digunakan sebagai alarm. Beri nama file tersebut dengan alarm.mp3 agar lebih mudah.

Ubah AndroidManifest.xml dan tambahkan receiver pada application seperti baris code di bawah ini.

FULL SOURCE CODE

MainActivity.java

package com.alarm.app;

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

public class MainActivity extends Activity {

   TimePicker myTimePicker;
   Button buttonstartSetDialog;
   TextView textAlarmPrompt;

   TimePickerDialog timePickerDialog;

   final static int RQS_1 = 1;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      textAlarmPrompt = (TextView) findViewById(R.id.alarmprompt);
 
      buttonstartSetDialog = (Button) findViewById(R.id.startSetDialog);
      buttonstartSetDialog.setOnClickListener(new OnClickListener() {

         @Override
         public void onClick(View v) {
            textAlarmPrompt.setText("");
            openTimePickerDialog(false);

         }
      });

   }

   private void openTimePickerDialog(boolean is24r) {
      Calendar calendar = Calendar.getInstance();

      timePickerDialog = new TimePickerDialog(MainActivity.this,
            onTimeSetListener, calendar.get(Calendar.HOUR_OF_DAY),
            calendar.get(Calendar.MINUTE), true);
      timePickerDialog.setTitle("Set Alarm Time");

      timePickerDialog.show();

   }

   OnTimeSetListener onTimeSetListener = new OnTimeSetListener() {

      @Override
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

         Calendar calNow = Calendar.getInstance();
         Calendar calSet = (Calendar) calNow.clone();

         calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
         calSet.set(Calendar.MINUTE, minute);
         calSet.set(Calendar.SECOND, 0);
         calSet.set(Calendar.MILLISECOND, 0);

         if (calSet.compareTo(calNow) <= 0) {
            // Today Set time passed, count to tomorrow
            calSet.add(Calendar.DATE, 1);
            Log.i("hasil", " =<0");
         } else if (calSet.compareTo(calNow) > 0) {
            Log.i("hasil", " > 0");
         } else {
            Log.i("hasil", " else ");
         }

         setAlarm(calSet);
      }
   };

   private void setAlarm(Calendar targetCal) {

      textAlarmPrompt.setText("***\n" + "Alarm set on " + targetCal.getTime()
            + "\n***");

      Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(
            getBaseContext(), RQS_1, intent, 0);
      AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
      alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),
            pendingIntent);

   }

}

 

AlarmReceiver.java

package com.alarm.app;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver {
   MediaPlayer player;

   @Override
   public void onReceive(Context context, Intent intent) {
      // TODO Auto-generated method stub
      Toast.makeText(context, "Alarm aktif!", Toast.LENGTH_LONG).show();
      player = MediaPlayer.create(context, R.raw.alarm);
      player.start();
   }

}

                               

 

 

Sekian teman-teman jagocoding tutorial kali ini. Semoga bermanfaat :-)


About Author

Hasyemi Rafsanjani Asyari

null. I'm proud to be Stalker. Currently Mahasiswa Politeknik Negeri Jakarta. Currently Microsoft Student Partners Indonesia Regional Jabodetabek. Founder of a Company.


Comment & Discussions

  • Irfani Kurniawan
    boleh minta aplikasinya beserta codingnya ?

  • Dimas Agung
    ini work buat android studio???

  • Rachmat Danu
    min , boleh minta aplikasi sama codinganya?
    rachmat61258@gmail.com

  • Devvara Rishivian
    terima kasih gan, sudah sukses
    cuma kurangnya alarm tidak bisa set di hari lain ya
    dan alarm tidak mati mati

  • Joni Ventura
    gan kasih coding nya buat matiin alarmnya dong, ini gw coba set pake lagunya DT 26menit lagunya dan gak bisa mati

  • Please LOGIN before if you want to give the comment.