Как воспроизводить аудио с помощью MediaPlayer без задержек?

#android

#Android

Вопрос:

Я хочу воспроизвести аудиофайл mp3 с помощью MediaPlayer, когда я вызываю метод start(), требуется несколько секунд (1 или 2 секунды) до воспроизведения аудиофайла.

Теперь я хочу, чтобы он воспроизводился немедленно, когда я нажимаю кнопку «Пуск». пожалуйста, помогите.

вот мой код :

 MediaPlayer player = new MediaPlayer();
player.setDataSource(path);
player.prepare();
player.seekTo(_start_at);
player.start();
  

и logcat :

V / MediaPlayer: получено сообщение msg = 8, ext1 = 0, ext2 = 0

V / MediaPlayer: уведомлять (8, 0, 0) об обратном вызове при отключенном mediaplayer

V/ MediaPlayer-JNI: setDataSourceFD: fd 57

V/ MediaPlayer: setDataSource(57, 0, 576460752303423487)

V / MediaPlayer: получено сообщение msg = 8, ext1 = 0, ext2 = 0

V / MediaPlayer: уведомлять (8, 0, 0) об обратном вызове при отключенном mediaplayer

V / MediaPlayer: setVideoSurfaceTexture

V / MediaPlayer: подготовить

V / MediaPlayer: получено сообщение msg = 200, ext1 = 973, ext2 = 0

W / MediaPlayer: информация / предупреждение (973, 0)

V / MediaPlayer: приложение обратного вызова

V / MediaPlayer: возврат из обратного вызова

V / MediaPlayer: получено сообщение msg = 5, ext1 = 0, ext2 = 0

V / MediaPlayer: новый размер видео 0 x 0

V / MediaPlayer: приложение обратного вызова

V / MediaPlayer: возврат из обратного вызова

V / MediaPlayer: получено сообщение msg = 1, ext1 = 0, ext2 = 0

V / MediaPlayer: подготовлен

V / MediaPlayer: поток приложения signal

V / MediaPlayer: приложение обратного вызова

V / MediaPlayer: возврат из обратного вызова

V / MediaPlayer: подготовка завершена — статус = 0

I / MediaPlayer: не отправлять intent. msg.arg1 = 0, msg.arg2 = 0

E / MediaPlayer: должен быть установлен контроллер субтитров

V / MediaPlayer-JNI: начать

V / MediaPlayer: запуск

V / MediaPlayer: получено сообщение msg = 300, ext1 = 0, ext2 = 0

V / MediaPlayer: получено SEC_MM_PLAYER_CONTEXT_AWARE

V / MediaPlayer: приложение обратного вызова

V / MediaPlayer: возврат из обратного вызова

V / MediaPlayer: получено сообщение msg = 6, ext1 = 0, ext2 = 0

V / MediaPlayer: получен MEDIA_STARTED

V / MediaPlayer: приложение обратного вызова

V / MediaPlayer: возврат из обратного вызова

I / MediaPlayer: отправка контекстно-зависимого события

I / MediaPlayer: sendBroadcast CONTEXT_AWARE_MUSIC_INFO — type(start) — id (1183)

V/ MediaPlayer-JNI: native_finalize

V / MediaPlayer-JNI: релиз

V / MediaPlayer: isPlaying: 1

V / MediaPlayer-JNI: isPlaying: 1

I / MediaPlayer: отправка broadcast CONTEXT_AWARE_MUSIC_INFO — тип (остановка) — идентификатор (1183)

V / MediaPlayer-JNI: остановить

V / MediaPlayer: остановка

Комментарии:

1. Попробуйте подготовить проигрыватель и файл перед его запуском

2. @tainguyen Почему бы вам не инициализировать mediaplayer перед нажатием кнопки. И запуск только при нажатии кнопки.

3. В качестве альтернативы SoundPool можно использовать для быстрого воспроизведения очень коротких звуковых файлов, таких как звуковые эффекты игр и т. Д.

4. @AhmadSattout пытался это сделать, но это не сработало

5. запускайте медиаплеер при запуске действия, а не при создании. попробуйте запустить медиаплеер с помощью OnStart () или onResume ().