0

经过几天的研究,我得出的结论是,除了直接在这里问之外别无他法。

我有一个选项卡式应用程序,里面有几个 UITableViewControllers。当我单击这些 TableViewController 之一中的单元格时,应该会播放一些音频流。到目前为止,这是使用 MPMoviePlayerViewController 工作的。但是当我在播放器中单击“完成”时,音频停止播放。

我需要的是能够启动音轨,当我单击“完成”时它不应该停止。此外,应该有办法回到玩家身边。

我在想的是使用集成播放器制作类似“全局视图”的东西,应用程序中的所有其他视图都应该使用这个全局视图来播放选定的音频。

所以,我创建了一个 UIView,它有一个方法 playAudio,它开始在 MPMoviePlayerViewController 中播放。但是从另一个角度去这个观点的方法是什么。现在我只是直接调用这个方法,在此之前我添加了

[self.navigationController pushViewController:mediaPlayer animated:YES];

但我认为我在这里走错路了。我想要实现的是在播放器中播放音频,当点击播放器中的“完成”时,它会留在后台。并且应该从每个视图中访问该播放器(例如,通过每个标签栏视图中的 UIButton)——就像大多数广播应用程序和音乐应用程序一样。

将不胜感激任何帮助。

4

2 回答 2

0

为此,您不应使用MPMoviePlayerViewController. 您可以使用视图和控件创建自己的音频播放器,或使用第三方库(在 Google 上搜索有很多)。祝你好运!

于 2013-09-02T06:47:15.413 回答
0

您不应该使用MPMoviePlayerViewController它来播放音频,因为它是为播放电影而设计的。我建议使用AVPlayer播放音频(如果您只关心本地音频并且您不是从 Internet 流式传输,AVAudioPlayer也可以。)

当您使用 AVPlayer 播放音频时,即使您的应用程序进入后台,它也会继续播放。

您的应用程序的视图层次结构应如下所示:

  • 根视图控制器

    • 标签栏控制器

      • 你的视图控制器放在这里
      • 一个“正在播放”的视图控制器

“正在播放”的视图控制器将是一个视图控制器,您可以放置​​音频控件并向用户显示正在播放的内容。您可以将正在播放的视图控制器设置为应用程序委托或根视图控制器中的属性,以便您可以轻松访问它。例如:

id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];
[self.navigationController presentViewController:appDelegate.nowPlayingViewController animated:YES completion:nil];

您可以将此代码添加到任何需要显示“正在播放”屏幕的视图控制器的按钮中。

于 2013-09-02T06:48:03.383 回答