我试图在指定时间触发通知和警报。我已经将日志信息放在控制台上,以查看是否设置了正确的时间,并且一切正常。但是,仍然没有触发警报。请帮忙。
创建通知和警报的/Code/
btn_add_task.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
db.addTask(new DataModel(input_task_title.getText().toString(),input_task_desc.getText().toString(),
checkBox.isChecked(),txtDate.getText().toString(),txtTime.getText().toString(),isComplete));
Calendar calendar = Calendar.getInstance();
//Set notification for the set date and time
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
if(mHour>12) {
calendar.set(Calendar.AM_PM, Calendar.PM);
} else {
calendar.set(Calendar.AM_PM, Calendar.AM);
}
Log.i("Alarm at: ",calendar.get(Calendar.DAY_OF_MONTH)+"-"+
calendar.get(Calendar.MONTH)+"-"+
calendar.get(Calendar.YEAR)+" at "+
calendar.get(Calendar.HOUR_OF_DAY)+":"+
calendar.get(Calendar.MINUTE));
Intent notifyMessage = new Intent(getApplicationContext(),NotificationMessage.class);
PendingIntent pi = PendingIntent.getService(getApplicationContext(), 0, notifyMessage, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi);
Toast.makeText(getApplicationContext(),R.string.new_task_added,Toast.LENGTH_LONG).show();
startActivity(new Intent(AddTask.this,MainActivity.class));
}
});
/通知消息类/
package com.apps.katz.doer;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
/**
* Created by katz on 4/5/16.
*/
public class NotificationMessage extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
showNotification(context);
}
private void showNotification(Context context) {
Log.i("notification","visible");
PendingIntent contentIntent = PendingIntent.getActivity(context,0,
new Intent(context,NotificationMessage.class),0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context).setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Doer Notification")
.setContentText("This is a Doer Notification");
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
mBuilder.setDefaults(Notification.DEFAULT_LIGHTS);
mBuilder.setAutoCancel(true);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1,mBuilder.build());
}
}
请帮帮我,我做错了什么?
btn_add_task监听器内部,设置闹钟如下-
Intent notifyMessage = new Intent(getApplicationContext(),NotificationMessage.class);
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, notifyMessage, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi);
现在,在NotificationMessage类的onReceive中放置一个日志,以确保及时触发警报。希望,现在您的程序将运行。
看看setRepeating
方法的留档:
注意:从API 19开始,所有重复警报都是不精确的。如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,并如上所述重新安排每次。目标SdkVersion早于API 19的旧版应用程序将继续将其所有警报(包括重复警报)视为精确。
您的警报将不准确总是使用setRepeating
,尝试使用setExact并在触发警报时重新编程。
此外,请尝试扩展WakefulBroadcastReceiver,而不是在NotificationMessage中扩展WakefulBroadcastReceiver,以便在应用程序未运行时唤醒服务。
我试图在应用程序启动10分钟后生成警报。根据我的要求,无论用户关闭应用程序、关闭并再次打开,或者甚至在重新启动后,此警报都应该工作。下面是我的代码。 主要活动。Java语言 我的服务。java—这是服务类。 警报eciever.java 如果我没有关掉手机或重新启动手机,我就可以准时收到闹钟。我准时收到闹钟。 然而,如果我关闭并打开手机,或者如果我重新启动手机,我会在手机打开/重新启动后立即收到警
我管理一切都很好,创建了一个通知服务,用于作为警报的结果触发通知。不幸的是,使用AlarmManager设置警报不能正常工作。它会在几分钟后触发(而不是几小时,这将表示时区问题)。循环周期为1周,所以我使用了常数INTERVAL_DAY,并将其乘以7。为了确保一个PendingIntent不会替换另一个,我将dayOfWeek作为第二个参数传递给PendingIntent.getService()
我有一个场景,我需要安排一个工作,必须每天在特定时间执行。当我用特定的时间作为调度器的开始时间来调度它时,quartz不会在设定的开始时间触发作业,而是在下一个周期即延迟24小时后触发作业。即使在检查下一个FireTime时,我们也会得到一天的延迟。 例如:我需要每天安排一项工作在晚上6点进行。今天(2018年3月27日)下午5点开始。工作没有开始,下一次火灾时间是2018年3月28日下午6点。
配置报警策略的时候open-falcon支持多种报警触发函数,比如all(#3) diff(#10)等等。 这些#后面的数字表示的是最新的历史点,比如#3代表的是最新的三个点。该数字默认不能大于10,大于10将当作10处理,即只计算最新10个点的值。 说明:#后面的数字的最大值,即在 judge 内存中保留最近几个点,是支持自定义的,具体参考 book 中描述 ; 源码位置 => cfg.exam
我每天上午11点使用显示通知。 当我在应用程序中设置警报时,警报会在短时间后触发。
我在我的Spring MVC4项目中使用了Amazon推送通知。我每天早上8点用CronTrigger向Android应用程序发送推送通知。我还将Timezone与CronTrigger一起使用,这样用户就可以根据各自的时区获得通知。 下面是我的webconfig.java: 更新:在Cron表达式中有一个修正。我纠正了。 但问题还没有解决