Debe tener controlador de subtítulos ya establecido error Mediaplayer Android

Cada vez que reproduzco un medio, muestra una advertencia en DDMS Should have subtitle controller already set

MI CÓDIGO:

 private void start() { mediaPlayer.start(); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.stop(); mp.release(); } }); } 

DDMS LOG

Debe tener el controlador de subtítulos ya establecido

Info / advertencia (2, 0)

Cuando busqué en Google, ni siquiera un solo tema relacionado con él. ¿Cómo puedo deshacerme o deshabilitarlo?

Un desarrollador recientemente añadió soporte de subtítulos a VideoView .

Cuando MediaPlayer comienza a reproducir una música (u otra fuente), comprueba si hay un SubtitleController y muestra este mensaje si no está configurado. No parece importarle si la fuente que usted quiere jugar es una música o un vídeo. No sé por qué lo hizo.

Respuesta corta: No te preocupes por esta "Excepción".


Editar:

Todavía presente en Lollipop ,

Si MediaPlayer sólo se utiliza para reproducir archivos de audio y realmente desea eliminar estos errores en el logcat, el código a continuación establecer un empty SubtitleController para el MediaPlayer .

No debe utilizarse en el entorno de producción y puede tener algunos efectos secundarios.

 static MediaPlayer getMediaPlayer(Context context){ MediaPlayer mediaplayer = new MediaPlayer(); if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) { return mediaplayer; } try { Class<?> cMediaTimeProvider = Class.forName( "android.media.MediaTimeProvider" ); Class<?> cSubtitleController = Class.forName( "android.media.SubtitleController" ); Class<?> iSubtitleControllerAnchor = Class.forName( "android.media.SubtitleController$Anchor" ); Class<?> iSubtitleControllerListener = Class.forName( "android.media.SubtitleController$Listener" ); Constructor constructor = cSubtitleController.getConstructor(new Class[]{Context.class, cMediaTimeProvider, iSubtitleControllerListener}); Object subtitleInstance = constructor.newInstance(context, null, null); Field f = cSubtitleController.getDeclaredField("mHandler"); f.setAccessible(true); try { f.set(subtitleInstance, new Handler()); } catch (IllegalAccessException e) {return mediaplayer;} finally { f.setAccessible(false); } Method setsubtitleanchor = mediaplayer.getClass().getMethod("setSubtitleAnchor", cSubtitleController, iSubtitleControllerAnchor); setsubtitleanchor.invoke(mediaplayer, subtitleInstance, null); //Log.e("", "subtitle is setted :p"); } catch (Exception e) {} return mediaplayer; } 

Este código intenta hacer lo siguiente desde la API oculta

 SubtitleController sc = new SubtitleController(context, null, null); sc.mHandler = new Handler(); mediaplayer.setSubtitleAnchor(sc, null) 

Para eliminar el mensaje en logcat, agrego un subtítulo a la pista. En las ventanas, haga clic derecho en la pista -> Propiedad -> Detalles -> insertar un texto en el subtítulo. Hecho 🙂

  • Android: Media Player Duración Edición
  • Android MediaPlayer con AudioEffect: Obtención de error (-22,0)
  • Integración de un codec a un marco multimedia de Android
  • Android WebView HTML5 Video Spawns MediaPlayer que vive para siempre en Samsung S4
  • Cómo jugar el sonido predeterminado TICK?
  • Solución de problemas de la función SeekTo de Android MediaPlayer
  • Android: grabación de voz y grabación de audio
  • Posición de control de vídeo de Android en Titanium
  • El botón de reproducción de MediaController no se actualiza cuando se reproduce la canción
  • ¿Cómo reproducir audio continuamente mientras cambia la orientación en Android?
  • ¿Debe MediaPlayer.start () también ser un nuevo hilo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.