外挂字幕实现之后,需要做点击查词。
字幕是通过TextView输出的,在xml中,给TextView加上如下属性:
android:textIsSelectable="true"
则TextView中的文字可以通过双击等手势选中。
通过注册ContextMenu:
registerForContextMenu(_textView);
选中文字后,系统会弹出Context菜单,可以通过如下接口截获这个事件:
void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
在这个事件中,调用:
mMediaPlayer.pause();
可以在选词时,停掉播放器,方便查词。
如果安装了有道词典,这时弹出的上下文菜单中,会有查词选项,点击后,即可查词。
到此,这个播放器需要学习功能基本完成,再加上手势识别(快进/快退),字幕同步微调,就算完成了。原计划按字幕时间轴进行快进快退的功能,由于视频文件不能精确定位到预设的时间(视频解码原理相关),实现的比较鸡肋,改用5s固定间隔实现。
补充:对于纯音频解码,seek操作的准确性很高,因此,从电影中分离出音轨,再基于字幕时间轴进行快进快退操作,从此听美剧不是梦!