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é?

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 …

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.