ImmTimer作り中(その7)
ImmTimerウイジェットを30分にセットしてカウントダウンが動作するのを確認後、通話断ボタンを押下すると30分後に通知がされない(画面真っ暗なまま、アラーム音も出ない)問題がありました。
この問題に対してちょこちょこ試行錯誤しながら一ヶ月以上経ってしまいましたが、やっと解決方法が見つかりました。
AlarmManagerによりActivityが起こされたときに、
1.ロックを解除する
KeyguardLock.disableKeyguard()で画面ロックを外す。
後でKeyguardLock.reenableKeyguard()。
2.パワーマネジメントで画面を明るくする
PowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK...)
も実行し、画面ONする。
これら2つを併用することで、
30分経過→画面点灯→アラームダイアログ表示→OKボタン押す→画面消灯
という希望した動作をすることが出来ました。
いや~大変でした。