我要在我的应用中设置每日闹钟。
一切正常。但现在我想要的是:在特定的持续时间内,我的警报应该保持沉默。
例如:如果我已经设置闹钟应该每30分钟播放一次,如果我已经给出它应该在凌晨1点到凌晨2点保持沉默,那么它应该在那个静音期间不播放。
我有这样的代码:
每隔30分钟,我的服务会打电话,如果时间在凌晨1点到凌晨2点之间保持沉默。
见下面的代码:
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
}
所以请给我解决方案,虽然我没有得到它的工作? 在这里使用这段代码,我总是看到“你处于静音模式”
所以请帮助我。
感谢。
答案 0 :(得分: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()
。
答案 1 :(得分:1)
试一试 -
if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){
// Alarm will play
}
else{
// you are in Silent mode
}