2013-11-11 4 views
6

У моего приложения проблемы с потоковой передачей MediaPlayer, в частности на Nexus 5. Я не уверен, что это проблема Nexus 5 или API 19, вызывающая проблему. В основном мой MediaPlayer подготовлен, и я звоню MediaPlayer.start(), но MediaPlayer не начинает потоковое вещание.Проблемы с MediaPlayer на Android 4.4 (API 19)

Это происходит случайным образом и только на моем устройстве Nexus 5. Когда это произойдет, если я попытаюсь найти MediaPlayer, он начнет играть. Кто-нибудь еще переживает это?

UPDATE: Я подал ошибку против Android: https://code.google.com/p/android/issues/detail?id=62304

+0

У меня точно такая же проблема на 4.4 (Nexus 5). Видео будет воспроизводиться, но возраст начинается. Переключение на новое время работы ART остановило меня от необходимости искать, чтобы начать видео. Кажется, Google сломал кодек. – Mark

+0

Не уверен, но он выглядит связанным, на моем Nexus 5 У меня возникают проблемы с воспроизведением потоковых файлов (с помощью chrome/firefox или галереи ap), обслуживаемых mod_h264_streamer (с Apache 2), который работал на Android 4.3 при сохранении на телефоне такие файлы не будут воспроизводиться, пока исходный файл (не модифицированный модулем Apache) воспроизводится нормально – r4dius

+0

Спасибо за комментарии! Супер полезно знать, что я не единственный, кто сталкивается с этими проблемами. Я также замечаю проблемы, когда MediaPlayer будет передавать поток, но останавливает воспроизведение клипа раньше, чем он должен: http://stackoverflow.com/questions/19918118/mediaplayer-randomly-stops-on-android-4-4-19 @Mark, спасибо за подсказку. Это может сработать, но это не очень эффективное решение, чтобы сказать всем пользователям моих приложений. Я опубликую ошибку в Android и посмотрю, что они говорят. – clu

ответ

1

Не уверен, если это связано, у меня была аналогичная проблема с локального воспроизведения файлов, только на 4,4 эпизодически, не воспроизводимые на 4.3. Это происходит только тогда, когда я хочу воспроизвести новую песню, повторно использующую существующий MediaPlayer.

Решение: Мне пришлось вызвать stop(); перед сбросом(); и setDataSource():

stop(); 
    reset(); 

    try { 
     setDataSource(context, uri); 
     prepareAsync(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
0

время решения: в OnPrepare до начала попробуйте этот код:

if (mSeekWhenPrepared != 0) { 
      seekTo(mSeekWhenPrepared); 
     } else {seekTo(0);} 
Смежные вопросы