0

我将在我的应用程序中设置每日闹钟。

一切正常。但现在我想要的是:在特定的时间段内,我的闹钟应该保持静音。

例如:如果我设置了闹钟,应该每 30 分钟播放一次,如果我已经给出了喜欢它应该在凌晨 1:00 到凌晨 2:00 保持静音,那么它不应该在静音期间播放。

我有这样的代码:

每隔 30 分钟,我的服务就会呼叫一次,如果时间在凌晨 1:00 到凌晨 2:00 之间保持沉默。

见下面的代码:

Calendar currentTime = new GregorianCalendar();
    currentTime.set(Calendar.HOUR, Calendar.HOUR);
    currentTime.set(Calendar.MINUTE, Calendar.MINUTE);
    currentTime.set(Calendar.SECOND, Calendar.SECOND);
    currentTime.set(Calendar.DATE, Calendar.DATE);
    currentTime.set(Calendar.MONTH, Calendar.MONTH);

    Calendar start_time = new GregorianCalendar();
    start_time.set(Calendar.HOUR, sHour);
    start_time.set(Calendar.MINUTE, sMinute);
    start_time.set(Calendar.SECOND, Calendar.SECOND);
    start_time.set(Calendar.DATE, Calendar.DATE);
    start_time.set(Calendar.MONTH, Calendar.MONTH);

    Calendar end_time = new GregorianCalendar();
    end_time.set(Calendar.HOUR, eHour);
    end_time.set(Calendar.MINUTE, eMinute);
    end_time.set(Calendar.SECOND, Calendar.SECOND);
    end_time.set(Calendar.DATE, Calendar.DATE);
    end_time.set(Calendar.MONTH, Calendar.MONTH);




   if((!SILENCE) && (((!(start_time.getTimeInMillis() < currentTime.getTimeInMillis())) && (!(currentTime.getTimeInMillis() < end_time.getTimeInMillis()) )))){
    // Alarm will play
}
else{
// you are in Silent mode
}

所以请给我解决方案,虽然我没有得到它的工作原理?使用此代码,我总是会出现“您处于静音模式”

所以请帮助我。

谢谢。

4

2 回答 2

3

你做错了

currentTime.set(Calendar.HOUR, Calendar.HOUR);

使用这句话,您将小时和分钟设置为整数值。例如,Calendar.HOUR 具有常量值 10,就像所有常量都具有不同的固定值一样,您正在将此值分配给日历,这可能会给您带来问题。

解决方案

如果您想设置唯一的小时和分钟,请保留其他字段,以便它会自动考虑您当前的数据时间。

Calendar currentTime = Calendar.getInstant();
currentTime.set(Calendar.HOUR, hours);
currentTime.set(Calendar.MINUTE, minuts);

因此,这会将日历中的小时和分钟设置为您提供的值,并将其他信息(如日、月、年和其他信息)设置为当前值。

编辑

如果您遇到以毫秒为单位获取当前时间的问题,请使用System.currentTimeMillis();.

为了以毫秒为单位获取未来时间,您必须在日历中设置适当的时间,然后您必须以毫秒为单位从日历中获取时间,例如calendar.getTimeInMillis().

于 2012-04-09T10:55:51.267 回答
1

尝试一下 -

if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){
// Alarm will play
}
else{
// you are in Silent mode
}
于 2012-04-09T10:47:41.423 回答