MediaPlayer: Debe tener un controlador de subtítulos ya establecido: KitKat

Estoy teniendo un problema extraño donde mi archivo de audio a veces se reproduce ya veces no se reproduce. La captura es que cuando decide no jugar, el DDMS me da una:

E/MediaPlayer﹕ Should have subtitle controller already set 

Debido a que este es uno-a-uno con la música no jugando, he determinado que este es probablemente el problema …

Si la música no está reproduciendo y presiono el botón de volumen empieza a tocar. Si espero unos 30 segundos de no jugar, empieza a empezar de nuevo (no en bucle).

¿Que está pasando aqui? Estoy en KitKat usando

  player = new MediaPlayer(); AssetFileDescriptor afd = null; try { afd = getAssets().openFd("Theme.mp3"); } catch (IOException e) { e.printStackTrace(); } try { player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); } catch (IOException e) { e.printStackTrace(); } try { player.prepare(); } catch (IOException e) { e.printStackTrace(); } player.setLooping(true); //restart playback end reached //player.setVolume(1, 1); //Set left and right volumes. Range is from 0.0 to 1.0 player.start(); //start play back 

Si observa una discusión previa sobre StackOverflow y la consolidación de Android, donde se introdujo, el código anterior podría no inicializar completamente el objeto MediaPlayer .

El código de ejemplo KitKat para la reproducción de medios sugiere que debe llamar a:

 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

Inmediatamente después de construir el MediaPlayer , y antes de llamar a su método setDataSource .

Tuve el mismo problema y lo arreglé agregando lo siguiente justo después de instanciar MediaPlayer.

 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { if (mp == mediaPlayer) { mediaPlayer.start(); } } }); 

Anteriormente estaba implementando MediaPlayer.OnPreparedListener y reemplazando onPrepared () pero no funcionó.

¡Espero que esto ayude!

Ha sido un largo tiempo desde que estaba trabajando en esta aplicación. Esto es lo que terminé haciendo para que esto funcione. (Probado en KitKat y Lollipop). Creo que cambiar de MediaPlayer a APMediaPlayer fue parte del truco.

 @Override public void onDestroy() { if(player != null) { player.release(); player = null; } super.onDestroy(); } @Override public void onStart() { super.onStart(); if(player != null) { player.start(); } else { player = new APMediaPlayer(this); //create new APMediaPlayer player.setMediaFile("Theme.mp3"); //set the file (files are in data folder) player.start(); //start play back player.setLooping(true); //restart playback end reached player.setVolume(1, 1); //Set left and right volumes. Range is from 0.0 to 1.0 } } @Override public void onResume() { super.onResume(); if(player != null) { player.start(); } } 

Esto debería solucionar el problema (hizo por mí): Reemplazar la línea que dice "player.start ()" siguiendo el resto de su código con una devolución de llamada asíncrona así:

 player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); } }); 

Este error es sólo un Log.e, no es un error real. No debería hacer que tu reproductor no juegue, supongo que es sólo porque el jugador no había terminado de prepararse cuando intentas llamar a start ().

 E/MediaPlayer﹕ Should have subtitle controller already set 

En archivo de manifiesto puede ayudarle

  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
  • Media Session Compat no muestra controles Lockscreen en Pre-Lollipop
  • Modo Doze y servicio de primer plano
  • Cómo obtener FPS del video reproducido por MediaPlayer cuando se utiliza un SurfaceView?
  • Analizar y reproducir un archivo .pls en Android
  • ¿Cómo seguir reproduciendo música en segundo plano después de que el usuario haga desaparecer la aplicación?
  • Advertencia de MediaPlayer de Android: Debería tener el controlador de subtítulos ya establecido
  • ¿Cómo puede reproducir medios de ftpserver sin descargarlo en android?
  • IllegalStateException para MediaPlayer.prepareAsync
  • ¿El video de Android VideoView almacenó videos en streaming?
  • Escucha de cambio de estado para MediaPlayer
  • MediaPlayer error (1, -1004) ¿Por qué?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.