< 개발 환경 > |
안드로이드/Android 알람매니저(AlarmManger)를 사용해서 알람(Alarm) 등록하기~!
이미지 출처 : http://www.funshop.co.kr/vs/detail.aspx?categoryno=1338&itemno=8041
안드로이드에서 알람(Alarm)은 우리가 현재 사용하는 알람이라고 생각하시면 됩니다. 평소 시계나 휴대폰 알람을 맞춰 놓고 매일 아침 기상시간, 특정한 날, 꼭 잊지 말아야 할 시간이 왔을 때 나에게 알려주는 용도로 사용하는데요..!! 안드로이드 알람(Alarm) 도 마찬가지로 내가 꼭 필요한 시점에 한번, 또는 매번 반복하는 기능을 제공 합니다.
자 그럼 사용 방법에 대해 알아 보겠습니다.~!
package arabiannight.tistory.com.alarmmanager; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class TestAlarmManagerActivity extends Activity implements OnClickListener{ private static final String TAG = "TestAlarmManagerActivity"; private static final String INTENT_ACTION = "arabiannight.tistory.com.alarmmanager"; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); setLayout(); } @Override public void onClick(View v){ switch (v.getId()) { case R.id.btn_set_alarm: setAlarm(this, 5000); Toast.makeText(getApplicationContext(), "setAlarm()", Toast.LENGTH_SHORT).show(); break; case R.id.btn_release_alarm: releaseAlarm(this); Toast.makeText(getApplicationContext(), "releaseAlarm()", Toast.LENGTH_SHORT).show(); break; default: break; } } // 알람 등록 private void setAlarm(Context context, long second){ Log.i(TAG, "setAlarm()"); AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent Intent = new Intent(INTENT_ACTION); PendingIntent pIntent = PendingIntent.getActivity(context, 0, Intent, 0); alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + second, pIntent); } // 알람 해제 private void releaseAlarm(Context context){ Log.i(TAG, "releaseAlarm()"); AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent Intent = new Intent(INTENT_ACTION); PendingIntent pIntent = PendingIntent.getActivity(context, 0, Intent, 0); alarmManager.cancel(pIntent); // 주석을 풀면 먼저 실행되는 알람이 있을 경우, 제거하고 // 새로 알람을 실행하게 된다. 상황에 따라 유용하게 사용 할 수 있다. // alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 3000, pIntent); } /* * Layout */ private Button[] mButtons; private void setLayout(){ mButtons = new Button[]{ (Button) findViewById(R.id.btn_set_alarm), (Button) findViewById(R.id.btn_release_alarm) }; for(Button b : mButtons) b.setOnClickListener(this); } }
알람 등록 하는 부분 입니다. 등록한 초(second) 시간이 되면, PendingIntent 를 실행해 줍니다. PendingIntent 에는 Intent 를 추가해 주기 때문에, 해당 Intent Action을 가진 Intent를 호출해 줍니다.
// 알람 등록 private void setAlarm(Context context, long second){ Log.i(TAG, "setAlarm()"); AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent Intent = new Intent(INTENT_ACTION); PendingIntent pIntent = PendingIntent.getActivity(context, 0, Intent, 0); alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + second, pIntent); }
getActivity 대신 브로드캐스트를 호출하고 싶으면 getBroadcast , 서비스를 호출하고 싶으면, getService 를 호출 하시면 됩니다.
PendingIntent pIntent = PendingIntent.getActivity(context, 0, Intent, 0); |
PendingIntent를 사용하지 않고, Activity를 호출하는 또 하나의 방법은 Intent.FLAG_ACTIVITY_NEW_TASK 를 추가 하셔서 호출 하는 방법이 있습니다.
만약 반복 사용을 위한 알람을 등록하고 싶으시면 alarmManager.setRepeating 메서드를 이용하시면 반복되는 알람 작업을 수행 할 수 있습니다.
알람을 해제 하는 부분 입니다.
// 알람 해제 private void releaseAlarm(Context context){ Log.i(TAG, "releaseAlarm()"); AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent Intent = new Intent(INTENT_ACTION); PendingIntent pIntent = PendingIntent.getActivity(context, 0, Intent, 0); alarmManager.cancel(pIntent); // 주석을 풀면 먼저 실행되는 알람이 있을 경우, 제거하고 // 새로 알람을 실행하게 된다. 상황에 따라 유용하게 사용 할 수 있다. // alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 3000, pIntent); }
alarmManager.cancel(PendingIntent pendingintent) 를 넣어주시면, 해당 Intent의 Action을 가진 PendingInetnt를 제거해 줍니다. 자 어떠신가요?ㅎㅎ 꼭 한번씩 사용해 보시고, 유용하게 사용하셨으면 좋겠습니다.
파일첨부 :
스크린샷 :
'Android > Date' 카테고리의 다른 글
안드로이드/Android 원하는 시간에 작업을 수행하려면? - AlarmManager 사용하기 (0) | 2012.06.12 |
---|---|
안드로이드/Android 현재 시간 반환(밀리초) (0) | 2012.05.15 |
안드로이드/Android TimePiker 사용하기 ~ ! (0) | 2011.11.14 |
안드로이드/Andoird DatePiker 사용하기 ~ ! (0) | 2011.11.14 |