Ответ 1
Посмотрите на диаграмму состояния . Попробуйте reset()
и release()
ваш mediaPlayer
, прежде чем снова инициализировать его новыми ресурсами.
Я могу назначить субтитры один раз, но после этого, если попытаюсь изменить субтитры. Он не принимает новый, он отображает предыдущий каждый раз.
Ниже код, который я использую для изменения субтитров.
MediaPlayer mediaPlayer;
public void changeSubtitle()
{
//disable subtitle if it has
if(textTrackIndex!=0){
mediaPlayer.deselectTrack(textTrackIndex);
textTrackIndex=0;
mediaPlayer.setOnTimedTextListener(null);
}
//try to asssign new subtitle
mediaPlayer
.addTimedTextSource(
(Environment.getExternalStorageDirectory()
.getPath()
+ "/"+"filename",
MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
int textTrackIndex = findTrackIndexFor(TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,mediaPlayer.getTrackInfo());
if (textTrackIndex >= 0) {
mediaPlayer.selectTrack(textTrackIndex);
} else {
Log.w(TAG, "Cannot find text track!");
}
mediaPlayer.setOnTimedTextListener(this);
}
private int findTrackIndexFor(int mediaTrackType, TrackInfo[] trackInfo)
{
int index = -1;
for (int i = 0; i < trackInfo.length; i++) {
if (trackInfo[i].getTrackType() == mediaTrackType) {
return i;
}
}
return index;
}
Посмотрите на диаграмму состояния . Попробуйте reset()
и release()
ваш mediaPlayer
, прежде чем снова инициализировать его новыми ресурсами.