iPhone: зацикливание звука останавливается через 4 минуты

Я делаю таймер обратного отсчета, который воспроизводит звуковой сигнал для каждой секунды, считая через NSTimer. Приложение должно находиться в активном состоянии не более 90 минут и воспроизводить повторяющийся звуковой сигнал до тех пор, пока таймер не будет отключен. В plist я выбрал «Приложение UIbackground Modes воспроизводит звук», а также добавил в файл 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. Я часами читаю темы о фоновом звуке и тестирую почти все, что могу найти, но у меня ничего не работает. Если кто-то может мне помочь, пожалуйста, имейте в виду, что я очень новичок в программировании. Заранее спасибо.


person Pantelis Proios    schedule 13.10.2011    source источник


Ответы (1)


Из опубликованного кода видно, что вы создаете новый объект AVAudioPlayer каждый раз, когда воспроизводите звук, и не выпускаете его позже. Это приводит к тому, что ваш файл (beep.mp3) остается открытым, и если открыто слишком много файлов, у вас закончатся обработчики файлов. Если это так, то вы больше не сможете открывать файлы, что может вызвать тишину, которую вы испытываете.

Если вы выпускаете/повторно используете все правильно, то, вероятно, это не так.

person mikabast    schedule 13.10.2011
comment
Вот в чем проблема! Большое тебе спасибо! - person Pantelis Proios; 13.10.2011