Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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 如何设置每天3次的警报?_Android_Alarmmanager - Fatal编程技术网

Android 如何设置每天3次的警报?

Android 如何设置每天3次的警报?,android,alarmmanager,Android,Alarmmanager,我想制作一个程序,在特定的时间内调用一个意图,每天早上8点吃早饭,1点吃午饭,6点半吃晚饭 我该怎么做?这是因为如果我使用AlarmManager.INTERVAL\u DAY/3,它无法给出具体时间 或者我可以使用其他类吗 这是我的密码: package com.makansehat; import java.util.Calendar; import android.app.*; import android.content.Intent; import android.os.Bundl

我想制作一个程序,在特定的时间内调用一个意图,每天早上8点吃早饭,1点吃午饭,6点半吃晚饭

我该怎么做?这是因为如果我使用
AlarmManager.INTERVAL\u 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);

    }

}

在这里,我附上了唤醒设备的代码,以便在上午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);
我希望您能理解我能说什么,只需将您的第一次设置为calander,然后使用for loop手动给定间隔,例如: 这里的时间列表是触发报警的第二个、第三个etc时间间隔最小值

for(int i=0;i<timelist.size();i++){

      alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            timelist[i], alarmIntent);
   }

for(int i=0;i此处我附加了唤醒设备的代码,以便在上午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);
我希望您能理解我能说什么,只需将您的第一次设置为calander,然后使用for loop手动给定间隔,例如: 这里的时间列表是触发报警的第二个、第三个etc时间间隔最小值

for(int i=0;i<timelist.size();i++){

      alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            timelist[i], alarmIntent);
   }

对于(int i=0;i您应该创建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);

您应该创建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);

你的代码是如何编译的?我注意到你声明了
skr
,但在日历实例中使用了
pagi
,编译时
pagi
应该会抛出语法错误。upps..我的错误,yups已经修复了你的代码是如何编译的?我注意到你声明了
skr
,但在日历实例中使用了
pagi
pagi
在编译.upps时应该抛出语法错误。我的错误,yups已经修复了