如何让audio播放在NSDatePicker的时间?
我正在做一个应用程序,需要一个声音在未来由用户使用NSDatePicker
设置,我怎么会这样做呢?
我已经有了AVAudioPlayer
设置,我只需要帮助自己玩。 请写下如何解决整个问题,而不是引导我到别处。
其目的是获得一个警报,可以由用户在特定的时间使用NSDatePicker
并使用我已经做出并添加到项目中的声音。 然后,用户不得不closures闹钟而不是自动closures。 所以我打算使用AVAudioPlayer
和一个closuresbutton来实现,但是我无法超越时间。
简短的回答:你不能那样做。
iPhone只是部分时间解锁,而您的应用只能运行部分时间。
如果你正在谈论未来几分钟的声音播放,而电话是清醒的,而应用程序仍在前台,你可以做的。
您只需要从date选取器中获取NSDate
,使用NSDate
方法timeIntervalSinceNow
来计算将来该date的秒数,然后启动一个NSTimer
,它的select器播放您的声音。
如果您的应用可能被暂停,或手机可能被locking,则需要使用本地通知(UILocalNotification)。 通知只是向用户显示一条消息(可能播放与您的应用程序一起发送的声音)。我想如果您想播放的声音包含在应用程序中,那么您可以设置您的本地通知来播放它。
你能告诉我们更多关于你想做什么的吗?
你希望这个在任何date和时间在未来工作吗? 你需要播放内置于你的应用程序中的声音吗?
对于一个短暂的延迟,你可以告诉AVAudioPlayer 现在开始播放,但延迟,你不使用NSDate(从UIDatePicker返回的值)来做到这一点。 这不是AVAudioPlayer如何考虑时间。 它根据设备时间来考虑 。
所以,你需要从当前设备播放多长时间开始播放。 这样,您可以调用audio播放器的playAtTime:
与该值。 文档中有一个例子:
如果要延迟很长时间,那么你需要开始播放,比如说,明天早上10点,你需要创build一个在那个时候会触发的UINotification。 这可以包括一个声音; 如果这还不够好,你将不得不希望你的应用程序正在运行(这样你可以收到通知),或者当用户看到通知时点击通知(这样你就可以听到) – 否则正如邓肯所说,你做不到。