[Android] Alarm をNotificationManager で通知する

前回は AlarmManger タイマー機能 でアラームを発生し BroadcastReceiver で受け取りました。今回は、その受け取ったアラームを NotificationManager を使って通知してみたいと思います。
 
notification 03 - [Android] Alarm をNotificationManager で通知する

Android Studio 3.1
Android 8.1.0

 



NotificationChannel

 
Notification、通知のことですが「時間になりました。」などの通知がStatus barや通知ドロワーに表示されるものです。
 
notification 02 - [Android] Alarm をNotificationManager で通知する
 
notification 01 - [Android] Alarm をNotificationManager で通知する
 
同時に通知音やバイブレータでユーザーにお知らせする機能です。
 
API level 26からは NotificationChannel が追加されました。アプリの通知のプライオリティを設定することができます。

また、アイコンに通知があった場合に通知ドットをつけることができます。いわゆるバッジです。また長押しするとメッセージをダイアログで出したりと色々とChannelで設定することができます。
 
notification 05 - [Android] Alarm をNotificationManager で通知する
 

 

NotificationManager

 
BroadcastReceiverを継承したクラスの onReceive() でアラームを受け取り通知する設定です。
 
NotificationManager:
インスタンスは getSystemService() を使って以下のように生成

 

NotificationChannel: 

必ずしも全て必要ではありませんので選択できます。

Notification.Builder:
Notification.Builder(Context context)は非推奨になり追加としてchannel IDを引数として使っていきます。

 
例えばこのように設定します。

 
notify() が最終的に表示させる設定です。
notify(int id, Notification notification)

 

Alarm を PendingIntent で設定

 
10秒後のアラームを設定してみます。以前このページで繰り返しをやっていましたがDoze モードの対応が必要なので簡略化のため単発アラームにしました。(Dozeモードでもアラームを使う場合は以下のように色々と設定する必要があります。)
 

setexact 01b 100x100 - [Android] Alarm をNotificationManager で通知する
AlarmManagerで繰り返しのアラーム機能を実装したいのですが、バックグラウンド実行制限があります。本来の機能として定期的なバックグラ...

 
BroadcastReceiver でそれぞれを区別するために受け取るためにgetBroadcast() 第二引数、requestCode を設定して Intent に追加して送ります。
 

 

アラームをキャンセル

 
単発アラームですが一応cancel の設定もしておきます。
登録したものと同じIntentとPendingIntentからAlarmManagerを設定して
cancel(pending)を呼び出して解除します。
 

 

サンプルコード

 
コードをまとめてみます
 
AndroidManifest.xml

 
MainActivity.java

 
AlarmNotification.java

 
一応レイアウトも
activity_main.xml

 
リソースです
strings.xml

 
これで10秒後に以下の変化が現れます

  • アラーム音
  • 通知ドロワーを引き出すとメッセージ
  • ステータスバーにアラームアイコンが表示
  • アプリのアイコンに通知ドット(バッジ)が現れ、長押しするとメッセージが出ます

notification 03 - [Android] Alarm をNotificationManager で通知する
 
 
関連:

 
References:
NotificationChannel | Android Developers
GitHub – googlesamples/android-NotificationChannels
Notification.Builder | Android Developers

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう、時間の制約がないところが一番の魅力です。

以下の3つはAndroidが学習できるオンラインスクールです。


TECH ACADEMY
Androidアプリコース



侍エンジニア塾
侍エンジニア塾 無料体験レッスン



CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp





正直ネットや本では限界があります。直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影

Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

  • このエントリーをはてなブックマークに追加

フォローする