我们开发中遇到的问题 快捷操作的时候需要播放动效视频,播放视频是无声视频,这个时候其他app(qq音乐)的声音就听不见了.然后就设置
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
设置为混音模式,这样的话播放动效视频不影响qq音乐的声音
但是离开这个页面的时候需要设置为不是混音的状态,但是官方并没有提供这一状态,最后多番尝试,发现
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions:0 error:nil];
这样是可以的.setCategory:AVAudioSessionCategoryAmbient是混音模式,但是options设置为0后混音不能生效,也不会影响其他app的播放 如果设置为AVAudioSessionCategorySoloAmbient九变成当前app独占音频了,其他app不会播放 设置为AVAudioSessionCategoryPlayback的话,发现还是会混音.
在人耳定制音效模块和快捷操作学习模块,需要app去抢占音频,这个时候我们用到了
[[AVAudioSession sharedInstance] setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
category用到了AVAudioSessionCategorySoloAmbient独占,options用到了AVAudioSessionCategoryOptionMixWithOthers.只设置AVAudioSessionCategorySoloAmbient的话会彻底中断其他qq音乐等app的声音,就算setActive设为NO,也恢复不了.最后恢复其他app播放
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
目前遇到的问题是:在快捷操作学习中,因为要无缝循环播放,所以用了两个AVPlayer的方式,导致了以上面方法设置后,别的app会中断,最后恢复不了播放的问题