【问题标题】:How to pause/resume audio when iphone is locked/unlockediphone锁定/解锁时如何暂停/恢复音频
【发布时间】:2010-10-19 00:00:00
【问题描述】:

以下是我的应用中当前发生的情况:

锁定:按下 iPhone 锁定按钮 -> 音频暂停
解锁:按下 iPhoneUnlocked 按钮 -> 音频恢复 -> 滑动解锁 -> 应用出现

我希望解锁顺序是:

解锁:按下 iPhone 解锁按钮 -> 滑动解锁 -> 音频恢复 -> 应用出现

我正在使用 OS 2.2.1 和 AVFoundation Framework,这是我已经尝试过的:

  • 我尝试使用 AppDelegate 的 applicationWillResignActive 和 applicationDidBecomeActive 回调,它不起作用。虽然 applicationDidBecomeActive 在正确的时间被调用(即当用户滑动解锁设备时),但只要按下解锁按钮,音频就会恢复(我猜是因为音频会话),所以我尝试了:

  • 我实现了 AVAudioPlayerDelegate 的 audioPlayerBeginInterruption 和 audioPlayerEndInterruption 选择器,看起来这些方法永远不会被调用(我已经放置了日志调用)。我确定我正确设置了代理,因为音频文件播放完毕后会正确调用 audioPlayerDidFinishPlaying。

P.S:如果不是很明显,我正在设备上进行测试

【问题讨论】:

    标签: ios iphone avfoundation


    【解决方案1】:

    它们显然只在音频会话被中断时被调用,也就是说,如果您正在播放音频并且它被其他请求活动会话的音频中断。 简而言之:当电话处于非活动状态时,他们不会被呼叫,但是当您接到电话时,他们会被呼叫。 但即便如此,他们也只有在 AVAudioplayer 当时处于活动状态时才会被调用。 我还在和那个糟糕的系统搏斗……

    【讨论】:

    • 我最终停止尝试实现这一目标,因为没有直接/好的方法来做到这一点。
    【解决方案2】:

    轻微滥用系统,但您可以观察文件保护通知以了解设备何时解锁。您可以使用它来决定何时再次播放音频。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多