Привет. Я занимаюсь разработкой приложения, которое воспроизводит другую буферизованную 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];
}