Debería haber configurado el controlador de subtítulos 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(); } }); } 

REGISTRO DDMS

Debería haber configurado el controlador de subtítulos

información / advertencia (2, 0)

Cuando busqué en Google, ni siquiera un tema relacionado con él. ¿Cómo puedo eliminar o desactivar esto?

Un desarrollador agregó recientemente el soporte de subtítulos a VideoView .

Cuando MediaPlayer comienza a reproducir 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 desea reproducir es una música o video. No estoy seguro de por qué lo hizo.

Respuesta corta: no me importa esta “excepción”.


Editar:

Todavía presente en Lollipop ,

Si MediaPlayer solo se usa para reproducir archivos de audio y realmente desea eliminar estos errores en el logcat, el código siguiente establece un empty SubtitleController en 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 para rastrear. En Windows, haga clic con el botón derecho en la pista -> Propiedad -> Detalles -> inserte un texto en los subtítulos. Hecho 🙂