звук и Nstimer остановился, когда iphone находится в режиме ожидания? - PullRequest
2 голосов
/ 17 ноября 2009

Я создаю приложение, в котором я использую nstimer и avaudioplayer для воспроизведения звука, но звук и таймер останавливаются, когда телефон находится в режиме глубокого сна. Как решить эту проблему?

вот код для воспроизведения звука

-(void)PlayTickTickSound:(NSString*)SoundFileName
{
//Get the filename of the sound file:
NSString *path = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] resourcePath],[NSString stringWithFormat:@"/%@",SoundFileName]];// @"/Tick.mp3"];
//Get a URL for the sound file
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
NSError *error;
if(self.TickPlayer==nil)
{
    self.TickPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:filePath error:&error];
    // handle errors here.
    self.TickPlayer.delegate=self;
    [self.TickPlayer setNumberOfLoops:-1];  // repeat forever
    [self.TickPlayer play];
}
else
{
    [self.TickPlayer play];
}
}

1 Ответ

4 голосов
/ 20 ноября 2009

Чтобы приложение не переходило в спящий режим при заблокированном экране, необходимо установить для аудио-сеанса тип kAudioSessionCategory_MediaPlayback.

Вот пример:

UInt32 category = kAudioSessionCategory_MediaPlayback;
OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                                        sizeof(category), &category);

if (result){
    DebugLog(@"ERROR SETTING AUDIO CATEGORY!\n");
}

result = AudioSessionSetActive(true);
if (result) {
    DebugLog(@"ERROR SETTING AUDIO SESSION ACTIVE!\n");
}

Если вы не установите категорию аудио-сеанса, ваше приложение будет спать.

Это будет только препятствовать тому, чтобы приложение было переведено в спящий режим, пока вы продолжаете воспроизводить аудио. Если вы прекратите воспроизведение звука, а экран все еще заблокирован, приложение перейдет в спящий режим, а ваши таймеры будут приостановлены.

Если вы хотите, чтобы приложение оставалось активным на неопределенный срок, вам необходимо воспроизвести «тихий» аудиофайл, чтобы он не спал.

У меня есть пример кода здесь: Предотвращение сна iPhone

...