标签应用的全球音频播放器

时间:2013-09-02 06:36:59

标签: ios objective-c audio background mpmovieplayer

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

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

我需要的是能够启动音轨,当我点击“完成”它不应该停止。此外,应该有一种方法可以回到玩家。

我的想法是使用集成播放器制作类似“全局视图”的内容,应用中的所有其他视图都应使用此全局视图播放所选音频。

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

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

但我认为我在这里错了。我想要实现的是在播放器中播放音频,在播放器中单击“完成”时保持在后台。并且应该从每个视图到达此播放器(例如,通过每个标签栏视图中的UIButton) - 就像大多数广播应用和音乐应用一样。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

  

      
  • Root View Controller

         
        

          
    • 标签栏控制器

               
            

              
      • 您的视图控制器就在这里
      •       
      • “正在播放”视图控制器
      •       
    •       
  •       

    
  

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

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

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