Я пытаюсь использовать файл .srt для источника с временным текстом (доступен только в android 4.1+ http://developer.android.com/about/versions/android-4.1.html#Multimedia). Первая проблема связана с получением файлового дескриптора для файла .srt(в папке с ресурсами, как еще вы можете связать его в своем приложении?). Файл автоматически сжимается, поэтому вы не сможете даже увидеть файл без изменения настроек компиляции или выполнения пользовательской сборки. Самое простое решение - переименовать файл .srt в .jpg, чтобы он не сжался, и метод openFD все еще работает. Я теперь добавляю TimedTextSource с помощью:
_myMP.addTimedTextSource(getAssets().openFd("captions.jpg").getFileDescriptor(), MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
Теперь файл загружается правильно и с помощью myMP.getTrackInfo(), чтобы получить список треков, можно увидеть, что после добавления синхронизированного текстового источника на 6-й дорожке есть тип "3", который является типом текстового трека. Я использовал selectTrack, чтобы выбрать этот трек, как сказано в документации Google, но после этого никаких титров никогда не появлялось и на моем TimedTextListener:
_myMP.setOnTimedTextListener(new OnTimedTextListener(){
@Override
public void onTimedText(MediaPlayer mp, TimedText text) {
if (text!=null)
Log.d("TimedText", text.getText());
}
});
Пожары только один раз (у меня есть 20 синхронизированных текстовых событий в файле), но текстовый параметр всегда равен нулю. Я выполнил поиск и не могу найти один пример рабочего кода использования timeText, и он не отображается в каких-либо примерах проектов, буквально нет документации, отличной от api docs от google, но, насколько я могу судить, никто не опубликовал рабочий пример. Я тестирую это на Google Nexus, обновленном до Android 4.2