У меня возникла проблема с воспроизведением видео на Android 4.4 на вкладке Galaxy 3. Проблема не возникала с предыдущей версией Android 4.2.MediaPlayer зависает, а не циклизирует видео на Android 4.4
Вопрос
Я играю видео в цикле. Это очень хорошо работало для всех пользователей, пока Tab 3 не обновился до Android 4.4. С тех пор видео зависает после первого цикла (он застревает на первом кадре видео, чтобы быть точным).
я могу воспроизвести это поведение, и на данный момент видео замерзает моя LogCat начинает получать полный со следующим выходом:
16:25:25.239 14589-14601/my.app V/MediaPlayer? back from callback
16:25:25.499 14589-14686/my.app V/MediaPlayer? message received msg=7, ext1=0, ext2=0
16:25:25.499 14589-14686/my.app V/MediaPlayer? unrecognized message: (7, 0, 0)
16:25:25.499 14589-14686/my.app V/MediaPlayer? callback application
16:25:25.499 14589-14686/my.app V/MediaPlayer? back from callback
16:25:25.519 14589-14602/my.app V/MediaPlayer? message received msg=4, ext1=0, ext2=0
16:25:25.519 14589-14602/my.app V/MediaPlayer? Received seek complete
16:25:25.519 14589-14602/my.app V/MediaPlayer? All seeks complete - return to regularly scheduled program
16:25:25.519 14589-14602/my.app V/MediaPlayer? callback application
16:25:25.519 14589-14602/my.app V/MediaPlayer? back from callback
16:25:25.519 14589-14601/my.app V/MediaPlayer? message received msg=6, ext1=0, ext2=0
16:25:25.519 14589-14601/my.app V/MediaPlayer? Received MEDIA_STARTED
16:25:25.519 14589-14601/my.app V/MediaPlayer? callback application
16:25:25.519 14589-14601/my.app V/MediaPlayer? back from callback
16:25:25.789 14589-14686/my.app V/MediaPlayer? message received msg=7, ext1=0, ext2=0
16:25:25.789 14589-14686/my.app V/MediaPlayer? unrecognized message: (7, 0, 0)
16:25:25.789 14589-14686/my.app V/MediaPlayer? callback application
16:25:25.789 14589-14686/my.app V/MediaPlayer? back from callback
16:25:25.809 14589-14602/my.app V/MediaPlayer? message received msg=4, ext1=0, ext2=0
16:25:25.809 14589-14602/my.app V/MediaPlayer? Received seek complete
Код
Следующая (simplyfied) деятельность должна для воспроизведения видео. MediaPlayer.OnErrorListener() и MediaPlayer.OnInfoListener() никогда не вызываются.
public class VideoActivity extends Activity {
private MediaPlayer mediaPlayer;
private String videoPath = "some path obtained from the system";
// [...]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mediaPlayer = new MediaPlayer();
startMovie();
}
private void startMovie(){
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.setLooping(true);
mediaPlayer.setDataSource(videoPath);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mp.start();
mp.seekTo(0);
}
});
mediaPlayer.prepare();
}
}
Видео может быть запущен несколько раз с другим путем видеофайла в течение всего срока деятельности, поэтому я останавливаюсь и сбросом проигрывателя перед началом фильма.
До сих пор единственными решениями, которые я нашел в Интернете, было убедиться, что MediaPlayer не собирается GC (который я делаю, не делая его локальным объектом метода) и реализую WakeLock, который я также сделал без эффект.
Может ли кто-нибудь помочь мне здесь и указать мне в правильном направлении? Спасибо!
Вы нашли какое-нибудь лучшее решение для этого? У меня есть цикл анимации, и я хочу, чтобы во время загрузки пути к файлу снова не было заморозки. Спасибо – goodm
Нет, я не нашел лучшего решения и в итоге использовал это. В моем случае не было заметного отставания (но видео было довольно коротким). –
Любые обновления по этому вопросу? Это также вызывает проблемы для меня, и я использую S6 – AndyRoid