like life lives

技術以外のことに興味が寄りすぎな技術ブログ

Android:時間を指定してNotificationを発生させる

Androidの通知領域にポコンと出てくる、いわゆるNotificationを発生させるにはいくつか方法がある。

ただ2013/5/18現在、ユーザーが仕様する端末はAndroid2.x系と4.x系が混在しており、両方に無理なく対応させようとするとほぼ一つの方法にしぼられる。

それはNotificationCompat.Builderだ。

そして最近、指定した時間にNotificationを発生させたいという目的があってちょっと調べていたのだが、
NotificationCompatでの指定の方法があまりに紛らわしかったのでメモをしておく。


まず公式サイトのNotificationCompat.Builderのページを見てみる。

http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html

このクラスの関数リストの一番下に

setWhen

という関数がある。

単純に考えればこの関数を使えば通知時間を指定できそうだが、いくらやってもNotificationManager.notify関数を実行した時点で通知が発生してしまう。

この関数、実際に通知される時間を指定するのではなく、通知エリア内のテキストエリアに発生した時間か表示するための関数らしい。

  • ソース

http://androiddev.orkitra.com/?p=46419


いや公式ドキュメント読んだら誰でも勘違いするのではないだろうか?
こっちの実装例にも書いてないよ?

http://developer.android.com/training/notify-user/build-notification.html


ググってもロクに情報が出てきません。

じゃあどうするかというとAlarmManagerを使う。

AlarmManagerでサービスを起動し、onStartCommand関数内で通知を出しましょう。

まぎらわしいわー