カウントダウンタイマーがあり、オフになると(ゼロになると)アプリにフォーカスがあるかどうかを確認します。そうでない場合は、通知バーで通知を起動します。通知をクリックすると、アプリが再度開きます。これですべて正常に機能しますが、画面がオフになった場合、タイマーは継続して通知を適切なタイミングで利用できますが、画面をオンに戻すまで実際に振動したり鳴ったりすることはありません。次に、キューなどで待機していたかのように通知を表示します。
画面がオフになったときに通知マネージャーが実際にユーザーに警告するようにするにはどうすればよいですか?
更新:タイマーを2分に設定した場合、通知が実際に機能するまでにさらに2〜3分かかります。だからそれは動作しますが、それは非常に遅れています!
コード:アプリがフォーカスを失ったときに通知サービスを設定し、MyCount1が終了すると、アプリにフォーカスがあるかどうかを確認し、フォーカスがない場合は通知を表示します。これはすべて、画面のバックライトがオンのときに機能します。それが消えると、それは信頼できません。
@Override
public void onWindowFocusChanged(boolean hasFocus){
if(hasFocus == false){
mFocusFlag = false;
ns = Context.NOTIFICATION_SERVICE;
mNotificationManager = (NotificationManager) getSystemService(ns);
icon = R.drawable.statusbar;
tickerText = "Check the timer!!!";
when = System.currentTimeMillis();
notification = new Notification(icon, tickerText, when);
context = getApplicationContext();
contentTitle = "Countdown Timer";
contentText = "Click to Check the Timer";
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationIntent = new Intent(this, StartTimer.class);
contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
}else{
mFocusFlag = true;
}
}
public class MyCount1 extends CountDownTimer {
public MyCount1(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
if(mFocusFlag == false){
mNotificationManager.notify(HELLO_ID, notification);
}else{
mVib.vibrate(1000);
}
}
public void onTick(long millisUntilFinished) {
if((millisUntilFinished/1000%60) < 10){
mTime.setText("1st Side = " + millisUntilFinished/60000 + ":0" + (millisUntilFinished / 1000)%60);
}else{
mTime.setText("1st Side = " + millisUntilFinished/60000 + ":" + (millisUntilFinished / 1000)%60);
}
}
}