Android MediaPlayer 字幕同步【二】

Android MediaPlayer 字幕同步【2】之前说了MediaPlayer如何实现字幕显示,但是API需要16以上。那如何系统不支

Android MediaPlayer 字幕同步【2】

之前说了MediaPlayer如何实现字幕显示,但是API需要16以上。那如何系统不支持的话我们可以自己实现。

大致思想如下:

从网上获取srt文件后(可以保存在本地/或者不保存)解析srt文件,随后根据Player播放不断的刷新字幕来实现同步机制。

srt解析网上随便下了一个电影的字幕srt文件,1
00:00:00,000 --> 00:00:10,000
(内容空白)
.....(省略若干行)
4
00:00:43,780 --> 00:00:49,230
We were once a peaceful race of intelligent mechanical beings.

5
00:00:50,070 --> 00:00:52,570
But then came the war.

格式id开始时间 --> 结束时间内容(回车空行)
如何解析srt文件网上很蛮多的介绍,大家可以搜索下。我是这样解析的:
private Srt findRightSrt(int percent, int currentPosition, int duration)    {        if (!hasSubtitleData())        {            return null;        }        if (!mSrtHelper.hasFoundSrt)//初始状态下为false,seekto之后为false        {            Srt srt = mSrtList.get(mSrtHelper.current);            while (srt != null && currentPosition >= 0                    && srt.getEndTime() < currentPosition)            {                mSrtHelper.current++;                srt = mSrtHelper.current < mSrtHelper.srtSize ? mSrtList                        .get(mSrtHelper.current) : null;            }            mSrtHelper.hasFoundSrt = true;            mNextSrt = getNextSrt(mSrtHelper.current);//保存下个srt文件        }        else if (mNextSrt != null)        {            if (currentPosition >= mNextSrt.getStartTime())//当前时间已经到超过下个srt,更新当前srt 和 nextSrt            {                mSrtHelper.current++;                mNextSrt = getNextSrt(mSrtHelper.current);            }            else if (currentPosition > mNextSrt.getEndTime())            {                mSrtHelper.hasFoundSrt = false;            }        }        return mSrtList.get(mSrtHelper.current);    }