在iOS上停止其他应用的背景音频

时间:2013-09-18 04:27:56

标签: ios audio background

如何停止其他应用的背景音频?

我试过了

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”

还有其他解决方案吗?

3 个答案:

答案 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];解决问题