MediaPlayer getTrackInfo () nunca incluye TimedText
He intentado este proyecto de ejemplo por iTech (se puede encontrar aquí ) Es sobre la visualización de subtítulos con la clase MediaPlayer de Android.
Cuando intento ejecutar el proyecto, reproductor multimedia funciona bien, pero el subtítulo no. Después de depurar he descubierto que getTrackInfo () sólo devuelve una matriz con longitud de 2 (que es sólo la pista de vídeo y audio) y la pista timedText no estaba incluida en la matriz. Alguien sabe por qué?
- OnDraw eficiente con mapas de bits y aceleración por hardware
- Android Thread.start () CalledFromWrongThreadException
- Cómo: comandos de voz en una aplicación de Android
- Rendimiento de PDF de Android
- ¿Cómo configurar el formato de 24 horas para la fecha en java?
Por razones de conveniencia, publico el fragmento del código siguiente:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtDisplay = (TextView) findViewById(R.id.txtDisplay); MediaPlayer player = MediaPlayer.create(this, R.raw.video); try { player.addTimedTextSource(getSubtitleFile(R.raw.sub), MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP); int textTrackIndex = findTrackIndexFor( TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT, player.getTrackInfo()); Log.d(TAG, "textTrackIndex = "+textTrackIndex); if (textTrackIndex >= 0) { player.selectTrack(textTrackIndex); } else { Log.w(TAG, "Cannot find text track!"); } player.setOnTimedTextListener(this); player.start(); } catch (Exception e) { e.printStackTrace(); } } private int findTrackIndexFor(int mediaTrackType, TrackInfo[] trackInfo) { int index = -1; Log.w(TAG, "trackinfo length = "+trackInfo.length); for (int i = 0; i < trackInfo.length; i++) { Log.d(TAG, "track type = "+trackInfo[i].getTrackType()+" and mediaTrackType = "+mediaTrackType); if (trackInfo[i].getTrackType() == mediaTrackType) { return i; } } return index; }
Tenga en cuenta que si intenta el proyecto de ejemplo, el video no se mostrará, pero sólo hay sonido. Esto no es un error, ya que creo que iTech a propósito no muestra el video 🙂
EDITAR:
He probado en Nexus 10 con Android 4.2.2 funciona bien. Pero todavía por qué no puedo entender por qué en mi otra tableta con Android 4.1.2 no funciona …
- NullPointerException Causado por getActionBar ()
- Androide. OnEditorAction nunca llamado
- Añadir editText en la barra de acción
- Imagen de publicación de Android en la pared de Facebook
- Java convertir la marca de tiempo UTC a DateTime local
- ¿Puedo desarrollar una aplicación de Android usando LIBGDX sin mucho conocimiento de los componentes del sistema operativo Android?
- ¿Cómo puedo corregir el error JDK no encontrado al crear una fuente de Android?
- FindViewById () está regresando no puede encontrar el símbolo, pero el ID se define en el diseño?
- Cajón de navegación: crea una nueva instancia de fragmento cada vez o simplemente "actualiza" los datos.
- ¿Qué le pasó a iPrintSdk?