1. ホーム
  2. android

[解決済み] 1日に3回アラームを設定するには?

2022-02-08 01:56:37

質問

毎日、朝食は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);