iOS5中的MPMoviePlayerController背景音频问题
我有一个应用程序可以执行非常标准的操作: 当应用程序处于1)前台模式、2)屏幕锁定状态、3)后台模式时,它会播放音频(流媒体或文件系统)。 这在iOS5之前的所有iOS中都运行良好 我一直在使用MPMoviePlayerController(因为它可以播放流媒体和本地文件系统音频) 我有以下设置:iOS5中的MPMoviePlayerController背景音频问题,ios5,mpmovieplayercontroller,Ios5,Mpmovieplayercontroller,我有一个应用程序可以执行非常标准的操作: 当应用程序处于1)前台模式、2)屏幕锁定状态、3)后台模式时,它会播放音频(流媒体或文件系统)。 这在iOS5之前的所有iOS中都运行良好 我一直在使用MPMoviePlayerController(因为它可以播放流媒体和本地文件系统音频) 我有以下设置: info.plist的背景模式设置为“音频” 我有音频会话设置,如所示 我启用了后台计时器,在音频播放结束时停止 UIBackgroundTaskIdentifier newId=[[UIAppli
提前谢谢。终于解决了这个问题。这在苹果开发者论坛的帖子中得到了解决(需要登录才能看到)。这篇文章适用于AVPlayer,但也修复了MPMoviePlayerController的问题 基本上,这是那篇文章的摘录: 你的应用程序必须支持远程控制事件!这些是音频 多任务左侧的控制器接口prex/nex/play/pause 切换器任务栏(不确定事物的正确名称)。你 确保您的视图成为第一个控制器,然后调用 在viewDidLoad中。一旦你这样做,你的玩家将不再回来 不
我的情况不同,我在这里(以及在另一个问题中)回答这个问题只是为了帮助未来的搜索者了解这个错误消息。这并不能回答原来的问题 我的应用程序可以播放声音或歌曲,但当我第一次编码时,它可以同时播放。在测试中,我总是用一首歌来测试。我用平常的方式演奏了这首歌:
self.musicQuery = [MPMediaQuery songsQuery];
[_musicQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:selectedSongID forProperty:MPMediaItemPropertyPersistentID comparisonType:MPMediaPredicateComparisonEqualTo]];
[_musicQuery setGroupingType:MPMediaGroupingTitle];
[_myPlayer setQueueWithQuery:_musicQuery];
[_myPlayer play];
几周过去了,我开始测试声音,用AVAudioPlayer播放。我的应用程序开始冻结5秒钟,我会在控制台中收到MediaPlayer:Message playbackState timed out消息
事实证明,传递一个空的查询是导致冻结和消息丢失的原因。将我的应用程序的逻辑更改为仅在有歌曲播放时播放歌曲,修复了此问题。你的问题是我的答案,非常好!非常感谢。
> [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
self.musicQuery = [MPMediaQuery songsQuery];
[_musicQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:selectedSongID forProperty:MPMediaItemPropertyPersistentID comparisonType:MPMediaPredicateComparisonEqualTo]];
[_musicQuery setGroupingType:MPMediaGroupingTitle];
[_myPlayer setQueueWithQuery:_musicQuery];
[_myPlayer play];