AlarmManager _ Android - PullRequest
       12

AlarmManager _ Android

0 голосов
/ 11 декабря 2018

Как установить сигнал будильника в соответствии с ранее установленным временем?

таким образом, чтобы я установил конкретное время, и когда оно наступит, будильник будет срабатывать автоматически

Это то, чтоЯ сделал до сих пор, но это не служит цели:

Класс MainActivity

Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 5);
    cal.add(Calendar.MINUTE, 1);

    Intent intent = new Intent(this, AlarmReceiverActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this,
            12345, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager am =
            (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            pendingIntent);

Класс приемника

private MediaPlayer mMediaPlayer; 

Button stopAlarm = (Button) findViewById(R.id.stopAlarm);

    stopAlarm.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View arg0, MotionEvent arg1) {
            mMediaPlayer.stop();
            finish();
            return false;
        }
    });

    playSound(this, getAlarmUri());

private void playSound(Context context, Uri alert) {
    mMediaPlayer = new MediaPlayer();
    try {
        mMediaPlayer.setDataSource(context, alert);
        final AudioManager audioManager = (AudioManager) context
                .getSystemService(Context.AUDIO_SERVICE);
        if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
            mMediaPlayer.prepare();
            mMediaPlayer.start();
        }
    } catch (IOException e) {
        System.out.println("OOPS");
    }
}

private Uri getAlarmUri() {
    Uri alert = RingtoneManager
            .getDefaultUri(RingtoneManager.TYPE_ALARM);
    if (alert == null) {
        alert = RingtoneManager
                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        if (alert == null) {
            alert = RingtoneManager
                    .getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        }
    }
    return alert;
}
...