1

我需要:

  • 播放声音
  • 环形
  • 继续在后台播放

一切都很好AVAudioPlayer,但现在我必须用它AVPlayer来播放 iPod 库中的音乐歌曲。但是有一个大问题:AVPlayer 没有numberOfLoops像 in 那样的属性AVAudioPlayer

NSNotificationCenter好的,你可以给for注册一个通知AVPlayerItemDidPlayToEndTimeNotification(或者你也可以使用addBoundaryTimeObserverForTimes指定次数等于歌曲时长的方法),在歌曲播放到结束时得到通知。但这仅适用于应用程序在前台,在后台歌曲继续播放,但在结束时停止。

通知也在后台收到(使用 NSLog 检查),但选择器的代码:

AVPlayerItem *playerItem = [notification object];  
[playerItem seekToTime:kCMTimeZero];

...没有效果,歌曲不会循环播放。

有什么建议么?

4

2 回答 2

3

您遇到的问题是播放器执行搜索时间的第二秒,您的应用看起来好像已经完成播放音频,所以它被扔到了篝火上。:)

我花了几天时间创建这个解决方法:

  1. 在 info.plist 中将“应用程序播放音频”添加到“必需的后台模式”

  2. 创建另一个以 0.00000001f 速率 (silentMp3Player.rate=0.0000001f) 播放一秒 mp3 文件的 AVplayer,该文件在您的应用程序进入后台时开始,在重新进入前台时停止。

于 2011-12-18T21:40:28.157 回答
0

尝试添加此代码:

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
于 2018-07-24T08:30:45.433 回答