Не удается остановить сигнал будильника, даже нажав кнопку остановки - PullRequest
1 голос
/ 07 марта 2019

У меня проблемы с отключением сигнала будильника даже после нажатия кнопки «Стоп-сигнал». спасибо за любую помощь.

Это мой стартовый аварийный выключатель в классе MainActivity Java.

public void switchClicked (View view) {
        if (((Switch) view).isChecked()) {
            Log.d("MainActivity", "Alarm On");
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
            calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
            Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
            pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);
            alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
            setAlarmText("ON");
        } else {
            alarmManager.cancel(pendingIntent);
            setAlarmText("OFF");
            Log.d("MainActivity", "Alarm Off");
        }
    }
    public void setAlarmText(String alarmText) {
        alarmTextView.setText(alarmText);
    }

Вот моя кнопка StopAlarm в Java-классе MainActivity.

public void stopAlarm(View view) {
        setAlarmText("Alarm stopped");
        Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getService(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        alarmManager.cancel(pendingIntent);
            }

Это Java-класс AlarmReciver.

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {

        MainActivity inst = MainActivity.instance();
        inst.setAlarmText("Alarm! Wake up! Wake up!");
        Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        if (alarmUri == null) {
            alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        }
        Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
        ringtone.play();
    }
}

1 Ответ

0 голосов
/ 07 марта 2019

Проблема в этой строке

pendingIntent = PendingIntent.getService(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Вы используете getService(), но вместо этого следует использовать getBroadcast().

Почему?

getService() извлекает PendingIntent, который запустит службу, но, поскольку вы используете BroadcastReceiver, вы должны использовать getBroadcast(), который извлекает PendingIntent, который выполнит вещания.

...