我正在使用ExoPlayer
播放在线服务器中的视频。因此,为了更好地保存更多Internet或重播视频数据,我只是将所有视频缓存到Cache directory
。但是问题在于它不赞成constructor
的SimpleCache
的说法。
查看我的代码:
private var sDownloadCache: SimpleCache? = null
fun getInstance(mContext: Context): SimpleCache {
val cacheEvictor = LeastRecentlyUsedCacheEvictor((100 * 1024 * 1024).toLong())
if (sDownloadCache == null)
sDownloadCache = SimpleCache(File(mContext.getCacheDir(), "media"),
cacheEvictor)
return sDownloadCache!!
}
在此代码编译器中只是警告我构造函数SimpleCache(File !, CacheEvictor!)已过时。 Java中弃用]]。所以,在那之后,我试图在SimpleCache.java
的文件中找到方法,现在有一种使用SimpleCache
的方法。SimpleCache(File cacheDir, CacheEvictor evictor, DatabaseProvider databaseProvider)
这对我来说是新的。因此,我的问题是如何使用此新构造函数而不是旧的不赞成使用的构造函数?有没有办法通过DatabaseProvider
?如果是,那么如何或从何而来?
我正在使用ExoPlayer
库:
implementation 'com.google.android.exoplayer:exoplayer:2.10.1' implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.1'
并且其原因是此版本可轻松创建
ExoPlayerFactory
instance
和build ProgressiveMediaSource
。
我正在使用ExoPlayer播放在线服务器中的视频。因此,为了更好地保存更多Internet或重播视频数据,我只是将所有视频缓存到Cache目录中。但问题在于...
尝试一下:
val evictor = LeastRecentlyUsedCacheEvictor((100 * 1024 * 1024).toLong())
val databaseProvider: DatabaseProvider = ExoDatabaseProvider(mContext)
simpleCache = SimpleCache(File(mContext.cacheDir, "media"), evictor, databaseProvider)
val mediaSource = ProgressiveMediaSource.Factory(
simpleCache?.let {
CacheDataSourceFactory(
mContext,
100 * 1024 * 1024, 10 * 1024 * 1024, playUri, it
)
}
)
.createMediaSource(playUri)
exoPlayer?.prepare(mediaSource)