1. ホーム
  2. android

[解決済み] 毎日決まった時間に起動時のアラームを設定する

2022-02-15 10:20:31

質問内容

アンドロイドで起動完了時に9:00のアラームを鳴らすようにしました。しかし、起動完了後、1分ごとにアラームが鳴ります。

私の要件は、起動後にアラームを設定し、午前9:00にのみアラームを発生させることです。

以下は私のコードです。 public class AlarmUtil { private PendingIntent alarmIntent;

public static void setAlarm(Context context) {

    AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 00);
    calendar.set(Calendar.SECOND, 00);
    calendar.set(Calendar.AM_PM, Calendar.AM);
    //calendar.setTimeInMillis(calendar.getTimeInMillis());
    calendar.add(Calendar.SECOND, 1);

    Intent intent = new Intent(context, Services.class);
    PendingIntent pintent = PendingIntent.getService(context, 123456789,
            intent, 0);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), 1 * 60 * 1000, pintent);

}
}

public class AlarmBroadcastReciever extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
        Toast.makeText(context, "Booted!", Toast.LENGTH_SHORT).show();
        AlarmUtil.setAlarm(context);

    }
}
}

services (私のサービスクラス)

public class Services extends IntentService {

public Services(String name) {
    super("services");
    // TODO Auto-generated constructor stub
}

public Services() {
    super("services");
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate() {
    super.onCreate();

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    MyApp.counter += 1;

    Toast.makeText(getApplicationContext(),
            "Service started: " + MyApp.counter, Toast.LENGTH_LONG).show();
    return START_STICKY;
}

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
protected void onHandleIntent(Intent intent) {
    Toast.makeText(getApplicationContext(), "handling intent",
            Toast.LENGTH_LONG).show();

}

}

ということです。よろしくお願いします。よろしくお願いします。

解決方法は?

こんにちは、私は以下のコードを使用し、毎日午前9時にアラームを生成することができました。

alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, AlarmService.class);

    PendingIntent pintent = PendingIntent.getService(this, 123456789,
            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, 9);
    calendar.set(Calendar.MINUTE, 00);


    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), 1000 * 60 * 1 * 60 * 24, pintent);