Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ExoPlayer OkHttpDataSource传输侦听器和进度通知不工作_Android_Okhttp_Exoplayer - Fatal编程技术网

Android ExoPlayer OkHttpDataSource传输侦听器和进度通知不工作

Android ExoPlayer OkHttpDataSource传输侦听器和进度通知不工作,android,okhttp,exoplayer,Android,Okhttp,Exoplayer,我正在使用ExoplayerDownloadService进行媒体下载。当我为DownloadManager设置OkHttpDataSourceFactory时,TransferListener不显示下载进度,并且通知(进度通知)不更新,但TransferListener和通知(进度通知)适用于DefaultHttpDataSourceFactory 下载服务: //on download start V/exoplayerDownload: initializing //on downloa

我正在使用Exoplayer
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
的下载进度?

如果有任何帮助,我将不胜感激