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

m_k*_*ani 5 android

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

      SA=(Button)findViewById(R.id.button1);
      SA.setOnClickListener(new OnClickListener() {

        @SuppressWarnings("弃用")
        @覆盖
            public void onClick(View v) {
                showDialog(id);


            }
        });

    }
        @覆盖
        受保护的对话框 onCreateDialog(int id1) {
        开关(id1){
        案例ID:
            // 将时间选择器设置为当前时间

            返回新的 TimePickerDialog(this, 
                                         timePickerListener, 小时, 分钟, 假);
        }
        返回空;
    }

        私人 TimePickerDialog.OnTimeSetListener timePickerListener = 
            新的 TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int selectedHour,
                int selectedMinute) {
            日历 calnow=Calendar.getInstance();
            calnow.setTimeInMillis(System.currentTimeMillis());
            calnow.set(Calendar.HOUR_OF_DAY,selectedHour);
            calnow.set(Calendar.MINUTE,selectedMinute);
            calnow.set(Calendar.SECOND, 0);
             意图意图=新意图(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(), "闹钟设置", Toast.LENGTH_SHORT).show();

        }
    };

    公共无效onReceive(上下文arg0,意图arg1){
         AlarmManager mgr = (AlarmManager)arg0.getSystemService(Context.ALARM_SERVICE);

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

这里的问题是,一旦我在达到目标警报之前单击按钮设置警报,我就会同时获得“警报设置”和“警报启动”。

Opi*_*chs 0

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

\n\n
       calnow.set(Calendar.HOUR_OF_DAY,TP.getCurrentHour());\n            calnow.set(Calendar.MINUTE,TP.getCurrentMinute());\n          alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis(),pendingintent);\n
Run Code Online (Sandbox Code Playgroud)\n\n

要获得五秒的延迟,请将其更改为

\n\n
    alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis()+5000,pendingintent);\n
Run Code Online (Sandbox Code Playgroud)\n\n

就像我说的,这只是为了显示您必须为alarmManager设置哪个值。它必须是您想要启动闹钟的时间(以毫秒为单位)。为此,您必须确保从您的 TP 中获得正确的值。因此,如果您希望我们帮助您,向我们展示完整的代码将是一个好方法

\n