-4

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

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

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

4

2 回答 2

4

对于短暂的延迟,您可以告诉 AVAudioPlayer现在开始播放,但有延迟,您不使用 NSDate(从 UIDatePicker 返回的值)来执行此操作。这不是 AVAudioPlayer 对时间的看法。它考虑设备时间

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

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

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

于 2015-09-21T01:34:29.057 回答
3

简短的回答:你不能那样做。

iPhone 仅在部分时间解锁,而您的应用仅在部分时间运行。

如果您正在谈论在未来几分钟内播放声音,而手机处于唤醒状态,并且应用程序仍处于前台,您可以这样做。

您只需要从日期选择器中获取 NSDate,使用该NSDate方法timeIntervalSinceNow来计算该日期未来的秒数,然后启动NSTimer谁的选择器来播放您的声音。

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

你能告诉我们更多关于你想做的事情吗?

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

于 2015-09-21T01:25:20.327 回答