android 工作室在特定的时间和分钟设置有声音的闹钟

android studio set alarm at specific hour and minute with sound

我正在尝试设置一个在特定时间和分钟发出声音的闹钟,例如 15:52

我尝试了下面的代码,但是当时间为 15:52

时它什么也没做

Mainactivity.java:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);



Intent slIntent = new Intent(this, MyBroadcastReceiver.class);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 52);
calendar.set(Calendar.SECOND, 0);

PendingIntent slPendingIntent = PendingIntent.getService(this, 1, slIntent, PendingIntent.FLAG_ONE_SHOT);

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

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, slPendingIntent);
}

MyBroadcastReceiver.class

public class MyBroadcastReceiver extends BroadcastReceiver {
MediaPlayer mp;
@Override
public void onReceive(Context context, Intent intent) {

mp=MediaPlayer.create(context, R.raw.sound); // the sound that should be played at 13:52
mp.start();
Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show();

}
}

您必须检查当前时间和闹钟时间,并在必要时添加一天。

    Calendar calendar = Calendar.getInstance();
    long now = System.currentTimeMillis();
    calendar.setTimeInMillis( now );
    calendar.set( Calendar.HOUR_OF_DAY, ini.alarmHours );
    calendar.set( Calendar.MINUTE, ini.alarmMinutes );
    calendar.set( Calendar.SECOND, 0 );
    calendar.set( Calendar.MILLISECOND, 0 );
    if( now > calendar.getTimeInMillis() ){
        calendar.add( Calendar.DAY_OF_MONTH, 1 );
    }