Hi I am working on MediaPlayer My code is describe below :
private void captionOn(String fileName) {
if (fileName != null) {
try {
if (mediaPlayer != null && contentPlaying && mediaPlayer.isPlaying()) {
Log.d(TAG,"TEST getSubtitleFile(fileName) == "+getSubtitleFile(R.raw.abc));
mediaPlayer.addTimedTextSource(getSubtitleFile(R.raw.abc), MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
textTrackIndex = findTrackIndexFor(
MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,
mediaPlayer.getTrackInfo());
Log.i("My Message", "textTrackIndex : " + textTrackIndex);
if (textTrackIndex >= 0) {
mediaPlayer.selectTrack(textTrackIndex);
isCaptionOn = true;
} else {
Log.w("My Message", "Cannot find text track!");
}
mediaPlayer.setOnTimedTextListener(this);
} else {
Log.d("My Message", "media player Null");
}
} catch (Exception e) {
e.printStackTrace();
Log.d("My Message", "Exception adding timed Text");
}
} else {
Toast.makeText(mContext, "No Caption Available at the moment",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onTimedText(MediaPlayer mp, final TimedText text) {
Log.i("My Message", "inside onTimedText Listener");
Log.i("My Message", "inside onTimedText Listener text = "+text);
timedTextHandler.post(new Runnable() {
@Override
public void run() {
Log.i("My Message", "inside onTimedText Listener run************** = ");
if (null != text) {
Log.i("My Message", "timed Text:" + text.getText());
if (text.getText() != null) {
String mText = text.getText().trim();
timedTextTextView.setVisibility(View.VISIBLE);
timedTextTextView.setText(mText);
}
} else {
timedTextTextView.setVisibility(View.INVISIBLE);
}
}
});
}
The method getSubtitleFile() print the filepath sucessfully. but inside onTimedText i am getting text null.
i am using a videoview and set onPrepareListener() on that. and inside onPrepared(MediaPlayer mediaPlayer)
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
this.mediaPlayer = mediaPlayer;
this.mediaPlayer.setOnBufferingUpdateListener(this);
this.mediaPlayer.setWakeMode(mContext, PowerManager.PARTIAL_WAKE_LOCK);
isPrepared = true;
Log.d(TAG, "TEST OnPrepared");
//if(Constants.IS_DEBUGGING_ON) {
Log.d("", "OnPrepared");
// }
mMovieDuration = mediaPlayer.getDuration();
video.start();
if(isCaptionDownloaded){
captionOn(ccFileName);
}
}
can anyone suggest what i am doing wrong here.
I think the problem is in your .srt file. I solved the same type of problem. Please have a look on my answer.
[MediaPlayer addTimedTextSource in android click here for answer]