iPhone:4小时后循环音频停止

时间:2011-10-13 10:30:56

标签: iphone nstimer countdown audio

我正在制作一个倒数计时器,通过NSTimer每秒计数一次“嘟嘟”声。应用程序必须唤醒最长90分钟并播放重复的哔声,直到计时器失效。从plist我选择“UIbackground Modes App播放音频”并添加到delegate.m [UIApplication sharedApplication].idleTimerDisabled = YES;以便将我的计时器保持在屏幕上。问题是4分钟后重复声音停止。其他一切正常,应用程序似乎清醒,标签显示倒计时更新本身。要恢复音频,您必须退出并重新启动应用程序。 问题出现在模拟器和设备(iPhone 3G)中。 如果重要的话,我正在使用xcode 4。 这是我的代码:

NSString *path = [[NSBundle mainBundle]
                   pathForResource:@"beep" ofType:@"mp3"];
 AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];
 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
 UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];
 [[UIApplication sharedApplication] endBackgroundTask:bgTask];
 [audioPlayer play];

当然,我已经导入了库

#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>

P.S。我正在阅读有关背景音频的几个小时主题,并测试了几乎我能找到的所有内容,但没有任何对我有用如果有人可以帮助我,请记住我对编程很新。提前谢谢。

1 个答案:

答案 0 :(得分:1)

从发布的代码中,您似乎每次播放声音时都会创建一个新的AVAudioPlayer对象,以后不再发布。这会导致您的文件(beep.mp3)保持打开状态,如果打开的文件太多,您将耗尽文件处理程序。如果是这种情况,那么你就无法再打开任何文件,这会导致你遇到的沉默。

如果您正确释放/重复使用所有内容,那么情况可能并非如此。