如何在 android 工作室设置闹钟?

How to set alarm on android studio?

伙计们,我真的需要帮助,我正在尝试使用 android 的闹钟管理器在特定时间出现吐司。我做了一些研究并编写了这段代码,但我不知道哪里不对......我尝试了一切

public void start() {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Date dat = new Date();
        Calendar cal_alarm = Calendar.getInstance();
        Calendar cal_now = Calendar.getInstance();
        cal_now.setTime(dat);
        cal_alarm.setTime(dat);
        cal_alarm.set(Calendar.HOUR_OF_DAY,12);
        cal_alarm.set(Calendar.MINUTE,13);
        cal_alarm.set(Calendar.SECOND,0);
        if(cal_alarm.before(cal_now)){
            cal_alarm.add(Calendar.DATE,1);
        }
        manager.set(AlarmManager.RTC_WAKEUP,cal_alarm.getTimeInMillis(),pendingIntent);
    }

如果我在 manager.set 中使用 cal_alarm - cal_now 它会在 5 秒后触发。

您需要添加一个Receiver才能得到结果

在你的AndroidManifest.xml中添加这个

<receiver android:name=".AlarmReceiver" />

创建这个 BroadcastReceiver AlarmReceiver.java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "ALARM", Toast.LENGTH_LONG).show();
    }
}

最后,修复你的方法 start

public void start() {
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Date dat = new Date();
    Calendar cal_alarm = Calendar.getInstance();
    Calendar cal_now = Calendar.getInstance();
    cal_now.setTime(dat);
    cal_alarm.setTime(dat);
    cal_alarm.set(Calendar.HOUR_OF_DAY,14);
    cal_alarm.set(Calendar.MINUTE,18);
    cal_alarm.set(Calendar.SECOND,0);
    if(cal_alarm.before(cal_now)){
        cal_alarm.add(Calendar.DATE,1);
    }

    Intent myIntent = new Intent(context, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);

    manager.set(AlarmManager.RTC_WAKEUP,cal_alarm.getTimeInMillis(), pendingIntent);
}