Search code examples
androidalarmmanager

How to set alarm 3 times a day?


I want to make a program that calls an intent in a specific time, at 8 o'clock for breakfast, 1 o'clock for lunch, and half past six for dinner for every day.

How can I do that? This is because if I use AlarmManager.INTERVAL_DAY / 3, it cannot give the specific time.

Or is there any other class that I can use ?

Here's my code:

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

    }

}

Solution

  • You should create 3 alarms:

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