Воспроизведение mp3 на iPhone в фоновом режиме - AudioQueue: Ошибка - PullRequest
3 голосов
/ 17 февраля 2011

Привет. Я занимаюсь разработкой приложения, которое воспроизводит другую буферизованную mp3 в цикле 5 минут.Когда приложение работает на переднем плане или в режиме ожидания iphone, оно воспроизводится нормально, но когда я пытаюсь в фоновом режиме, но оно выдает мне эту ошибку:

Чт 17 февраля 00:05:06 unknown mediaserverd [2303]: 00: 05: 06.158 AudioQueue: ошибка -12985 от AudioSessionSetClientPlayState (3582) четверг 17 февраля 00:05:06 unknown mediaserverd [2303]: 00: 05: 06.167 AudioQueue: ошибка -12985 от AudioSessionSetClientPlayState (3582)

Большеинформация: когда я играю буферизованный mp3 (первый раз) в цикле, он хорошо играет на заднем плане.Я также пытаюсь сохранить буферизованные данные mp3 в файл mp3, а затем воспроизвести, но это та же проблема.Я искал эту ошибку, но не нашел соответствующей информации.

Заранее спасибо.

Там (я думаю) соответствующий код:

-(void) prepareAudio {
    // Registers this class as the delegate of the audio session.
    [[AVAudioSession sharedInstance] setDelegate: self];

    // The AmbientSound category allows application audio to mix with Media Player
    // audio. The category also indicates that application audio should stop playing 
    // if the Ring/Siilent switch is set to "silent" or the screen locks.
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

    // Use this code instead to allow the app sound to continue to play when the screen is locked.
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];

    UInt32 doSetProperty = 0;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers,
                             sizeof (doSetProperty),
                             &doSetProperty
                             );

    /*UInt32 category = kAudioSessionCategory_AmbientSound;
    OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
    */
    // Activates the audio session.

    NSError *activationError = nil;
    [[AVAudioSession sharedInstance] setActive: YES error: &activationError];
}


- (void)finishedReceivingData:(NSData *)data {  
    if(data == nil) {
        NSLog(@"cdata nil");
        return;
    }
    if (player != nil) {
        [player release];
        player = nil;
    }

    player = [[AVAudioPlayer alloc] initWithData:data error: nil];
    [player setVolume:0.1];     
    [player play];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...