Я пытаюсь использовать кнопку переключения, чтобы воспроизводить звук, когда кнопка находится в положении «включено», и останавливать звук, когда кнопка «выключена».

Кажется, это работает только тогда, когда я впервые переключаюсь между кнопкой включения / выключения.

ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton1);

toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  if (isChecked) {
   // The toggle is enabled
   sound1.start();
  } else {
   // The toggle is disabled
   sound1.stop();
  }
 }
});
0
Martin 25 Ноя 2016 в 15:43

2 ответа

Лучший ответ

Потому что вы вызвали метод stop (). Вот описание метода:

Вызов stop () останавливает воспроизведение и приводит к тому, что MediaPlayer, находящийся в состояниях Started, Paused, Prepared или PlaybackCompleted, переходит в состояние Stopped. Находясь в состоянии «Остановлено», воспроизведение не может быть начато до тех пор, пока не будут вызваны prepare () или prepareAsync (), чтобы снова установить объект MediaPlayer в состояние «Подготовлено». Вызов stop () не влияет на объект MediaPlayer, который уже находится в состоянии Stopped.

Чтобы правильно играть, вам просто нужно посетить этот сайт Google. щелкните меня.

3
ohdroid 25 Ноя 2016 в 12:58

Итак, лучшее, что вы можете сделать, это использовать константу класса, чтобы проверить, установлен ли уже флаг. Вам нужно будет сохранить это в savedCacheInstance при onPause / onStop / OnDestroy, а затем перезагрузить его. Что-то типа:

boolean isMusicPlaying = false;

Если вы сохраните это с помощью savedInstanceCache как в onCreate, так и в onStop / onDestroy, вы можете управлять воспроизведением между поворотами и запусками / выходами. Свойство класса также находится внутри области класса слушателя, поэтому любое действие, которое вы предпринимаете, должно обновлять свойство класса. Лучший способ определить любую проблему - это, конечно, использовать отладчик. Таким образом, вы можете контролировать функции воспроизведения и видеть, что ломается.

0
Justin Mitchell 25 Ноя 2016 в 12:51