android - Exo-Player 2.10.1 说 SimpleCache(File cacheDir, CacheEvictor evictor) 已弃用

标签 android kotlin exoplayer exoplayer2.x

我正在使用 ExoPlayer从在线服务器播放视频。所以,为了更好地保存更多的互联网或数据回放视频,我只是将所有视频缓存到 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 .

最佳答案

尝试这个:

        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)

关于android - Exo-Player 2.10.1 说 SimpleCache(File cacheDir, CacheEvictor evictor) 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57159372/

相关文章:

android - Flutter 应用程序 - 无法在真实设备上进行测试! X-Code 版本有问题

android - 弹出 fragment 后的多个 LiveData 观察者

android - 赋值不是表达式 - Kotlin

java - Java Random 和 Kotlin Random 的区别

android - 我无法播放 m3u8 格式的视频

java - 由 : java. lang.ClassNotFoundException 引起:在 Firebase 电话身份验证中找不到类

java - 如何从 4 个随机数中生成两个随机数?

java - android.view.InflateException : Binary XML file line #9: Binary XML file line #9: Error inflating class

android - 调用 .prepare() 几秒钟后使用 ExoPlayer 播放音频文件

android - 在 Android 应用程序中显示日历