我在我的app delegate中使用以下音频会话:
AudioSessionInitialize(NULL, NULL, NULL, self); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); AudioSessionSetActive(true);
我希望用户能够播放iPod音乐并同时使用我的应用程序,这很棒且工作正常...我的应用程序退出并允许iPod音乐播放。
我遇到的问题是...在用户退出我的应用程序后,进入iPod应用程序并暂停,当他们回到我的应用程序时,我的声音都没有用。就像它仍然认为iPod会话是活跃的,即使它没有播放任何音乐!
我基本上只想在iPod音乐暂停后重新激活我的音频会话。就目前而言,在我曾经通过iPod应用程序播放音乐之后,除非我重新编译,否则我完全无法恢复应用程序的声音。 :(任何人都有任何想法?
编辑:我忘了提到我正在使用AVAudioPlayer类的基本实现来播放应用程序的音频。
谢谢!
答案 0 :(得分:7)
好吧,我以为我会把所有人都贴出去,以防它帮助其他人......我所做的可能有点像个hackish,但似乎有所作为!
UInt32 isPlaying; UInt32 propertySize = sizeof(isPlaying); OSStatus status; // check to see if their iPod music is playing status = AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &isPlaying); // set the session category accordingly if(!isPlaying) { NSLog(@"...SoloAmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); }else{ NSLog(@"...AmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); }