当前位置: 首页 > 知识库问答 >
问题:

报警管理器在选定时间前立即启动报警?

沈畅
2023-03-14
  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();

    }
};


     public void onReceive(Context arg0, Intent arg1) {
                 AlarmManager mgr = (AlarmManager)arg0.getSystemService(Context.ALARM_SERVICE);

                    Toast.makeText(arg0,"Alarm Started.....", Toast.LENGTH_LONG).show();

共有2个答案

鲁霄
2023-03-14

试试看:

   Calendar cal = Calendar.getInstance();
   cal.set(Calendar.HOUR_OF_DAY, selectedHour);
   cal.set(Calendar.MINUTE, selectedMinute);
   cal.set(Calendar.SECOND, 0);
   ca.set(Calendar.MILLISECOND, 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,  cal.getTimeInMillis(),pendingintent);
   Toast.makeText(getBaseContext(), "alarm set", Toast.LENGTH_SHORT).show();
融焕
2023-03-14

请尝试删除此行

calnow.setTimeInMillis(System.currentTimeMillis());

我相信会造成问题,不能肯定。

 类似资料:
  • 嗨,我目前正在使用警报管理器。我写了下面给出的代码。根据代码,警报管理器应该在10秒后触发,但在我的代码中,警报管理器会立即触发。请帮助。 还有我的警报接收课 我已经在清单中添加了所需的权限。

  • 我每天上午11点使用显示通知。 当我在应用程序中设置警报时,警报会在短时间后触发。

  • 问题内容: 我想创建带有通知消息的广播AlarmManager(重复)。我从Pickers中传递日历对象。如果我不重启设备,它将正常工作。但是,当我重新启动设备时,您知道我的calander对象将为null。重新启动后如何管理重复警报以及如何保留日历时间表?感谢您的想法。 问题答案: 您需要使用并将其设置为响应消息。例如 在清单中注册您的 在代码中处理消息 MyBootReceiver.java

  • 我正在开发一个应用程序,其中我需要用户安排一个事件。我使用TimePicker和DatePicker对话框来设置事件的时间,并使用带有BroadcastReceiver的AlarmManager来在时间到达时执行操作。在测试中,我得出的结论是,我的时间和日期选择器对话框工作良好,我能够选择一个日期和时间。然而,当到达时间时,BroadcastReceiver没有被AlarmManager触发。 下

  • 我试图在应用程序启动10分钟后生成警报。根据我的要求,无论用户关闭应用程序、关闭并再次打开,或者甚至在重新启动后,此警报都应该工作。下面是我的代码。 主要活动。Java语言 我的服务。java—这是服务类。 警报eciever.java 如果我没有关掉手机或重新启动手机,我就可以准时收到闹钟。我准时收到闹钟。 然而,如果我关闭并打开手机,或者如果我重新启动手机,我会在手机打开/重新启动后立即收到警

  • 我遇到了麻烦,而试图设置一个准确的警报,只有时间选择器。我设置了一个带有如下处理程序的时间选择器: 计时器 不幸的是,当这样做时,警报会立即播放。我也试过用am.setalarmclock但是我不知道如何用它来使用RTC时间,你能帮我吗? 我已经读了很多线程,就像我正在尝试设置警报在特定的时间使用警报管理器,但警报立即启动?并从DatePicker和TimePicker中设置AlarmManage