iPhone: зацикливание звука прекращается через 4 минуты - PullRequest
0 голосов
/ 13 октября 2011

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

1 голос
/ 13 октября 2011

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

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

...