Android ExoPlayer OkHttpDataSource传输侦听器和进度通知不工作
我正在使用ExoplayerAndroid ExoPlayer OkHttpDataSource传输侦听器和进度通知不工作,android,okhttp,exoplayer,Android,Okhttp,Exoplayer,我正在使用ExoplayerDownloadService进行媒体下载。当我为DownloadManager设置OkHttpDataSourceFactory时,TransferListener不显示下载进度,并且通知(进度通知)不更新,但TransferListener和通知(进度通知)适用于DefaultHttpDataSourceFactory 下载服务: //on download start V/exoplayerDownload: initializing //on downloa
DownloadService
进行媒体下载。当我为DownloadManager
设置OkHttpDataSourceFactory
时,TransferListener
不显示下载进度,并且通知
(进度通知)不更新,但TransferListener
和通知
(进度通知)适用于DefaultHttpDataSourceFactory
下载服务:
//on download start
V/exoplayerDownload: initializing
//on download finish
V/exoplayerDownload: started
V/exoplayerDownload: downloading
V/exoplayerDownload: downloading
...
V/exoplayerDownload: downloading
V/exoplayerDownload: downloading
V/exoplayerDownload: finished
classmydownloadservice:DownloadService{
//...
重写getDownloadManager():DownloadManager{
val myApplication=应用程序作为myApplication
返回下载管理器(
应用上下文,
myApplication.getDatabaseProvider(),//单例
myApplication.getDownloadCache(),//singleton
myApplication.getDataSourceFactory()//单例
).申请{
addListener(
下载StateListener(
应用上下文,
myApplication.getNotificationHelper(),
前台通知ID
)
)
}
}
重写getForegroundNotification(下载:MutableList):通知{
//...
val myApplication=应用程序作为myApplication
返回myApplication.getNotificationHelper()
.buildProgressNotification(R.drawable.ic_android,null,null,下载)
}
//...
类DownloadStateListener(
私有val上下文:上下文,
private val notificationHelper:下载notificationHelper,
firstNotificationId:Int
):DownloadManager.Listener{
私有变量nextNotificationId=firstNotificationId
覆盖已更改的下载(下载管理器:下载管理器,下载:下载){
val通知:通知
if(download.state==download.state\u已完成){
通知=notificationHelper
.buildDownloadCompletedNotification(R.drawable.ic_android,null,null)
}else if(download.state==download.state_失败){
通知=notificationHelper
.buildDownloadFailedNotification(R.drawable.ic_android,null,null)
}否则
返回
NotificationUtil.setNotification(上下文,nextNotificationId++,通知)
}
}
}
OkHttpDataSourceFactory的实例
:
//on download start
V/exoplayerDownload: initializing
//on download finish
V/exoplayerDownload: started
V/exoplayerDownload: downloading
V/exoplayerDownload: downloading
...
V/exoplayerDownload: downloading
V/exoplayerDownload: downloading
V/exoplayerDownload: finished
fun getDataSourceFactory():OkHttpDataSourceFactory=
如果(::dataSourceFactory.isInitialized)dataSourceFactory
else OkHttpDataSourceFactory(
getOkHttpClient(),
applicationContext.packageName,
对象:TransferListener{
重写onTransferInitializing(源:DataSource?、dataSpec:dataSpec?、isNetwork:Boolean){
Log.v(“exoplayerDownload”,“初始化”)
}
重写onTransferStart(源:DataSource?、dataSpec:dataSpec?、isNetwork:Boolean){
Log.v(“exoplayerDownload”,“已启动”)
}
重写fun onTransferEnd(源:DataSource?、dataSpec:dataSpec?、isNetwork:Boolean){
Log.v(“exoplayerDownload”,“完成”)
}
重写OnByTestTransferred(源:DataSource?、dataSpec:dataSpec?、isNetwork:Boolean、ByTestTransferred:Int){
Log.v(“exoplayerDownload”,“下载”)
}
},
/*缓存控制=*/null
).apply{dataSourceFactory=this}
日志:
//on download start
V/exoplayerDownload: initializing
//on download finish
V/exoplayerDownload: started
V/exoplayerDownload: downloading
V/exoplayerDownload: downloading
...
V/exoplayerDownload: downloading
V/exoplayerDownload: downloading
V/exoplayerDownload: finished
如何获得像DefaultHttpDataSourceFactory
这样的OkHttpDataSourceFactory
的下载进度?
如果有任何帮助,我将不胜感激