Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在特定时间设置安卓报警_Android_Date_Alarmmanager - Fatal编程技术网

Android 在特定时间设置安卓报警

Android 在特定时间设置安卓报警,android,date,alarmmanager,Android,Date,Alarmmanager,我在特定时间设置闹钟,但每次打开应用程序时,它都会打开 这是我使用的代码: AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0010000,int

我在特定时间设置闹钟,但每次打开应用程序时,它都会打开 这是我使用的代码:

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0010000,intent,0);

Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR, 5);
time.set(Calendar.MINUTE, 59);
time.set(Calendar.SECOND, 0);

alarmManager.set(AlarmManager.RTC,time.getTimeInMillis(),pendingIntent);

不要将此代码放在onCreate函数中,而是将其放在任何按钮事件或仅在用户交互时调用的任何其他事件中。 我想,那就行了

PendingIntent pendingIntent =  PendingIntent.getBroadcast(this,0010000,intent,0);
pendingIntent.cancel();

将此“取消”方法添加到代码中。这将在设置新警报之前取消先前的警报。

好的,您需要将警报设置为下次5:59:00时响起。 您可以通过获取当前时间来完成此操作,如果是在5:59:00之前,则设置闹钟;如果是在5:59:00之后,则添加一天并设置闹钟。这样做:

import java.util.Calendar;
import java.util.Date;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(new Panel(this));

    Date dat  = new Date();//initializes to now
    Calendar cal_alarm = Calendar.getInstance();
    Calendar cal_now = Calendar.getInstance();
    cal_now.setTime(dat);
    cal_alarm.setTime(dat);
    cal_alarm.set(Calendar.HOUR_OF_DAY,5);//set the alarm time
    cal_alarm.set(Calendar.MINUTE, 59);
    cal_alarm.set(Calendar.SECOND,0);
    if(cal_alarm.before(cal_now)){//if its in the past increment
        cal_alarm.add(Calendar.DATE,1);
    }
    //SET YOUR AlarmManager here

}

我想给你一个可构建的例子,但我还没有完全理解alarmmanager,所以这就是你所拥有的。基于eclipse 3.5.2和ADK 15构建的闹钟设置为5:59:00,但当我离开应用程序并再次打开它时,闹钟将再次设置,我如何避免此问题并仅在5:59:00设置闹钟!5:59:00的时间取自web服务器数据库,我想在没有按钮事件的情况下通知用户,我的意思是在后台,但我不知道如何做到这一点我同意将其放入按钮侦听器,但我怀疑这是问题所在。您多久检查一次数据库以更新此时间(5:59:00)?如果你检查,用那种方法设置这个警报。这个时间只会从web服务器上固定一次,我的意思是每天5:59:00我希望设置警报,更清楚地说,我的应用程序是为患者使用的,并且有一个医生网站,我希望医生提醒患者何时应该服药。我不想使用动作监听器或按钮,我需要的是只在此时设置警报,即使在这种情况下,你将有一个方法来检查数据库。如果医生在网站上设置了5:59,你将使用一些代码将其带到应用程序中。每次应用程序启动时,你是否都从数据库中读取数据?是的,克里斯,这是我的问题,如果时间在过去,则会触发警报。如何解决?我应该怎么做?获取当前时间,然后找出在第二天5:59:00之前需要经过多少毫秒。我会看看我是否能在这里得到一些编码。我用System.currentTimeMillis()得到当前时间,我用time得到日历中的时间。getTimeInMillis()你的意思是这样做:alarmManager.set(alarmManager.RTC,System.getTimeInMillis()+(Systrm.getTimeInMillis-time.getTimeInMillis()),PendingEvent);cd.add(日历日期,1);这个wt将添加?@israa如果我不得不猜测的话,我会说您使用的是java.sql.Date而不是java.util.Date