首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android:闹钟在某个特定时间间隔内停止

问android:闹钟在某个特定时间间隔内停止
EN

Stack Overflow用户
提问于 2012-04-09 18:35:15
回答 2查看 498关注 0票数 0

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

一切都在里面运行的很好。但现在我想要的是:在特定的持续时间内,我的闹钟应该保持沉默。

例如:如果我设置了闹钟应该每30分钟播放一次,如果我设置了从凌晨1:00到凌晨2:00保持静音,那么在静默期间就不应该播放闹钟。

我有这样的代码:

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

请参见以下代码:

代码语言:javascript
复制
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
}

所以请给我一个解决方案,当我不能让它工作的时候?在这段代码中,我总是说“你处于静默模式”。

所以请帮帮我。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-09 18:55:51

你做错了

代码语言:javascript
复制
currentTime.set(Calendar.HOUR, Calendar.HOUR);

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

解决方案

如果您只想设置小时和分钟,则保留其他字段,以便它会自动考虑您当前的日期。

代码语言:javascript
复制
Calendar currentTime = Calendar.getInstant();
currentTime.set(Calendar.HOUR, hours);
currentTime.set(Calendar.MINUTE, minuts);

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

编辑

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

对于获取以毫秒为单位的未来时间,您必须在日历中设置适当的时间,然后您必须像calendar.getTimeInMillis()一样从日历中获取以毫秒为单位的时间。

票数 3
EN

Stack Overflow用户

发布于 2012-04-09 18:47:41

试试看-

代码语言:javascript
复制
if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){
// Alarm will play
}
else{
// you are in Silent mode
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10071971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档