MediaPlayer случайно останавливается на Android 4.4 (19)

Мое приложение отлично передает звук на всех устройствах, кроме Nexus 5. На Nexus 5 MediaPlayer случайным образом перестает воспроизводиться. Не уверен, что изменения в отношении громкости (http://developer.android.com/about/versions/android-4.4.html#Multimedia) в версии 4.4 что-то сломалось.

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

ОБНОВЛЕНИЕ: я смог воспроизвести проблему на своем Nexus 5. Кажется, это действительно происходит ближе к концу клипа. Когда в клипе остается около 1–5 секунд, MediaPlayer вызывает метод OnCompletionListener.onCompletion(). Это происходит только на Nexus 5 и случайно на некоторых клипах. Я могу воспроизвести его почти в 30% случаев. Обратите внимание, что когда клип заканчивается раньше, если я попытаюсь вернуться и снова воспроизвести клип, он полностью завершит воспроизведение клипа во второй раз. Я знаю, что Android 4.4 только что вышел, но, надеюсь, кто-нибудь может помочь! Спасибо.

ОБНОВЛЕНИЕ: я сообщил об ошибке в Android: https://code.google.com/p/android/issues/detail?id=62304


person LyteSpeed    schedule 11.11.2013    source источник
comment
Похоже, это проблема 4.4, а не проблема Nexus 5. Что еще хуже.   -  person StackOverflowed    schedule 30.11.2013


Ответы (3)


Хорошо, я нашел решение. Я не уверен, что это проблема, с которой вы все сейчас сталкиваетесь, но она решает мою. По сути, в Android 4.4+ представлено множество новых функций управления питанием, и одна из них включает отключение процессора при выключенном экране. Цитата из документов Android:

Поскольку система Android пытается экономить заряд батареи, пока устройство находится в спящем режиме, система пытается отключить любые ненужные функции телефона, включая ЦП и аппаратное обеспечение WiFi. Однако, если ваш сервис воспроизводит или транслирует музыку, вы хотите, чтобы система не мешала вашему воспроизведению.

Следовательно, без блокировки пробуждения процессора MediaPlayer теряет способность правильно выполнять потоковую передачу, что приводит к остановке воспроизведения до завершения клипа. Решение для этого простое: добавьте PARTIAL_WAKE_LOCK в MediaPlayer. Как описано для Android:

mMediaPlayer = new MediaPlayer();
// ... other initialization here ...
mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

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

person LyteSpeed    schedule 21.12.2013
comment
Кажется, это снова происходит на Android 5.0, хотя у меня есть вышеупомянутые блокировки. Пытаемся понять, почему это происходит. - person LyteSpeed; 06.01.2015
comment
Эй, clu ... вы нашли решение этой проблемы, потому что я также сталкиваюсь с этой же проблемой в Android 5.0 (Nexus 7) ... любая помощь будет оценена по достоинству. - person sid; 27.03.2015
comment
Вы нашли какие-либо решения для 5.0+? @clu - person donmezburak; 09.10.2015
comment
Всем привет. Извините за задержку ответа. Я фактически остановил разработку на Android с помощью MediaPlayer, поэтому я не в курсе этой проблемы. Одна вещь, с которой я столкнулся, это то, что Android 5+ использовал экспериментальный медиаплеер. Я считаю, что это можно отключить в параметрах разработчика телефона. Я помню, что нам пришлось отправить электронное письмо нашим пользователям, чтобы сообщить им об отключении экспериментального медиаплеера. Ужасное решение, я знаю, но это то, что я помню. Надеюсь, поможет. - person LyteSpeed; 09.10.2015

Недавно столкнулся с почти такой же проблемой: MediaPlayer отлично работает на Android 4.3 и ниже, но не воспроизводит те же видео на Android 4.4.

Решил перейти на библиотеку vitamio, и теперь мое приложение работает и на 4.4. vitamio API идентичен MediaPlayer, поэтому миграция прошла довольно легко.

Но у этого решения все же есть некоторые недостатки:

  • Вы должны купить лицензию, если вы не являетесь индивидуальным разработчиком
  • Размер приложения будет увеличен на ~11 МБ.
person Vladimir Mironov    schedule 20.12.2013

Возможно, эта проблема связана с ошибкой: http://code.google.com/p/android/issues/detail?id=63032

Проблема, связанная с вышеуказанной ошибкой, исправлена ​​в 4.4.1/4.4.2. Запись журнала изменений, которая предположительно является проблемой, содержит следующую информацию:

person Atomicblah    schedule 20.12.2013