0

我正在编写一个音频应用程序,它使用 iPod 音乐播放器播放 iPod 音乐库中的媒体项目。

现在我知道 iPod 在后台可以继续播放,但我还想在后台运行线程或计时器,其中选择器方法定期检查音乐播放器的状态,以便应用程序可以应用规则以在曲目之间应用延迟,并在后台自动将新的媒体收藏加载到播放器中。

这可能吗?

如果没有,是否还有其他方法可以实现此功能?

4

3 回答 3

1

诀窍是不要使用MPMusicPlayerController,因为当您的应用程序进入后台时,它实际上放弃了对 iPod 应用程序的控制(您可以通过关闭您的应用程序并打开 iPod 应用程序来检查这一点)。

对于我目前正在开发的音乐应用程序,我使用AVAudioSessionand AVPlayer( not AVAudioPlayer ) 推出了自己的音乐播放器。我在播放器上实现了一个队列,以及一个为队列提供数据的数据源(类似于 UITableViewDatasource)。所有这一切都在后台运行时雄辩地工作,并且与 iPod 应用程序没有任何关联(作为额外的奖励,您的应用程序图标出现在多任务栏上的遥控器旁边)。

如果您开发了类似的东西,那么当您向数据源询问队列中的下一个项目时,您可以查询您的规则集并决定下一步该做什么。

于 2011-08-19T12:29:52.377 回答
0

当然。您可以在应用程序委托的applicationDidEnterBackground:.

从模板:

如果您的应用程序支持后台执行,则在用户退出时调用此方法而不是 applicationWillTerminate:。

于 2011-08-19T10:48:31.357 回答
0

好吧,是的,现在,您不能使用NSTimer,因为它们已失效。您可以启动一段代码以通过 GCD 运行以在后台运行,这将具有最大值。执行时间 10 分钟。

于 2011-08-19T10:51:40.310 回答