我正在用ExoPlayer 2在Android上开发视频播放器
我正在寻找在SubtitleView(屏幕上部)中检测字幕更改的方法,以在TextView(屏幕下部)中自动滚动字幕<似乎没有听众这么做<我试了几个听众的字幕,但没有效果<你有什么想法吗
我通过简单的代码解决了这个问题。
https://github.com/yuseisako/TangoPlayer/blob/master/app/src/main/java/me/yusei/tangoplayer/VideoPlayerActivity.java#L527
scrollSubtitleRunnable = new Runnable() {
List<Caption> subtitles = new ArrayList<>(timedTextObject.captions.values());
@Override
public void run() {
if(mMediaPlayer != null && mMediaPlayer.isPlaying()){
float currentPos = mMediaPlayer.getTime();
int index = 0;
for (Caption caption : subtitles) {
if (currentPos >= caption.start.mseconds - subtitleDelay
&& currentPos <= caption.end.mseconds - subtitleDelay) {
listView.setItemChecked(index,true);
int height = listView.getHeight();
listView.setSelectionFromTop(index, height/2);
setSubtitleTextView(caption);
break;
} else {
setSubtitleTextView(null);
if(currentPos < caption.end.mseconds - subtitleDelay){
break;
}
}
index++;
}
}
scrollSubtitleHandler.postDelayed(this, 300);
}
};
scrollSubtitleHandler.post(scrollSubtitleRunnable);
如何在ExoPlayer2上设置字幕?我试过这个媒体来源: 但我犯了一个错误:
是否有一种方法可以在每次文件更改时以某种方式触发一个事件?我是指类似的东西(在伪代码中) 我知道我可以周期性地做,但我能在没有计时器的情况下做吗?我希望在用户更新txt文件时(不是通过代码,而是通过打开文件并在里面写入)能够做出一些动作,但我不知道他什么时候会这么做。
问题内容: 如何轻松检测变量何时更改值?我希望每当指定变量更改值时,程序的执行就在调试器上中断。现在,我正在使用Eclipse的调试器。 问题答案: 对于类或实例变量 右键单击大纲视图中的变量 选择“切换监视点” 然后,在breapkoints视图中,可以右键单击结果条目 选择“断点属性” 取消选择“现场访问”。
问题内容: 有没有一种方法可以适用于所有浏览器? 问题答案: 原始答案 是。 更新 要获得移动设备的原始分辨率,您必须乘以设备像素比率:和。比率也为1的台式机也可以使用。 从本(Ben)得到另一个答案: 在原始JavaScript中,这将为您提供可用的宽度/高度: 对于绝对宽度/高度,请使用:
问题内容: 在Angular 1中,通过检查$ scope层次结构来进行更改检测。我们将在模板,控制器或组件中隐式或显式创建观察者。 在Angular 2中,我们不再具有$ scope,但是我们确实覆盖了setInterval,setTimeout等。我可以看到Angular如何使用它来触发$ digest,但是Angular如何确定发生了什么变化,特别是考虑到Object.observe从未进入
我显示字幕与exoPlayer在我的Android应用程序。现在我想改变字幕的位置从屏幕的底部到顶部。我尝试或到子标题View,但没有工作。可以改变字幕在屏幕上的位置吗?如果你的答案是肯定的,怎么做?