Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我试图使用报警管理器在特定时间设置报警,但报警立即启动?_Android - Fatal编程技术网

Android 我试图使用报警管理器在特定时间设置报警,但报警立即启动?

Android 我试图使用报警管理器在特定时间设置报警,但报警立即启动?,android,Android,这是我的onclick()函数。这将设置目标报警 SA=(Button)findViewById(R.id.button1); SA.setOnClickListener(new OnClickListener() { @SuppressWarnings("deprecation") @Override public void onClick(View v) { showDialog(id);

这是我的onclick()函数。这将设置目标报警

SA=(Button)findViewById(R.id.button1); SA.setOnClickListener(new OnClickListener() { @SuppressWarnings("deprecation") @Override public void onClick(View v) { showDialog(id); } }); } @Override protected Dialog onCreateDialog(int id1) { switch (id1) { case id: // set time picker as current time return new TimePickerDialog(this, timePickerListener, hour, min,false); } return null; } private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) { Calendar calnow=Calendar.getInstance(); calnow.setTimeInMillis(System.currentTimeMillis()); calnow.set(Calendar.HOUR_OF_DAY,selectedHour); calnow.set(Calendar.MINUTE,selectedMinute); calnow.set(Calendar.SECOND, 0); Intent intent=new Intent(getBaseContext(),alarm.class); PendingIntent pendingintent= PendingIntent.getBroadcast(getBaseContext(),0, intent, 0); AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, calnow.getTimeInMillis(),pendingintent); Toast.makeText(getBaseContext(), "alarm set", Toast.LENGTH_SHORT).show(); } }; SA=(按钮)findViewById(R.id.button1); SA.setOnClickListener(新的OnClickListener(){ @抑制警告(“弃用”) @凌驾 公共void onClick(视图v){ 显示对话框(id); } }); } @凌驾 受保护的对话框onCreateDialog(int id1){ 交换机(id1){ 案件编号: //将时间选择器设置为当前时间 返回新的TimePickerDialog(此, timePickerListener,小时,分钟,false); } 返回null; } private TimePickerDialog.OnTimeSetListener timePickerListener= 新的TimePickerDialog.OnTimeSetListener(){ 时间集上的公共void(时间选择器视图,int selectedHour, 整数选择(分钟){ Calendar calnow=Calendar.getInstance(); setTimeInMillis(System.currentTimeMillis()); calnow.set(日历.小时/天,选择小时); calnow.set(日历.分钟,选择分钟); calnow.set(Calendar.SECOND,0); Intent Intent=新的Intent(getBaseContext(),alarm.class); PendingIntent PendingIntent=PendingIntent.getBroadcast(getBaseContext(),0,intent,0); AlarmManager AlarmManager=(AlarmManager)getSystemService(Context.ALARM\u服务); alarmManager.set(alarmManager.RTC_唤醒,calnow.getTimeInMillis(),PendingContent); Toast.makeText(getBaseContext(),“报警集”,Toast.LENGTH_SHORT.show(); } }; 公共void onReceive(上下文arg0,意图arg1){ AlarmManager mgr=(AlarmManager)arg0.getSystemService(Context.ALARM\u服务); Toast.makeText(arg0,“警报开始…”,Toast.LENGTH_LONG.show();
这里的问题是,我得到两个祝酒“警报设置”和“警报启动”在到达目标报警之前,我单击按钮设置报警。

这里的问题是,TP的值似乎是当前时间。如果您显示更多代码,这将很有帮助。让我给您一个设置报警时间延迟5秒的示例。请尝试一下这个,这是一种肮脏的方式,我只想解释一下。Th这就是你所做的:

       calnow.set(Calendar.HOUR_OF_DAY,TP.getCurrentHour());
            calnow.set(Calendar.MINUTE,TP.getCurrentMinute());
          alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis(),pendingintent);
要获得5秒的延迟,请将其更改为

    alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis()+5000,pendingintent);

正如我所说,这只是为了显示您必须设置为alarmManager的值。它必须是以毫秒为单位的时间,当您想要启动报警时。为此,您必须确保从您的TP获得正确的值。因此,如果您希望我们帮助您,当您在此处放置断点时,这将是向我们显示完整代码的好方法,
alarmManager.set(AlarmManager.RTC_WAKEUP,calnow.getTimeInMillis(),PendingContent);
,calnow.getTimeInMillis()的值是多少?从哪里获得时间的TP是什么?如何设置TP的值?您是否检查过它是否确实是未来的时间?您看到的结果表明它是过去或现在的时间。@opiatefuch TimePicker TP=new TimePicker();如果您有任何解决方案,请写信给我cod,事实上我是android新手,所以请guyz帮助我解决问题。对于您的帮助,我刚刚上传了新代码,请检查并帮助我解决问题
    alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis()+5000,pendingintent);