android:报警remian在某些特定间隔之间停止

时间:2012-04-09 10:35:15

标签: java android calendar alarmmanager alarm

我要在我的应用中设置每日闹钟。

一切正常。但现在我想要的是:在特定的持续时间内,我的警报应该保持沉默。

例如:如果我已经设置闹钟应该每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
}

所以请给我解决方案,虽然我没有得到它的工作? 在这里使用这段代码,我总是看到“你处于静音模式”

所以请帮助我。

感谢。

2 个答案:

答案 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
}