2013-09-18 4 views
0

Как остановить фоновый звук из другого приложения?Остановить фоновый звук другого приложения на iOS

Я попытался

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

Are там любые другие решения?

ответ

2

Получил 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

У меня была аналогичная проблема в моем приложении iOS, и она была решена с помощью решения «Bamsworld». Для получения более подробной информации проверьте link.

Решение: Попробуйте это в вас applicationDelegates метод - (BOOL) применение: (UIApplication *) применение 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"); 
} 
+0

к сожалению, из любопытства в обеспечении решения, я дал ссылку. – ArunJTS

0

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil]; решить проблему

+1

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. – Aurril

Смежные вопросы