android - Exoplayer 会在后台播放多长时间?

标签 android kotlin exoplayer exoplayer2.x

我使用 Exoplayer 播放音频流。你可以看到下面的代码。我不是专业的 Android 开发人员,但我知道在 android 上,如果你想在后台运行某些东西,你必须使用服务。我没想到这个播放器会在后台播放,但确实如此。我的问题是。这足以让播放器在后台正常工作吗? exoplayer 是否默认处理免费模式,或者播放器会在一段时间后关闭。那么是否还需要做一个后台运行的服务呢?

private fun setUpPlayer(){
            val renderersFactory = DefaultRenderersFactory(this)
            val trackSelector = DefaultTrackSelector()
            exoPlayer = ExoPlayerFactory.newSimpleInstance(this, renderersFactory, trackSelector)
            val userAgent = Util.getUserAgent(this, "FOOBAR")
            val mediaSource = ExtractorMediaSource(Uri.parse(radioLink), DefaultDataSourceFactory(this, userAgent), DefaultExtractorsFactory(), null, null)
            exoPlayer.prepare(mediaSource)
            exoPlayer.playWhenReady = true
        }

最佳答案

需要一个服务来运行 exoplayer,我在尝试 exoplayer 时有过这方面的经验。首先,android 会破坏你的 Activity 以及你的 exoplayer 的实例。
在后按或后台应用程序仍然可以播放,但最终几分钟后它将停止,因为 android 试图释放资源。
通过服务来做事实际上是非常好的,这样你就可以做很多事情,而不必在你的 Activity 主线程上做繁重的任务。
您只需要一个前台服务,该服务还需要具有特定 channel 的通知,您还可以制作媒体样式通知,这样您就可以通过通知控制播放,甚至可以在屏幕锁定时进行播放。
this教程解释了如何使用服务
为什么您需要服务(引自 article)?

You should only use a foreground service when your app needs to perform a task that is noticeable by the user even when they're not directly interacting with the app.


根据您的一条评论,似乎在开发时 exoplayer 还活着,但我想说,一旦您将应用程序部署到不同的设备,您可能需要重新考虑使用 exoplayer 的 Activity 或服务的方法。

关于android - Exoplayer 会在后台播放多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63207261/

相关文章:

android - TextView添加drawable的不同方式

java - RecyclerView 适配器不适用于追星族

Android Studio & Kotlin : unresolved reference:context

class - Kotlin 类中 "this"的用途

android - 带有 ExoPlayer 和 PlayerControlView 的 MediaBrowserService - 如何从 UI (PlayerControlView) 访问播放器实例?

android - 检测 Android TV 上的 HDMI 服务是否已启动

android - 如何 "apply fragment shader to GLSurfaceView/TextureView"?

android - 为什么 TextView.setText 会导致封闭的 ScrollView 滚动?

android - 如果名称包含斜杠,图像保存不起作用

Java:如何为每个 RecyclerView 项目制作自己的总数计数器?