objective-c - 从 iOS 应用程序内控制非 iPod 音乐播放器(例如 Spotify)

标签 objective-c ios avaudioplayer

在我的应用程序中,我需要在播放自己的声音时暂停并重新启动背景音乐。

iPod 的方法是使用:

[[MPMusicPlayerController iPodMusicPlayer] pause];

和:

[[MPMusicPlayerController iPodMusicPlayer] play];

对于非 iPod 应用程序,这没有影响。

第二次尝试是启用闪避:

    UInt32 property = sender.on;
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(property),&property);
    AudioSessionSetActive(property);

也适用于 iPod 音乐播放器,但不适用于 Spotify。

设置kAudioSessionCategory_SoloAmbientSound确实会停止所有音乐,但不会重新启动它。

最佳答案

控制这一点的方法是使用 AVAudioSessionsetActive 方法。

当您想要播放声音时,请将 session 设置为事件状态:

[[AVAudioSession sharedInstance] setActive:YES error:nil];

当您停止玩游戏时,请将您的 session 设置为非事件状态,但也使用标记来通知其他人。此标志应导致其他应用程序重新启动(应适用于 iPod 和其他应用程序)。对于带有 AVAudioSession 的 iOS6+,您可以这样做:

[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersonDeactivation error:nil];

iOS 6 之前的版本:

 [[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation error:nil];

关于objective-c - 从 iOS 应用程序内控制非 iPod 音乐播放器(例如 Spotify),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173056/

相关文章:

objective-c - 取消引用寄存器 (%r11) 时在 objc_msgSend 中崩溃,但我不明白为什么

ios - 导航栏底部的自定义 View

objective-c - 使应用程序的更新版本与其以前的版本兼容

ios 内置 UIBarButtonSystemItem 图像

ios - 在 TableView 中从底部添加新数据

ios - 在 iOS 上读取文档存储 ("Store documents & data on") 设置的值

ios - 从 float 组播放音频 iOS Swift

ios - Xcode 5 "error: can' t exec 'codesign'(没有这样的文件或目录)”

iphone - 在后台启动 AVQueuePlayer

ios - 如何在 iOS swift 中将 .opus 文件转换为 .mp3/.m4a/.aac?