【发布时间】:2019-07-02 14:44:03
【问题描述】:
我正在创建一个 exoplayer 实例并添加一个流 URL 作为渐进式媒体源,准备播放器并播放音频。当我回到上一个活动并再次打开播放器活动时,另一个播放器实例正在运行相同的音频(两个实例同时播放相同的音频)。我还有一个静音按钮。当我第一次打开活动时,它按预期工作。重新打开 Activity 时,静音按钮仅静音当前 Activity 的 ExoPlayer 实例
我尝试将 ExoPlayer 代码移动到另一个类并使用公共函数调用它们,但没有成功
val dataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, packageName))
val newMediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse("STREAM URL"));
val exoPlayer = ExoPlayerFactory.newSimpleInstance(this);
exoPlayer.prepare((newMediaSource));
exoPlayer.playWhenReady = true;
muteButton.setOnClickListener {
if(muteButton.tag == "muted")
{
exoPlayer.volume = 1f;
muteButton.tag = "unmuted";
}
else
{
exoPlayer.volume = 0f;
muteButton.tag = "muted";
}
}
我希望在重新打开活动时运行相同的 ExoPlayer 并静音该特定实例
【问题讨论】:
-
覆盖
onBackPressed()并在其中调用finish()。甚至不要认为你必须打电话给finish()。 -
试过了。没用。音频仍在播放。还忘了提到我需要在后台播放音频。所以我无法阻止播放器 onBackPressed()
-
如果你完成了活动,就不应该有对 exoplayer 的引用,除非你将 exoplayer 存储在内存中。你试过发布 exoplayer 吗?
-
是的。但是释放播放器对我没有帮助,因为我也希望音频在后台播放
-
那么你是在服务中运行 exoplayer 吗?你没有在问题中提到这一点。如果服务正在运行,您应该检查 Activity 的
onCreate,如果是,您应该先停止它,然后通过新文件再次启动它。
标签: android android-studio kotlin exoplayer2.x