Как возобновить работу медиаплеера?

Я использую медиаплеер.

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

Любая помощь может быть действительно полезной.


person Prateek Raj    schedule 04.10.2010    source источник


Ответы (6)


Спасибо за внимание, но я получил его сам

для приостановки медиаплеера я использовал:

Mediaplayer.pause();
length=Mediaplayer.getCurrentPosition();

а для возобновления игрока с позиции, на которой он недавно остановился, делается:

Mediaplayer.seekTo(length);
Mediaplayer.start();
person Prateek Raj    schedule 11.10.2010
comment
У меня это работало на вкладке Galaxy Tab 2, но не работало на Acer Iconia или Nexus 7. Я не знаю, что не так с запуском плеера не с нулевой позиции, но, очевидно, что-то не так. - person Mark; 01.03.2013
comment
это не работает для меня! ошибок нет но звук не возобновляется! в чем моя ошибка? - person ConductedClever; 21.09.2014
comment
Мне не нужно было использовать MediaPlayer.seekTo(length); Я просто вызвал MediaPlayer.start(), и он возобновился, как указано в документации (см. ответ ниже). - person Tash Pemhiwa; 10.11.2014

Я думаю, вам следует ознакомиться с документацией, найденной здесь: http://developer.android.com/reference/android/media/MediaPlayer.html

Некоторые цитаты из документации:

Воспроизведение можно приостанавливать и останавливать, а текущую позицию воспроизведения можно регулировать. Воспроизведение можно приостановить с помощью pause(). Когда вызов pause() возвращается, объект MediaPlayer переходит в состояние Paused. Обратите внимание, что переход из состояния Started в состояние Paused и наоборот происходит асинхронно в движке проигрывателя. Обновление состояния при вызовах isPlaying() может занять некоторое время, а в случае потокового контента это может занять несколько секунд.

  • Вызов start() для возобновления воспроизведения приостановленного объекта MediaPlayer, а положение возобновленного воспроизведения совпадает с местом, где оно было приостановлено. Когда вызов start() возвращается, приостановленный объект MediaPlayer возвращается в состояние Started.
  • Вызов pause() не влияет на объект MediaPlayer, который уже находится в состоянии Paused.

Штаты объяснили:

Состояния медиаплеера

И цитата из метода start() MediaPlayer

публичное пустое начало ()

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

Итак, чтобы ответить на ваш вопрос напрямую, чтобы возобновить приостановленный экземпляр MediaPlayer с точки, в которой он был приостановлен, снова используйте start() для этого экземпляра.

person Maciej Pigulski    schedule 04.10.2010

В принятом ответе правильный порядок:

Mediaplayer.start();
Mediaplayer.seekTo(length);

person Hoven    schedule 10.08.2013

если вы используете две кнопки, одну для воспроизведения и одну для паузы, то приведенный ниже код работает и пробовал:

                playbtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mPlayer = MediaPlayer.create(MainActivity.this,         
                    R.raw.adhan);

                    if (mPlayer.isPlaying()) {


                    } else {
                        mPlayer.seekTo(length);
                        mPlayer.start();
                      }

                }
                });

               pausebtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    mPlayer.pause();
                    length = mPlayer.getCurrentPosition();


                  }
                });
person Mohamed Haridy    schedule 10.06.2018

   public class MainActivity extends AppCompatActivity {

    MediaPlayer mediaPlayer;
   public void play(View view) {
           mediaPlayer.start();
   }
   public void pause(View view){
           mediaPlayer.pause();
   }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mediaPlayer= MediaPlayer.create(this,R.raw.someaudio);
    }
}

Сделайте две кнопки для воспроизведения и паузы. И используйте этот код. Это сработало для меня.

person Mohaize Jefrin    schedule 11.01.2018

как насчет этого пути?

     package com.mycompany.audiodemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    MediaPlayer mediaPlayer=null;
    int playPosition=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mediaPlayer = MediaPlayer.create(this,R.raw.sampleaudio);
    }

    public void playAudio(View view){

        //mediaPlayer.seekTo(playPosition);
        mediaPlayer.start();

    }

    public void pauseAudio(View view){
        mediaPlayer.pause();
        //playPosition =  mediaPlayer.getCurrentPosition();
    }
}
person bajji    schedule 20.10.2017