mucchinのAndroid戦記

Androidアプリのアラーム機能

Androidアプリでめざまし時計のようなアラーム機能を実装する方法はないの?

Androidアプリでは、そのAndroidアプリが起動していない状態でも、指定した時刻にそのAndroidアプリを起動させることができるアラーム機能があります。
仕様用途としては、文字通り目覚まし時計のような使い方もできますし、ある決まった時間になんらかのサーバへ接続させる、というような事もできます。


単純にアラームを設定する簡単な例を説明します。
アラームの設定時は、まず、AlarmManagerというアラームを司るマネージャのインスタンスを取得します。



AlarmManager mng =
 (AlarmManager)getSystemService(Context.ALARM_SERVICE);


あとはこのマネージャのset()メソッドを使って、アラームを設定するだけです。
AlarmManager.set()の使い方について説明します。
このAlarmManager.set()の第一引数には、起動時間の設定方法を、AlarmManagerクラスの定数で指定します。
以下の4つの定数が用意されています。

AlarmManager.ELAPSED_REALTIME

電源ON時からの経過時間の値で指定します。

AlarmManager.ELAPSED_REALTIME_WAKEUP

電源ON時からの経過時間の値で指定します。もしスリープモードに入っている場合は電源を入れてくれます。

AlarmManager.RTC

時刻で指定します。

AlarmManager.RTC_WAKEUP

時刻で指定します。もしスリープモードに入っている場合は電源を入れてくれます。


スポンサーリンク




AlarmManager.set()の第二引数には、起動時間を設定します。
第一引数に設定した起動方法によって、意味が異なります。

ELAPSED_REALTIME or ELAPSED_REALTIME_WAKEUPの場合

SystemClock.elapsedRealtimeが示す値を指定します。
電源ONしてからの経過時間の事です。

RTC or RTC_WAKEUPの場合

System.currentTimeMillisが示す値を指定します。
現在時刻の事です。


第三引数には、アラーム起動時に発行させるIntentを設定します。
具体例としては、下記のようなサンプルコードになります。


//アラームマネージャの取得
AlarmManager mng =
 (AlarmManager)getSystemService(Context.ALARM_SERVICE);

//GregorianCalendarの生成
GregorianCalendar calendar;
calendar = new GregorianCalendar();

<GregorianCalendarの設定処理は省略>

//発行するIntentの生成
Intent i =
 new Intent(getApplicationContext(),AlarmCheckActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0);

//Alarmをセット
mng.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);


一部抜粋ですが、上記のような感じで、アラームを設定できます。

あとは応用次第ですね。

単に目覚まし時計のように使うだけでなく、例えばTwitterクライアントのようなアプリで、一定時間に自分宛のメッセージが無いか確認する、というような使い方もできると思います。


スポンサーリンク

URL :
TRACKBACK URL :

Comments & Trackbacks

  • Comments ( 2 )
  • Trackbacks ( 0 )
  1. 通りすがりのプログラマ

    RTCとRTC_WAKEUPの説明が逆になってませんか?
    私の認識違い?

  2. コメント有難う御座います。
    確認したところ、おっしゃる通り、逆となっていました。
    誤った情報を載せてしまい、申し訳御座いません。
    ご指摘、誠に有難う御座います。

Leave a Reply

*
*
* (公開されません)

CAPTCHA


*

Return Top