如何从NSDatePicker获取音频?

时间:2015-09-21 01:11:19

标签: ios avaudioplayer nsdatepicker

我正在创建一个应用程序,需要在将来使用NSDatePicker设置的某个时间播放声音我该怎么办?

我已经设置了AVAudioPlayer,我只需要玩游戏本身的帮助。请写下如何回答整个问题而不是引导我到其他地方。

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

2 个答案:

答案 0 :(得分:4)

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

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

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

如果您需要开始播放,比如明天上午10点,您需要创建一个将在此时触发的UINotification。这可以包括声音;如果这还不够好,您将不得不希望您的应用程序正在运行(以便您可以收到通知),或者用户在出现通知时点按通知(以便您可以听到那个) - 否则,正如Duncan所说,你不能这样做。

答案 1 :(得分:3)

简短回答:你不能这样做。

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

如果您正在谈论将来几分钟发出声音播放,那么当手机处于唤醒状态时,应用程序仍处于前台,您可以这样做。

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

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

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

您希望将来在任意日期和时间使用吗?您是否需要播放内置于应用中的声音?