我有一个可以播放视频的应用程序,并希望实现以下功能。
我遇到的问题是,在关闭音频混合后再打开,不会通知其他应用程序可以恢复播放音频。我真的非常希望有这种行为。这是否有可能呢?
似乎唯一通知其他应用可以恢复的方法是将我的应用程序的音频会话设置为“非活动”。不幸的是,当视频正在播放时这样做会在控制台上输出一个警告,说我应该在停止播放声音之前停用音频会话。这也导致了基本上破坏了AVPlayer的效果,因为它无法再播放任何音频。
有人知道如何解决这些问题吗?任何解决方案都将受到欢迎,包括那些相当复杂或使用私有API的解决方案。
当视频首次出现在屏幕上并开始播放时,其音频应与其他可能已经在播放的应用程序的音频混合。例如,如果用户正在听Spotify,则应同时听到Spotify和播放视频的音频。
如果用户点击特定按钮,则应静音其他应用程序的音频,只播放视频的音频。
如果用户再次点击按钮,则其他应用程序的音频应恢复,视频的音频和其他应用程序的音频应再次混合。
基本上,我想能够在我的应用程序中切换音频模式,分别为“混合”和“非混合”。
以下是一些代码,展示了我如何修改AVAudioSession
以尝试获得此功能。
打开混合模式
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryAmbient
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:nil];
[session setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
关闭混合模式
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback
withOptions:0
error:nil];
[session setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
我遇到的问题是,在关闭音频混合后再打开,不会通知其他应用程序可以恢复播放音频。我真的非常希望有这种行为。这是否有可能呢?
似乎唯一通知其他应用可以恢复的方法是将我的应用程序的音频会话设置为“非活动”。不幸的是,当视频正在播放时这样做会在控制台上输出一个警告,说我应该在停止播放声音之前停用音频会话。这也导致了基本上破坏了AVPlayer的效果,因为它无法再播放任何音频。
有人知道如何解决这些问题吗?任何解决方案都将受到欢迎,包括那些相当复杂或使用私有API的解决方案。