【问题标题】:How do I detect if other apps are playing background audio?如何检测其他应用程序是否正在播放背景音频?
【发布时间】:2010-06-30 19:10:07
【问题描述】:

我正在为 iphone/ipad 制作游戏,并且不希望我的背景音乐干扰用户可能已经在播放的音乐。

我知道我可以使用 MPPlayerController 获取 iPod 应用程序的状态,但我的应用程序如何判断其他东西(例如 Pandora)是否在 iOS4 上播放背景音频?

【问题讨论】:

    标签: iphone objective-c audio background


    【解决方案1】:

    我终于想通了。我见过很多例子,但始终无法让它们发挥作用。

    那里的大多数示例都没有指出:

        UInt32   propertySize, audioIsAlreadyPlaying;
    
    propertySize = sizeof(UInt32);
    AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying);
    

    要工作,添加到您的应用程序的适当框架是 AudioToolbox。我一直在尝试添加其他音频框架,但总是错过那个。

    一旦您添加了该框架(并将其导入相关代码文件),只需测试一下 audioIsAlreadyPlaying 是零还是一。

    【讨论】:

    • 请注意,您必须在拨打此电话之前初始化您的音频会话,否则您可能会得到误报。这是一个常见的问题(或者至少我在论坛或对话中看到很多人遇到这个问题)
    • 添加 [AVAudioSession sharedInstance];在顶部
    • AudioSessionGetProperty 在 iOS 7 中已被弃用。还有其他选择吗?
    【解决方案2】:

    AudioSessionGetProperty(如 gotung 的回答中所述)自 iOS 7 起已弃用。

    试试这个使用isOtherAudioPlaying的单行:

    BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];
    

    适用于 iOS 6+。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多