我正在制作一个应用程序,该应用程序需要在未来由用户使用NSDatePicker
设置的时间播放声音,我该如何做到这一点?
我已经有了AVAudioPlayer
设置,我只需要帮助自己玩。请写下如何做,以回答整个问题,而不是把我引向别处。
目的是获得一个警报,可以由用户在特定时间设置使用NSDatePicker
和使用我已经制作并添加到项目的声音。然后,用户必须自己关闭警报,而不是自动关闭。所以我打算使用AVAudioPlayer
和一个关闭按钮来这样做,但是我无法通过计时。
对于一个短暂的延迟,你可以告诉AVAudioPlayer现在开始播放但是有延迟,你不使用NSDate(从UIDatePicker返回的值)来做这件事。这不是AVAudioPlayer考虑时间的方式。它根据设备时间进行思考。
所以,你需要算出播放应该从当前设备时间开始多长时间。这样,您就可以使用该值调用音频播放器的playAtTime:
。文档中有一个例子:
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference///apple_ref/occ/instm/AVAudioPlayer/playAtTime:
对于一个很长的延迟,你需要开始播放,比如说,明天上午10点,你需要创建一个将在那个时候触发的uninotification。这可以包括一个声音;如果这还不够好,你必须希望你的应用程序正在运行(这样你就可以接收通知),或者用户在通知出现时点击通知(这样你就可以听到通知)-否则,正如Duncan所说,你不能这样做。
简短的回答:你不能那样做。
iPhone只是部分时间处于解锁状态,你的应用也只是部分时间在运行。
如果你想让声音在未来几分钟播放,而手机是醒着的,应用程序仍然在前台,你可以这样做。
你只需要从日期选择器中取出NSDate,使用NSDate
方法timeIntervalSinceNow
来计算未来日期是多少秒,然后启动一个NSTimer
,它的选择器播放你的声音。
如果你的应用可能被挂起,或者手机可能被锁定,你需要使用本地通知(UILocalNotification)。通知只是向用户显示一条消息(可能是播放应用自带的声音)。我猜如果你想播放的声音包含在应用中,那么你可以设置本地通知来播放它。
你能告诉我们你想做什么吗?
你想让它在未来任意的日期和时间工作吗?你是否需要播放应用程序内置的声音?