Не может запустить MediaPlayer снова после вызова метода MediaPlayer

В этом приложении у меня есть 2 кнопки, одна для запуска медиаплеера, а другая для остановки медиаплеера, но в моем случае stat и stop работают нормально.

Я не могу запустить медиаплеер после нажатия кнопки "Стоп", а также

start called in state 0, mPlayer(0x9f5d8300)
    error (-38, 0)

Я пробовал некоторые решения от stackru, но ничего не помогло.

Кодирование:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mStop = (Button) findViewById(R.id.mStop);
        mStart = (Button) findViewById(R.id.mStart);

        final MediaPlayer player = MediaPlayer.create(this, R.raw.alarmsong);

        mStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                player.start();
                player.setLooping(true);
                player.setVolume(100, 100);
            }
        });
        mStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                player.stop();
            }
        });
    }

Может ли кто-нибудь помочь мне исправить это.

2 ответа

Решение

Если я читаю документ, они говорят, что вам нужно вызвать метод prepare() для сброса вашего плеера.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mStop = (Button) findViewById(R.id.mStop);
    mStart = (Button) findViewById(R.id.mStart);

    final MediaPlayer player = MediaPlayer.create(this, R.raw.alarmsong);

    mStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            player.start();
            player.setLooping(true);
            player.setVolume(100, 100);
        }
    });
    mStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            player.stop();
            player.prepare();
        }
    });
}

Тебе нужно сделать

player.release();

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

Другие вопросы по тегам