|
< 개발 환경 > |
안드로이드/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 |
TestAlarmManager.zip