我在我的应用程序委托(delegate)中使用以下音频 session :

AudioSessionInitialize(NULL,NULL,NULL,self);
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory),&sessionCategory);

AudioSessionSetActive(true);

我希望用户能够同时播放iPod音乐并使用我的应用程序,这很棒,而且效果很好...我的应用程序可以退出并允许iPod音乐播放。

我遇到的问题是...当用户退出我的应用程序,进入iPod应用程序并暂停时,当他们返回我的应用程序时,我的所有声音都无法正常工作。好像它仍然认为iPod session 处于 Activity 状态,即使它没有播放任何音乐也是如此!

基本上,我只是想在iPod音乐暂停后重新激活音频 session 。就目前而言,在我通过iPod应用程序播放音乐之后,除非重新编译,否则我将完全无法恢复应用程序的声音。 :( 谁有想法?

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

谢谢!

最佳答案

好吧,只是以为我会把每个人都贴出来,以防别人帮忙……我的所作所为可能有点骇人听闻,但似乎可以解决!

UInt32 isPlaying;
UInt32 propertySize = sizeof(isPlaying);
OSStatus状态;

//检查是否正在播放iPod音乐
状态= AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying,&propertySize,&isPlaying);

//相应地设置 session 类别
if(!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);
}

关于iphone - iPhone-AVAudioPlayer,kAudioSessionCategory_AmbientSound和iPod音乐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/872001/

10-13 03:49