알람(Alarms)이란?
 - Application의 시작, Software Update 체크, 종료와 같이 지정된 일들을 사용자에게 
   알려줍니다.
   알람 기능은 알람을 인텐트와 함께 등록시켜줌으로써 동작되는데, 알람은 정해진 시간이
   되면, 인텐트를 브로드 케스팅 합니다.
   그리고 Sleep Mode인 경우에도 지정된 시간이 되면 지정된 Application을 자동으로 
   수행시킵니다.
   알람은 AlarmManager를 이용하여, 사용자가 지정된 시간에, 원하는 동작을 하도록 
   하는데, AlarmManager의 Method를 다음과 같이 정리하였습니다.

AlarmManager 
   void cancel(PendingIntent intent) : 일치하는 Intent Alarm 제거
   void set(int type, long triggerAtTime, PendingIntent operation) : 알람 설정.
   void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)      : 반복 알람 설정.
   void setTimeZone(String TimeZone) : 알람을 위한 시간대 설정. 

보통 Context.getSystemService(contextALARM_SERVICE) 메서드를 이용하여, 알람 매니저의 인스턴스를 생성합니다.

예제소스
Manifast.xml
 <application android:icon="@drawable/clock">
        <activity android:name=".GenerateAlarm" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".AlarmReceiver" android:process=":remote" />
    </application>

AlarmReceiver.java

 public class AlarmReceiver extends BroadcastReceiver {

    public void onReceiveIntent(Context context, Intent intent) {
        Toast.makeText(context, R.string.app_name, Toast.LENGTH_SHORT).show();
    }

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

    }
}


GenerateAlarm.java

 public class GenerateAlarm extends Activity {

    Toast mToast;

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        Button button = (Button) findViewById(R.id.set_alarm_button);
        button.setOnClickListener(this.mOneShotListener);
    }

    private OnClickListener mOneShotListener = new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(GenerateAlarm.this, AlarmReceiver.class);

            PendingIntent appIntent = PendingIntent.getBroadcast(GenerateAlarm.this, 0, intent, 0);

            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.SECOND, 30);

            AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), appIntent);

            if (GenerateAlarm.this.mToast != null) {
                GenerateAlarm.this.mToast.cancel();
            }
            GenerateAlarm.this.mToast = Toast.makeText(GenerateAlarm.this, R.string.alarm_message, Toast.LENGTH_LONG);
            GenerateAlarm.this.mToast.show();
        }
    };

}


+ Recent posts