【问题标题】:How to set an alarm at a specific date at any chosen time?如何在任何选定时间的特定日期设置闹钟?
【发布时间】:2017-03-29 08:04:35
【问题描述】:

这是我的代码,它可以工作,但我无法设置闹钟,除非在 12:00 AM 我希望用户在特定日期设置闹钟,如下所示,但能够在一天中的任何时间设置它,而不仅仅是午夜......有人可以帮忙吗?

现在日历 = Calendar.getInstance();

    pickerDate.init(
            now.get(Calendar.YEAR),
            now.get(Calendar.MONTH),
            now.get(Calendar.DAY_OF_MONTH),
            null);

    pickerTime.setCurrentHour(now.get(Calendar.HOUR_OF_DAY));
    pickerTime.setCurrentMinute(now.get(Calendar.MINUTE));
    buttonSetAlarm = (Button)findViewById(R.id.setalarm);
    buttonSetAlarm.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View arg0) {

            Calendar current = Calendar.getInstance();

            Calendar cal = Calendar.getInstance();
            cal.set(pickerDate.getYear(),
                    pickerDate.getMonth(),
                    pickerDate.getDayOfMonth(),
                    pickerTime.getCurrentHour(),
                    pickerTime.getCurrentMinute(),
                    0);


            if(cal.compareTo(current) <= 0){


                Toast.makeText(getApplicationContext(), "Invalid Date/Time", Toast.LENGTH_LONG).show();
            }else{
                setAlarm(cal);
            }



        }});
}

private void setAlarm(Calendar targetCal){

    String pattern = "MM/dd/yyyy";
    SimpleDateFormat format = new SimpleDateFormat(pattern);






    Calendar cal = Calendar.getInstance();
    cal.set(pickerDate.getYear(),
            pickerDate.getMonth(),
            pickerDate.getDayOfMonth(),
            pickerTime.getCurrentHour(),
            pickerTime.getCurrentMinute(),
            0);
    cal.set(Calendar.MILLISECOND,0);



    try {
    Date date12_25 = format.parse("12/25/2017");

    Lebanon.put(date12_25,"Christmas Day");
        for(Date k : Lebanon.keySet()){

            if(cal.getTime().equals(k)){

                String val = (String)Lebanon.get(k);
                info.setText("Your alarm is set for :"+k+", on:  "+val);
            }

        }



    } catch (ParseException e) {
        e.printStackTrace();
    }format.format(new Date());


    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
    alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}

【问题讨论】:

  • 您所说的“我只能在 12:00 AM 设置闹钟”到底是什么意思?您的闹钟是否只在凌晨 12 点响起?如果选择的时间不是上午 12 点,它会不会被设置?
  • 是的,我必须将时间选择器设置为上午 12 点才能设置闹钟。我想在某个日期设置闹钟,但不管时间是什么。 @MikeM。
  • 所以,您是说,忽略日期,如果您没有将 TimePicker 设置为正好凌晨 12:00,您会得到“无效的日期/时间”Toast?跨度>
  • no no "Invalid Date/Time" 仅当日期时间设置设置在当前设置之前,如过去,问题就在这里,我认为 if(cal.getTime().equals (k)) 但我真的不知道如何解决它...@MikeM。
  • 事实证明你是对的,问题在于时间选择器的分钟和秒数,所以谢谢@MikeM。

标签: android datepicker alarm timepicker


【解决方案1】:

使用广播接收器。

public class MyBroadcastReceiver extends BroadcastReceiver {  
    MediaPlayer mp;  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        mp=MediaPlayer.create(context, R.raw.alrm   );  
        mp.start();  
        Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show();  
    }  
} 

启动警报-

//  i = int time from calander.
     int i = 12;  
            Intent intent = new Intent(this, MyBroadcastReceiver.class);  
            PendingIntent pendingIntent = PendingIntent.getBroadcast(  
                                          this.getApplicationContext(), 234324243, intent, 0);  
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);  
            alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()  
                                          + (i * 1000), pendingIntent);  
            Toast.makeText(this, "Alarm set in " + i + " seconds",Toast.LENGTH_LONG).show();   

【讨论】:

  • 大声笑,我想我知道你从哪里复制的,但没有,这对我的时间问题没有一点帮助
猜你喜欢
  • 2013-08-19
  • 2016-09-25
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多