android студийная установка будильника по заданию c час и минута со звуком - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь установить будильник со звуком на указанные c часы и минуты, например 15: 52

Я пробовал приведенный ниже код, но он ничего не делает, когда время 15: 52

Основная активность. 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();

}
}

1 Ответ

1 голос
/ 14 июля 2020

Вы должны проверить текущее время с будильником и при необходимости добавить день.

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