Tuesday, May 24, 2016

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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 :-)

Powered by Blogger.

Pages

About me

Abdulloh Yugo Prayogo. anak kecil yang sangat haus dengan yang namanya teknologi, tapi tetep berusaha untuk memahami dan mengikuti perkembangan tentang teknologi di masa yang akan datang.

Popular Posts

Blog Archive