AVAudioPlayer关闭iPod - 如何解决?

And*_*son 7 iphone cocoa-touch objective-c

我使用AVAudioPlayer在我的应用程序中播放声音,但是当声音播放时它会关闭iPod.

有办法防止这种情况吗?我不想使用System Sounds,因为我无法控制它们的音量.

谢谢你的帮助.

con*_*are 15

这应该对你有用(取自我的Ambiance应用程序)

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty);
[[AVAudioSession sharedInstance] setActive: YES error: nil];
Run Code Online (Sandbox Code Playgroud)

来自文档:

kAudioSessionProperty_OverrideCategoryMixWithOthers更改kAudioSessionCategory_MediaPlayback和kAudioSessionCategory_PlayAndRecord音频会话类别的混合行为.将此属性设置为TRUE(任何非零值)允许将iPod音频与应用程序音频混合.这些类别的其他方面(例如其振铃/静音开关行为)不受影响.

默认情况下,此属性的值为FALSE(0).当音频会话类别更改时(例如在中断期间),此属性的值将恢复为FALSE.要重新获得混合行为,您必须重新设置此属性.

始终检查设置此属性是成功还是失败,并做出适当的反应; 在未来的iPhone OS版本中,行为可能会发生变化.

适用于iPhone OS 3.0及更高版本.

在AudioServices.h中声明.

  • 巨大!谢谢!对于像我这样的其他初学者:为了实现此链接,您需要执行#import <AudioToolbox/AudioServices.h>并链接AudioToolbox框架.有关如何在XCode 4.2中执行此操作的帮助,请查看此处:http://stackoverflow.com/questions/3352664/how-to-add-existing-frameworks-in-xcode-4 (2认同)