如何解决Exo播放器添加引发/发送分析事件的总时间
我想为需要以下数据的exo播放器添加分析事件
- 在视频上花费的总时间
- 总播放时间
- 总暂停时间
- 暂停了多少时间
如何完成
尝试了以下回调,但无法找到确切的解决方案
hideWeight() {
this.displayedColumns = ['position','name','symbol'];
}
showWeight() {
this.displayedColumns = ['position','weight','symbol'];
}
还是我需要使用 AnalyticsListener ?
对此的更新发现,exo播放器库版本2.12.0已包含 PlaybackStatsListener ,它提供了大多数必需的分析数据,但数据不准确
Player.EventListener
这两个字段未显示准确或可靠的值。
解决方法
这是一段经过测试的代码,说明如何将onIsPlayingChanged
与private var playTime = 0L // in ms
private var pauseTime = 0L // in ms
private var totalTime = 0L // in ms
private var pressedPaused = 0
private val analyticsListener: AnalyticsListener = object : AnalyticsListener {
private var initTime = 0L
override fun onIsPlayingChanged(eventTime: AnalyticsListener.EventTime,isPlaying: Boolean) {
if(isPlaying) {
if(initTime != 0L) pauseTime += System.currentTimeMillis() - initTime
initTime = System.currentTimeMillis()
} else {
if(initTime != 0L) playTime += System.currentTimeMillis() - initTime
initTime = System.currentTimeMillis()
pressedPaused++
}
totalTime = playTime+pauseTime
Log.e("onIsPlaying","PLAYTIME: $playTime")
Log.e("onIsPlaying","PRESSEDPAUSE: $pressedPaused")
Log.e("onIsPlaying","PAUSETIME: $pauseTime")
Log.e("onIsPlaying","TOTALTIME: $totalTime")
super.onIsPlayingChanged(eventTime,isPlaying)
}
}
结合使用
<form id="form1"></form>
<form id="form2"></form>
<input ***form="form1"*** name="val1"/>
<input ***form="form1"*** name="val2" type="hidden" />
<input ***form="form2"*** name="val2"/>
<input ***form="form2"*** type="button" name="Submit Form 2 ONLY">
<input ***form="form1"*** type="button" name="Submit Form 1 data including form 2"
onsubmit="return copyFromForm2Function()">
,
private var mPlayTime = 0L
private var mPlayTotalTime = 0L
override fun onPlayerStateChanged(playWhenReady: Boolean,playbackState: Int) {
if (playbackState == 3) {
if (playWhenReady) {
mPlayTime = System.currentTimeMillis()
} else {
if (mPlayTime.toInt() != 0) {
val mPauseTime = System.currentTimeMillis() - mPlayTime
mPlayTotalTime += mPauseTime
mPlayTime = 0
}
}
} else {
if (mPlayTime.toInt() != 0) {
val mPauseTime = System.currentTimeMillis() - mPlayTime
mPlayTotalTime += mPauseTime
mPlayTime = 0
}
}
val mTotalDurationInSec = (mPlayTotalTime / 1000) % 60
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。