1

如何停止来自另一个应用程序的背景音频?

我努力了

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 中的“所需设备功能”

还有其他解决方案吗?

4

3 回答 3

4

在他的论坛上从 The Amazing Audio Engine 的 Michael Tyson 那里得到了答案。

UInt32 allowMixing = NO;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (allowMixing), &allowMixing);

或者如果您使用的是 The Amazing Audio Engine:
audioController.allowMixingWithOtherApps = NO;

(根据您使用的音频会话,默认情况下似乎应该将其设置为 NO,但 The Amazing Audio Engine 并非如此)

于 2014-01-08T19:56:55.330 回答
2

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];解决这个问题

于 2017-07-27T08:38:27.500 回答
1

我在我的 iOS 应用程序中遇到了类似的问题,并通过“Bamsworld 的解决方案”解决了这个问题。检查链接以获取详细信息。

解决方案:在你的 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.
}
于 2013-12-30T06:25:59.777 回答