我正在制作一个倒数计时器,通过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。我正在阅读有关背景音频的几个小时主题,并测试了几乎我能找到的所有内容,但没有任何对我有用如果有人可以帮助我,请记住我对编程很新。提前谢谢。
答案 0 :(得分:1)
从发布的代码中,您似乎每次播放声音时都会创建一个新的AVAudioPlayer对象,以后不再发布。这会导致您的文件(beep.mp3)保持打开状态,如果打开的文件太多,您将耗尽文件处理程序。如果是这种情况,那么你就无法再打开任何文件,这会导致你遇到的沉默。
如果您正确释放/重复使用所有内容,那么情况可能并非如此。