如何从 NSDatePicker 获取音频定时播放?

How to get audio to play at time from NSDatePicker?

我正在制作一个应用程序,它需要在用户使用 NSDatePicker 设置的未来某个时间播放声音,我该怎么做?

我已经有了 AVAudioPlayer 设置,我只需要播放本身的帮助。并请写下如何回答整个问题,而不是把我带到别处。

目的是让用户可以在特定时间使用NSDatePicker并使用我制作并添加到项目中的声音来设置闹钟。然后用户必须自己关闭闹钟而不是自动关闭。所以我打算使用 AVAudioPlayer 和一个关闭按钮来这样做,但我无法超过时间。

简答:你不能那样做。

一个 iPhone 只是部分时间被解锁,而你的应用只是 运行 部分时间。

如果您打算在 phone 唤醒且应用程序仍在前台时让声音在几分钟后播放,您可以这样做。

您只需要从日期选择器中获取 NSDate,使用 NSDate 方法 timeIntervalSinceNow 计算出该日期在未来多少秒,然后开始 NSTimer 谁的选择器播放你的声音。

如果您的应用程序可能被暂停,或者 phone 可能被锁定,您将需要使用本地通知 (UILocalNotification)。该通知只是向用户显示一条消息(可能播放您的应用程序附带的声音。)我想如果您要播放的声音包含在该应用程序中,那么您可以设置本地通知来播放它。

你能告诉我们更多你想做什么吗?

你希望它在未来的任意日期和时间工作吗?您需要播放应用内置的声音吗?

对于短暂的延迟,您可以告诉 AVAudioPlayer 开始播放 现在 但是有延迟,您不使用 NSDate(从 UIDatePicker 返回的值)来做这个。这不是 AVAudioPlayer 对时间的看法。它根据 设备时间.

进行思考

因此,您需要计算出从当前设备时间开始播放的时间。这样,您就可以使用该值调用音频播放器的 playAtTime:。文档中有一个示例:

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/#//apple_ref/occ/instm/AVAudioPlayer/playAtTime:

对于需要开始播放的长时间延迟,例如,明天上午 10 点,您需要创建一个将在该时间触发的 UINotification。这可以包括声音;如果这还不够好,您将不得不希望您的应用程序是 运行(以便您可以收到通知)或者用户在通知出现时点击它(以便您可以听到那) - 否则,正如邓肯所说,你做不到。