iPhone - AVAudioPlayer、kAudioSessionCategory_AmbientSound 和 iPod 音乐

Posted

技术标签:

【中文标题】iPhone - AVAudioPlayer、kAudioSessionCategory_AmbientSound 和 iPod 音乐【英文标题】:iPhone - AVAudioPlayer, kAudioSessionCategory_AmbientSound and iPod music 【发布时间】:2009-05-16 08:47:15 【问题描述】:

我在我的应用委托中使用以下音频会话:

AudiosessionInitialize(NULL, NULL, NULL, self); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); AudioSessionSetActive(true);

我希望用户能够在播放 iPod 音乐的同时使用我的应用程序,这很棒而且运行良好……我的应用程序退出并允许播放 iPod 音乐。

我遇到的问题是......在用户退出我的应用程序,进入 iPod 应用程序并暂停后,当他们回到我的应用程序时,我的声音都不起作用。就好像它仍然认为 iPod 会话处于活动状态,即使它没有播放任何音乐!

我基本上只是想在 iPod 音乐暂停后重新激活我的音频会话。就目前而言,在我曾经通过 iPod 应用播放音乐之后,除非我重新编译,否则我完全无法恢复我的应用的声音。 :( 有人有什么想法吗?

编辑:我忘了提到我正在使用 AVAudioPlayer 类的基本实现来播放我的应用程序的音频。

谢谢!

【问题讨论】:

【参考方案1】:

好吧,我只是想我会让每个人都发布信息,以防它帮助其他人......我所做的可能有点老套,但似乎可以解决问题!

UInt32 正在播放; UInt32 propertySize = sizeof(isPlaying); OSStatus 状态; // 检查他们的 iPod 音乐是否正在播放 状态 = AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &isPlaying); // 相应地设置会话类别 如果(!正在播放) NSLog(@"...SoloAmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 别的 NSLog(@"...AmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

【讨论】:

刚才我碰巧找到了这个官方的苹果视频剪辑,它描述了我正在做的一模一样的事情!很高兴知道! developer.apple.com/videos/iphone/#video-advanced-audiodev

以上是关于iPhone - AVAudioPlayer、kAudioSessionCategory_AmbientSound 和 iPod 音乐的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:MPMusicPlayerController 停止 AVAudioPlayer

iPhone SDK:使用核心音频 AVAudioPlayer 更改播放速度

同步Iphone中两个或多个AVAudioPlayer的播放

AVAudioPlayer 在我的 iPhone 上播放短音?

iphone-AVAudioPlayer 重叠

(iphone) 如何使用 AVAudioPlayer 顺序播放声音?