diff options
Diffstat (limited to 'platform/ios')
| -rw-r--r-- | platform/ios/app_delegate.mm | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/platform/ios/app_delegate.mm b/platform/ios/app_delegate.mm index 38846e7508..8a16f8fcc1 100644 --- a/platform/ios/app_delegate.mm +++ b/platform/ios/app_delegate.mm @@ -51,6 +51,15 @@ extern void ios_finish(); @implementation AppDelegate +enum { + SESSION_CATEGORY_AMBIENT, + SESSION_CATEGORY_MULTI_ROUTE, + SESSION_CATEGORY_PLAY_AND_RECORD, + SESSION_CATEGORY_PLAYBACK, + SESSION_CATEGORY_RECORD, + SESSION_CATEGORY_SOLO_AMBIENT +}; + static ViewController *mainViewController = nil; + (ViewController *)viewController { @@ -92,8 +101,28 @@ static ViewController *mainViewController = nil; mainViewController = viewController; - // prevent to stop music in another background app - [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; + int sessionCategorySetting = GLOBAL_GET("audio/general/ios/session_category"); + + // Initialize with default Ambient category. + AVAudioSessionCategory category = AVAudioSessionCategoryAmbient; + + if (sessionCategorySetting == SESSION_CATEGORY_MULTI_ROUTE) { + category = AVAudioSessionCategoryMultiRoute; + } else if (sessionCategorySetting == SESSION_CATEGORY_PLAY_AND_RECORD) { + category = AVAudioSessionCategoryPlayAndRecord; + } else if (sessionCategorySetting == SESSION_CATEGORY_PLAYBACK) { + category = AVAudioSessionCategoryPlayback; + } else if (sessionCategorySetting == SESSION_CATEGORY_RECORD) { + category = AVAudioSessionCategoryRecord; + } else if (sessionCategorySetting == SESSION_CATEGORY_SOLO_AMBIENT) { + category = AVAudioSessionCategorySoloAmbient; + } + + if (GLOBAL_GET("audio/general/ios/mix_with_others")) { + [[AVAudioSession sharedInstance] setCategory:category withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; + } else { + [[AVAudioSession sharedInstance] setCategory:category error:nil]; + } return YES; } |
