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的播放