2013-04-18 22 views
6

Sto lavorando a un'app in cui il video è in pausa a 3 intervalli diversi. Dopo la seconda pausa, se si fa clic su un pulsante, dovrebbe ricominciare dalla posizione precedente.MediaPlayer.seekTo() non sta cercando di posizionarsi su Android

Es. se è attualmente in pausa all'1: 30, quindi al clic di un pulsante, passa al segnalibro precedente, ovvero 00:45.

Ho pensato che l'utilizzo di MediaPlayer.seekTo() mi aiuterà a raggiungere questo obiettivo. Ma seekTo() non cerca affatto la posizione. La posizione corrente rimane la stessa anche dopo una chiamata a seekTo();

Ecco il mio codice.

mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() { 
    @Override 
    public void onSeekComplete(MediaPlayer mp) { 
     Log.d("VID_PLAYER","Seek Complete. Current Position: " + mp.getCurrentPosition()); 
     mp.start(); 
    } 
}); 

e da qualche parte al di sotto, ho questo ...

mediaPlayer.seekTo(45000);

Qual è il problema? Perché non è seekTo(); lavoro? Qualsiasi aiuto sarebbe apprezzato.

Attualmente sto testando su v4.0.3 Android (ICS)

+0

Il tuo problema è correlato a questo: https://code.google.com/p/android/issues/detail?id=9135 –

+0

@ManishAndroid No. Nel mio caso, anche l'output del registro è errato. Non sta affatto saltando alla nuova posizione. Inizia da dove è stato messo in pausa. – varun1505

risposta

1

Il vostro problema avere qualcosa a che fare con questo bug: https://code.google.com/p/android/issues/detail?id=4124

Mi ricordo di incontrare questo circa un anno fa. Non penso di aver trovato una soluzione alternativa al momento.

+0

Sì @ Dr.Dredel. È simile a quello. Anche se, quel bug era nella v1.6. Sto usando un dispositivo ICS per testare la mia app. E acc i commenti lì, lo stesso problema esiste anche su Jelly Bean. – varun1505

2

Uno dei motivi per cui Android non è in grado di eseguire seekTo è a causa della strana codifica dei video. Ad esempio in formato MP4 i cosiddetti "punti di ricerca" (cioè l'indice di ricerca) possono essere specificati all'inizio e alla fine del file. Se vengono specificati all'inizio del file, allora seekTo si comporteranno correttamente. Ma se vengono specificati alla fine del file, seekTo non farà nulla e il video inizierà dall'inizio dopo il seekTo.

Questo è confermato bug-o-funzionalità in Android 4.4.2.

P.S. Su Youtube tutti i video sono codificati con "punti di ricerca" all'inizio del file. Quindi se hai questo problema con seekTo nella tua app prima di tutto controlla la tua app con alcuni file video da Youtube. Forse dovrai ricodificare i tuoi video ...

+2

Qualche idea su come ricodificare i video o i file audio che i "punti di ricerca" saranno all'inizio del file e funzioneranno correttamente con mediaPlayer? – Jakub

Problemi correlati