我将在我的应用程序中设置每日闹钟。
一切都在里面运行的很好。但现在我想要的是:在特定的持续时间内,我的闹钟应该保持沉默。
例如:如果我设置了闹钟应该每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
}所以请给我一个解决方案,当我不能让它工作的时候?在这段代码中,我总是说“你处于静默模式”。
所以请帮帮我。
谢谢。
发布于 2012-04-09 18:55:51
你做错了
currentTime.set(Calendar.HOUR, Calendar.HOUR);使用此语句,您可以将小时和分钟设置为整数值。例如,Calendar.HOUR的常量值为10,就像wise一样,所有的常量都有不同的固定值,而您正在将这些值分配给日历,这可能会给您带来问题。
解决方案
如果您只想设置小时和分钟,则保留其他字段,以便它会自动考虑您当前的日期。
Calendar currentTime = Calendar.getInstant();
currentTime.set(Calendar.HOUR, hours);
currentTime.set(Calendar.MINUTE, minuts);因此,这会将日历中的小时和分钟设置为您提供的值,并将其他信息,如日、月、年和其他信息设置为当前值。
编辑
如果您面临获取以毫秒为单位的当前时间的问题,请使用System.currentTimeMillis();。
对于获取以毫秒为单位的未来时间,您必须在日历中设置适当的时间,然后您必须像calendar.getTimeInMillis()一样从日历中获取以毫秒为单位的时间。
发布于 2012-04-09 18:47:41
试试看-
if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){
// Alarm will play
}
else{
// you are in Silent mode
}https://stackoverflow.com/questions/10071971
复制相似问题