#iphone #nstimer #countdown #audio
#iPhone #nstimer #обратный отсчет #Аудио
Вопрос:
Я создаю таймер обратного отсчета, который воспроизводит звуковой сигнал для каждого второго отсчета через NSTimer. Приложение должно находиться в режиме ожидания не более 90 минут и воспроизводить повторяющийся звуковой сигнал до тех пор, пока таймер не станет недействительным. В списке я выбрал «Приложение 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>
ps. Я часами читаю темы о фоновом звуке и протестировал почти все, что смог найти, но у меня ничего не получилось. Если кто-нибудь может мне помочь, пожалуйста, имейте в виду, что я очень новичок в программировании. Заранее спасибо.
Ответ №1:
Из опубликованного кода похоже, что вы создаете новый объект AVAudioPlayer каждый раз, когда воспроизводите звук, и не выпускаете его позже. Это приводит к тому, что ваш файл (beep.mp3) остается открытым, и если будет открыто слишком много файлов, у вас закончатся обработчики файлов. Если это так, то вы больше не сможете открывать файлы, что может вызвать тишину, которую вы испытываете.
Если вы выпускаете / повторно используете все правильно, то, вероятно, этого не может быть.
Комментарии:
1. В этом и была проблема! Большое вам спасибо!