如何设置闹钟一天三次



我想做一个程序,在特定的时间调用一个intent,每天早上8点吃早饭,中午1点吃午饭,晚上6点半吃晚饭。

我该怎么做呢?这是因为如果我使用AlarmManager.INTERVAL_DAY / 3,它不能给出具体的时间。

或者我可以使用其他类吗?

下面是我的代码:

package com.makansehat;
import java.util.Calendar;
import android.app.*;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
// import android.widget.EditText;
import android.widget.Toast;
/**
 * @author Prabu
 */
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void startAlert(View view) {
        Calendar skr = Calendar.getInstance();
        pagi.set(Calendar.HOUR_OF_DAY, 8);
        pagi.set(Calendar.MINUTE, 53);
        Calendar siang = Calendar.getInstance();
        siang.set(Calendar.HOUR_OF_DAY, 8);
        siang.set(Calendar.MINUTE, 55);
        Calendar malam = Calendar.getInstance();
        malam.set(Calendar.HOUR_OF_DAY, 8);
        malam.set(Calendar.MINUTE, 59);
        // EditText text = (EditText) findViewById(R.id.time);
        // int i = Integer.parseInt(text.getText().toString());
        Intent intent = new Intent(getApplicationContext(), MyBroadcastReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, pagi.getTimeInMillis(), siang.getTimeInMillis(), pi);
    }
}

您应该创建3个警报:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, pagi.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, siang.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, malam.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

我在这里附上唤醒设备的代码,以便在上午8:30精确地触发警报,此后每20分钟一次:

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 30);
// setRepeating() lets you specify a precise custom interval--in this case,
// 20 minutes.
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        1000 * 60 * 20, alarmIntent);

我希望你能明白我能说什么,只是设置你的第一次日历,然后在手动使用for循环后给出间隔:这里的时间表是你的第二次,第三次等时间间隔分钟触发警报

for(int i=0;i<timelist.size();i++){
      alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            timelist[i], alarmIntent);
   }

或者第二种方法来完成你的任务拿三个闹钟管理器,设定你的时间,就这样。

最新更新