AudioQueueStart отправка сообщения, чтобы убить mediaserverd

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

AudioQueueStart отправка сообщения, чтобы убить mediaserverd

Вот соответствующий код:

-(IBAction)playNoteFromKeyTouch:(id) sender{

    [NSThread detachNewThreadSelector:@selector(playNote:) toTarget:self withObject:[NSString stringWithFormat:@"Piano.mf.%@",[sender currentTitle]]];

}

-(void)playNote:(NSString *) note{
    NSError *err;
    NSString *path = [[NSBundle mainBundle] pathForResource:note ofType:@"aiff"];
    AVAudioPlayer *p = [[AVAudioPlayer alloc ] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&err];
    p.delegate = self;
    if (err) {
        NSLog(@"%@", err);
    }else{
        [p prepareToPlay];
        [p play];
    }
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [player release];
}

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

3 ответа

Решение

Я "решил" проблему, используя SoundBankPlayer вместо AVAudioPlayer. Информация о SoundBanker.

Я страдаю от аналогичной проблемы.

Я потратил целую вечность, пытаясь решить проблему, и я думаю, что моя конкретная проблема имеет место, когда:

  1. Я нахожусь в АудиоКатегории, которая не позволяет воспроизводить звук, когда выключен звук.
  2. Я начинаю воспроизводить звук (на самом деле я не делаю этого в приложении, но именно так я могу надежно воспроизводить).
  3. Со звуком, который все еще воспроизводится, я переключаюсь на другую категорию AudioCategory, которая не позволяет воспроизводить звук при включенном выключении звука.

С этого момента я получаю "отправку сообщения об уничтожении медиа-сервера" из того, что выглядит как различные точки в вызовах в AudioSession API. Приложение зависает, устройство зависает, и я изо всех сил пытаюсь вернуть устройство в нормальное рабочее состояние.

Согласно этому сообщению это выключатель звука устройства.

Оказывается, отключение iPad через физический переключатель устройства вызывало проблемы с моим приложением. Пока кнопка не включена, проблема не возникает.

Sheesh. Как программно переопределить?

Другие вопросы по тегам