2013-04-18 9 views
6

Pracuję nad aplikacją, w której wideo jest wstrzymywane w 3 różnych odstępach czasu. Po drugiej pauzie kliknięcie przycisku powinno zacząć od poprzedniej lokalizacji.MediaPlayer.seekTo() nie szuka pozycji na Androidzie

Np. jeśli jest aktualnie wstrzymana o 1:30, to po kliknięciu przycisku przechodzi do poprzedniej zakładki, tj. 00:45.

Pomyślałem, że użycie MediaPlayer.seekTo() pomoże mi to osiągnąć. Ale seekTo() nie szuka w ogóle pozycji. Obecna pozycja pozostaje taka sama nawet po wywołaniu funkcji seekTo();

Oto mój kod.

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

i gdzieś poniżej, mam to ...

mediaPlayer.seekTo(45000);

Na czym polega problem? Dlaczego nie jest seekTo(); pracujący? Każda pomoc będzie doceniona.

Ja obecnie testuje go na Android v4.0.3 (ICS)

+0

Czy Twój problem jest związany z tym: https://code.google.com/p/android/issues/detail?id=9135 –

+0

@ManishAndroid No. In my case, wynik logu jest również błędny. To wcale nie skacze na nową pozycję. Rozpoczyna się od miejsca, w którym został zatrzymany. – varun1505

Odpowiedz

1

Czy problem ma coś wspólnego z tym błędem: https://code.google.com/p/android/issues/detail?id=4124

Pamiętam napotykają to około rok temu. Myślę, że nie znalazłem obejścia w tym czasie.

+0

Tak @ Dr.Dredel. Jest podobny do tego. Chociaż ten błąd był w wersji 1.6. Używam urządzenia ICS do testowania mojej aplikacji. I zgodnie z uwagami tam, ten sam problem istnieje również w Jelly Bean. – varun1505

2

Jedną z przyczyn, dla których Android nie jest w stanie wykonać seekTo jest dziwne kodowanie filmów. Na przykład w formacie MP4 można określić tak zwane "punkty przeszukiwania" (tj. Indeks wyszukiwania) na początku i na końcu pliku. Jeśli zostaną określone na początku pliku, wówczas seekTo zachowa się poprawnie. Ale jeśli są określone na końcu pliku, seekTo nic nie zrobi i wideo rozpocznie się od początku po seekTo.

To jest potwierdzone bug-or-feature w systemie Android 4.4.2.

P.S. Na Youtube wszystkie filmy są zakodowane za pomocą "szukania punktów" na początku pliku. Więc jeśli masz ten problem z seekTo w swojej aplikacji, najpierw sprawdź swoją aplikację za pomocą plików wideo z serwisu Youtube. Być może będziesz musiał ponownie kodować swoje filmy ...

+2

Każdy pomysł, jak ponownie zakodować filmy lub pliki audio, które "szukają punktów" znajdują się na początku pliku i działają poprawnie z odtwarzaczem multimedialnym? – Jakub

Powiązane problemy