如何停止其他应用的背景音频?
我试过了
NSError *error;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options
和- (void)applicationWillEnterForeground:(UIApplication *) application
中但不起作用。
我的应用使用The Amazing Audio Engine播放音频,但本身不需要背景音频,所以我不想在info.plist中将“audio”键添加到“Required Device Capabilities”
还有其他解决方案吗?
答案 0 :(得分:4)
在论坛上点了answer from Michael Tyson of The Amazing Audio Engine。
UInt32 allowMixing = NO;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (allowMixing), &allowMixing);
或者如果你正在使用The Amazing Audio Engine:
audioController.allowMixingWithOtherApps = NO;
(默认情况下,这应该设置为NO,具体取决于你使用的是哪个音频会话,但是这不是The Amazing Audio Engine的情况)
答案 1 :(得分:1)
我在iOS应用程序中遇到了类似的问题,并通过'Bamsworld的解决方案解决了这个问题。查看link以获取详细信息。
解决方案: 在你的appDelegate中试试这个:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// set audio session category AVAudioSessionCategoryPlayAndRecord with no options
success = [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error:nil];
if (!success) {
NSLog(@"setCategoryError");
}
// set audio session mode to default
success = [[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:nil];
if (!success) {
NSLog(@"setModeError");
}
// activate audio session
success = [[AVAudioSession sharedInstance] setActive:YES error:nil];
if (!success) {
NSLog(@"activationError");
}
// ... etc.
}
答案 2 :(得分:1)
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];
解决问题