studio mediaplayer mecool example ejemplo developer create android android-mediaplayer

mecool - mediaplayer create android example



Debería haber configurado el controlador de subtítulos Error Mediaplayer Android (3)

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?


Ignora esta excepción El reproductor multimedia funciona bien con esta excepción. Estoy recibiendo esta excepción en Lollipop 5.1. Mi teléfono estaba configurado en modo silencioso. Y pensé que mi reproductor multimedia no funcionaba. Para eliminar el teléfono del modo silencioso de forma programática

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); int ringerMode = audioManager.getRingerMode(); audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); // start your media player // before closing media player, reset your ausio manager to original //ringer mode audioManager.setRingerMode(ringerMode);


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 :)


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)