2010-10-04 2 views
22

Sto utilizzando un lettore multimediale.Come riprendere il mediaplayer?

Ho l'opzione per avviare, arrestare e mettere in pausa il lettore. Il problema che ho è che non riesco a trovare la possibilità di riprendere la canzone dal punto in cui era precedentemente in pausa ..

Qualsiasi aiuto fornire sarebbe davvero utile.

risposta

89

Grazie per la vostra attenzione, ma li ho io

per sospendere l'attività Mediaplayer che ho usato:

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

e per riprendere il giocatore dalla posizione in cui si è fermato ultimamente è fatto da:

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

Grazie, funziona bene per me, – Hasmukh

+0

Ha funzionato per me sulla scheda Galaxy 2 ma non ha funzionato su Acer Iconia o Nexus 7. Non so cosa c'è di sbagliato con il lettore di partenza da posizione 0 ma ovviamente qualcosa è – Mark

+0

questo non funziona per me! nessun errore ma il suono non riprende! qual è il mio errore? – ConductedClever

23

Penso che si dovrebbe passare attraverso la documentazione trovata qui: http://developer.android.com/reference/android/media/MediaPlayer.html

Alcune citazioni dalla documentazione:

riproduzione può essere messo in pausa e si fermò, e la posizione di riproduzione corrente può essere regolata. La riproduzione può essere messa in pausa tramite pause(). Quando viene restituita la chiamata a pause() , l'oggetto MediaPlayer immette lo stato di pausa . Si noti che la transizione dallo stato avviato a lo stato in pausa e viceversa avviene in modo asincrono nel motore del lettore . Potrebbe passare un po 'di tempo prima che lo lo stato venga aggiornato nelle chiamate a isPlaying(), e può essere un numero di secondi nel caso di contenuti in streaming .

  • Calling start() per riprendere riproduzione per un MediaPlayer oggetto pausa, e la posizione di riproduzione ripreso è lo stesso dove era pausa. Quando viene restituita la chiamata a start() , l'oggetto MediaPlayer in pausa torna allo stato Avviato.
  • La chiamata alla pausa() non ha alcun effetto su un oggetto MediaPlayer che è già nello stato di pausa .

Uniti spiegato:

States of MediaPlayer

E citazione dal metodo start() del MediaPlayer

public void start()

di avviare o riprendere la riproduzione. Se la riproduzione era stata precedentemente messa in pausa , la riproduzione continuerà da dove era stata messa in pausa. Se la riproduzione è stata interrotta, o non è mai stata avviata prima, la riproduzione avrà inizio all'inizio di .

Quindi, per rispondere direttamente alla domanda, per riprendere l'istanza di MediaPlayer in pausa dal punto in cui è stata messa in pausa utilizzare di nuovo start() su tale istanza.

12

Nella risposta accettata, l'ordine corretto è

Mediaplayer.start();

Mediaplayer.seekTo (lunghezza);

+0

Grazie per questo !! – ASP

-1

che dire in questo modo?

 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(); 
    } 
} 
0

Quando si utilizza seekTo ho trovato che spesso inizia a giocare con il proprio all'inizio della pista poi porta avanti la riproduzione dal punto di cui è stato impostato seekTo.

Quello che ha funzionato per me è stata tiepida il volume e quindi manovella il backup una volta che il currentProgress corrisponde al corrente seek (memorizzato in globale).

0
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); 
    } 
} 

Realizza due pulsanti per la riproduzione e la pausa. E usa questo codice. Ha funzionato per me.