6

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

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

        @SuppressWarnings("弃用")
        @覆盖
            公共无效 onClick(查看 v){
                显示对话(id);


            }
        });

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

            返回新的 TimePickerDialog(这个,
                                         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);
             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(), "报警设置", Toast.LENGTH_SHORT).show();

        }
    };

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

            Toast.makeText(arg0,"警报开始.....", Toast.LENGTH_LONG).show();

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

4

2 回答 2

0

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

       calnow.set(Calendar.HOUR_OF_DAY,TP.getCurrentHour());
            calnow.set(Calendar.MINUTE,TP.getCurrentMinute());
          alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis(),pendingintent);

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

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

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

于 2013-07-30T17:52:55.387 回答
0

你的错在这里。就这样吧

          Calendar calnow=Calendar.getInstance()
           
            calnow.set(Calendar.HOUR_OF_DAY,selectedHour);
            calnow.set(Calendar.MINUTE,selectedMinute);
            calnow.set(Calendar.SECOND, 0);
            if (calnow.getTimeInMillis()< System.currentTimeMillis()) {
            calnow.set(Calendar.DAY_OF_YEAR, 1)
            }
       

           
于 2022-02-17T18:44:02.653 回答