所以我的应用程序在后台运行,因为 CoreLocation 请求了 AlwaysAuthorization。这可以防止应用程序达到挂起状态。它保持在后台状态并正在接收位置事件。在一些位置事件之后,我想激活 AVAudioSession 并播放一些声音。当我现在在前台使用其他应用程序并且此应用程序正在播放音轨时,如何正确激活 session (在此后台应用程序中)。假设我正在 Youtube 应用中观看一些视频,而我的后台应用现在需要播放音频。在这种情况下,我无法激活 Audio Session 。
在这种情况下我不能使用 AudioToolbox
播放引擎,因为即使打开响铃/静音开关也需要播放这些声音。
我知道我需要使用 AVAudioSessionCategoryPlayback
类别。我也不希望同时播放其他应用,所以我没有使用 MixWithOthers
或 DuckOthers
类别选项。
我已启用 UIBackgroundModes
以在后台播放音频。
当应用程序处于后台并且其他应用程序当前正在播放音频而未启用任何混合选项时,如何激活此类 session 。如何中断当前前台应用程序中的 Audio Session ,以便我的后台应用程序可以激活它以进行播放。播放结束后,我的计划是在后台停用 Audio Session 并通知其他应用他们可以恢复播放。
在 AppDelegate.m
类的 didFinishLaunchingWithOptions
方法中添加以下 3 行,然后再次测试应用程序。如果有任何问题,请告诉我。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
[UIApplication sharedApplication].idleTimerDisabled = YES;
关于ios - 可以在没有 MixWithOthers 的情况下在后台状态下激活 AVAudioSession 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818208/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |