Exo-Player 2.10.1表示已弃用SimpleCache(文件cacheDir,CacheEvictor evictor)

问题描述 投票:1回答:1

我正在使用ExoPlayer播放在线服务器中的视频。因此,为了更好地保存更多Internet或重播视频数据,我只是将所有视频缓存到Cache directory。但是问题在于它不赞成constructorSimpleCache的说法。

查看我的代码:

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 instancebuild ProgressiveMediaSource

我正在使用ExoPlayer播放在线服务器中的视频。因此,为了更好地保存更多Internet或重播视频数据,我只是将所有视频缓存到Cache目录中。但问题在于...

android kotlin exoplayer exoplayer2.x
1个回答
0
投票

尝试一下:

        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)
© www.soinside.com 2019 - 2024. All rights reserved.