【发布时间】:2021-02-11 12:49:18
【问题描述】:
我想使用audio_service 和just_audio 在后台播放音频。但问题是我必须在所有元数据开始时设置队列,以确保即使应用程序处于后台,它们也会自动运行。但我没有播放歌曲的歌曲网址。相反,我有一个可用于获取歌曲播放 URL 的函数。现在我想每次都调用该函数来获取歌曲播放 URL 并使用该 URL 播放歌曲。我想在 AudioBackgroundService 的代码中调用该函数,而不是在我的颤振 UI 的代码中。因为如果我的 UI 不存在,即在后台,则不会调用该函数。因此,要确保每次必须在 AudioServiceBackground 代码中调用该函数。有没有办法这样做?我正在使用audio_service documentation 中提供的相同代码。我想我必须在 AudioService 的onStart 函数中使用该函数,但我仍然无法找到出路。此外,如果它可以在播放当前歌曲的同时为下一首歌曲调用该函数会更好。
【问题讨论】:
-
我不确定我是否理解这个问题。 “问题是我必须在开始时设置队列”。为什么你必须在开始时设置队列?
-
对不起,如果我不清楚。实际上,我想使用 just_audio 和 audio_service 在后台运行歌曲。他们实际上需要排队才能开始播放所以我必须添加队列以确保它们在后台运行
-
问题是我没有任何详细信息可以将歌曲添加到队列中。所以首先我需要标题、艺术家甚至歌曲网址等详细信息。所以我有一个使用一些 API 来获取所有这些东西的函数。所以我想使用该函数来获取歌曲详细信息并播放它,但不使用 Flutter UI,因为如果 UI 不存在,即背景,它将不会调用该函数
-
我想将该函数与 audio_service 一起使用,这样每次歌曲更改时它都会调用该函数,获取详细信息并播放歌曲,然后移动到队列中的下一个项目,调用函数,获取详细信息并播放等等开启,AudioServiceBackground 中的所有内容都无需使用 Flutter UI
-
我问你为什么需要设置队列的原因是这样做的唯一目的是将队列广播到客户端/用户界面以进行显示。如果您只在歌曲更改时获取当前歌曲的元数据,那么在用户最终播放该项目之前,您可能会丢失某些队列项目的元数据,所以我不确定您将如何实际显示这个不完整的队列。您希望在加载所有元数据之前如何显示队列?
标签: android flutter dart flutter-layout just-audio