Java 安卓:警报可能在某个特定间隔之间停止

Java 安卓:警报可能在某个特定间隔之间停止,java,android,calendar,alarmmanager,alarm,Java,Android,Calendar,Alarmmanager,Alarm,我将在我的应用程序中设置每日闹钟 在里面一切都很好。但现在我想要的是:在特定的时间段内,我的闹钟应该保持沉默 e、 g:如果我设置了闹钟,每30分钟播放一次,如果我设置了同样的闹钟,它应该在凌晨1:00到凌晨2:00保持静音,那么它就不应该在静音期间播放 我有这样的代码: 每30分钟,我的服务将呼叫一次,如果时间是在凌晨1:00到凌晨2:00之间保持沉默 见以下代码: Calendar currentTime = new GregorianCalendar(); currentTime.

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

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

e、 g:如果我设置了闹钟,每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
}
Calendar currentTime=new gregorianalendar();
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);
日历开始时间=新的GregorianCalendar();
开始时间设置(日历小时,首小时);
开始时间。设置(Calendar.MINUTE,sMinute);
开始时间设置(Calendar.SECOND,Calendar.SECOND);
开始时间设置(Calendar.DATE,Calendar.DATE);
开始时间.设置(日历.月,日历.月);
日历结束时间=新的GregorianCalendar();
结束时间设置(日历小时,小时);
结束时间。设置(日历。分钟,分钟);
结束时间.set(Calendar.SECOND,Calendar.SECOND);
结束时间.set(Calendar.DATE,Calendar.DATE);
结束时间设置(日历.月,日历.月);
如果((!静默)&((!(start_time.getTimeInMillis()
所以,请给我一个解决方案,虽然我没有得到它的工作? 在这里,有了这段代码,我总是看到“您处于静默模式”

所以请帮我做这个

谢谢。

试试看-

if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){
// Alarm will play
}
else{
// you are in Silent mode
}
试试看-

if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){
// Alarm will play
}
else{
// you are in Silent mode
}
你做错了

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()
您做错了

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()

谢谢您的回答。但我还要检查一下结束时间。因为结束时间我想让闹钟播放谢谢你的回答。但我还要检查一下结束时间。因为结束时间,我希望警报是一个有趣的好答案。但是让我给出更多的想法,如果我想得到以毫秒为单位的当前时间,那么?我的意思是,在你的代码中,小时和分钟是当前的小时和分钟,那么如何在代码中设置它呢?我已经为开始时间和结束时间设置了小时和分钟,但是对于当前时间,如何设置它呢?回答得很好。但是让我给出更多的想法,如果我想得到以毫秒为单位的当前时间,那么?我的意思是,在你的代码中,小时和分钟是当前的小时和分钟,那么如何在代码中设置它呢?我已经为开始时间和结束时间设置了小时和分钟,但是对于当前时间,如何设置呢??