2012-03-20 2 views
2

Я работаю над планшетным приложением, которое позволяет просматривать видео и просматривать страницы через них с помощью ViewPager. Видео используют VideoView. Он отлично работает на Xoom и Transformer Prime. На вкладке Galaxy 10.1 чаще всего видео ошибки после выбора новой страницы. Я получаю:Ошибка VideoView/MediaPlayer, приводящая к сбою воспроизведения видео в некоторые моменты времени

MediaPlayer Error(1,-214783648) 
VideoView Error: 1, -214783648 

Видео загружается как выбирается страницы и я с помощью onPrepared слушателя, чтобы начать воспроизведение видео, как только он будет загружен. Ошибка, кажется, бросается до того, как вызывается onPrepared, но я вижу первый кадр видео, поэтому он, кажется, загружен. Я пытался отложить воспроизведение, но это ничего не улучшило. Я попытался загрузить видео снова из OnErrorListener, как только он потерпел неудачу, который, похоже, работает некоторое время. Galaxy Tab - единственная таблетка, застрявшая на 3.1, но я не уверен, что это имеет к этому какое-то отношение.

ответ

1

Насколько я могу судить, Galaxy Tab 10.1 (или Android 3.1 ... еще предстоит выяснить) может декодировать только два видео за раз. Поскольку я использую viewPager, потенциально 3 видео загружаются в любой момент времени. Решение (хотя и дерьмовое) состоит только в том, чтобы иметь только два загруженных видео, откладывая нагрузку до тех пор, пока не будет выбрана страница, и убедитесь, что другие представления (за исключением последнего активного вида) были уничтожены.

0

Я столкнулся с той же проблемой несколько дней назад. Вам не нужно уничтожать ваш Views мой дорогой anakin78z.

я решил такую ​​же проблему на моем планшете, добавив мои собственные SimpleOnPageChangeListener на моем ViewPager и добавив следующий код в мой слушатель:

@Override 
public void onPageSelected(int position) { 
    stopVideoView(position - 1); 
    stopVideoView(position + 1); 
    startVideoView(position); 
} 

private void startVideoView(int index) { 
    VideoView videoView = getVideoView(index); 
    if (videoView != null) 
     videoView.start(); 
} 

private void stopVideoView(int index) { 
    VideoView videoView = getVideoView(index); 
    if (videoView != null) { 
     videoView.stopPlayback(); 
} 

private VideoView getVideoView(int index){ 
    // Retrieve your videoviews here 
} 

Я уверен, что этот ответ пришел немного слишком поздно но я надеюсь, что это поможет кому-то!

Смежные вопросы