Остановить медиаплеер

Я новичок в Android, и у меня есть еще одна (простая?) Проблема. Я не знаю, как остановить Media Player. Это мой простой код:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view);
        MediaPlayer mp;
        mp = MediaPlayer.create(this, R.raw.sauronsound);
        mp.setLooping(false);
        mp.start();
    @Override
    protected void onDestroy()
{

    // Stop play
        super.onDestroy();
        mp.stop();
    }
        }

После нажатия кнопки «Назад» приложение переходит к моему первому действию, но звук включен. Когда я выхожу из приложения, оно тоже включается. Что делать, чтобы выключить звук?

Как всегда извините за мой плохой английский.

Решил проблему благодаря вам Ребята. Рабочий код:

public class SauronEye extends Activity {
    private MediaPlayer mp;
    @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view);
        mp = MediaPlayer.create(this, R.raw.sound);
        mp.setLooping(false);
        mp.start();


     // Get instance of Vibrator from current Context
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        v.vibrate(10000);
        }
@Override
    protected void onStop()
{
    // Stop play
    super.onStop();
    mp.stop();
}
    }

Это правильно (работает)? Спасибо за помощь мне.


person jundymek    schedule 22.08.2011    source источник


Ответы (4)


mp ссылка, которую вы используете на onDestroy, отличается от той, которую вы используете на onCreate. Переместите строку MediaPlayer mp; за пределы класса onCreate.

person Cristian    schedule 22.08.2011

Проверьте это http://developer.android.com/reference/android/media/MediaPlayer.html Вы можете вызвать остановку или паузу в зависимости от ваших требований. Когда вы нажимаете кнопку возврата, будет вызываться ваша onpause, в этом методе вы можете вызвать mp.stop (), onDestroy будет вызываться только тогда, когда активность полностью уничтожен

person Kavitha    schedule 22.08.2011

onDestroy вызывается только тогда, когда действие прекращается системой. Вместо того, чтобы помещать его в onDestroy, вы должны поместить его в onPause (), который вызывается всякий раз, когда ваша активность перемещается в фон, но остается в памяти. (Что происходит при нажатии кнопки «Назад» или выходе из приложения)

@Override
protected void onPause() {
    super.onPause();
    mp.stop();
}
person RAnderson    schedule 22.08.2011
comment
Когда вы нажимаете кнопку "Назад", вызывается onDestroy . - person Cristian; 22.08.2011

вы можете очень легко вызвать исходные коды переопределенных реализаций и добавить их каждый в свой код. Все, что вам нужно сделать, это щелкнуть правой кнопкой мыши точку вставки там, где вы хотите, и выбрать «Источник-> Переопределить / реализовать методы». Появится диалоговое окно, и вы нажмете на нужные вам методы, попробуйте использовать ondestroy, onpause, onstop. Для вашего кода и после того, как он реализует каждый из них, просто добавьте к каждому следующее.

    protected void onDestroy{
      super.onDestroy();
      mp.release();
   }

    protected void onStop{
      super.onStop();
      mp.stop();
   }

    protected void onPause{
      super.onPause();
      mp.pause();
   }

Также, если вам нужно немного больше звуковых кодов, вы можете попробовать эту ссылку ссылка на stealthcopters или вы можете попробовать эту серию видео cornboyzAndroid

person mr.j05hua    schedule 17.10.2011