У меня есть серия аудиофайлов, которые я хочу воспроизвести по очереди.Я настраиваю метод делегата audioPlayerDidFinishPlaying, чтобы запустить следующий файл в последовательности.Это работает без проблем, если я отключаю блокировку экрана или запускаю ее на эмуляторе или на устройстве iOS4.Однако, когда я запускаю его на отключенном устройстве iOS5, экран заблокирован, он останавливается после первой дорожки.Есть ли какой-нибудь способ запустить новую звуковую дорожку после включения блокировки экрана?
Вот мой основной код
// Registers this class as the delegate of the audio session.
[[AVAudioSession sharedInstance] setDelegate: self];
// 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
);
// Registers the audio route change listener callback function
AudioSessionAddPropertyListener (
kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,
self
);
// Activates the audio session.
NSError *activationError = nil;
[[AVAudioSession sharedInstance] setActive: YES error: &activationError];
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"m4a"];
float vol = [appSoundPlayer volume];
AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
self.appSoundPlayer = newAudio; // automatically retain audio and dealloc old file if new file is loaded
[newAudio release]; // release the audio safely
appSoundPlayer.delegate = self;
[appSoundPlayer prepareToPlay];
[appSoundPlayer setNumberOfLoops:0];
[appSoundPlayer play];
[appSoundPlayer setVolume:vol];
[progTime setProgress:0];
}
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) lappSoundPlayer successfully: (BOOL) flag {
//... code here to select nex sound track
[lappSoundPlayer play];
}
Я уже сделал его, поэтому приложение продолжает воспроизводитьтекущий трек, даже когда включается блокировка экрана, я просто не могу заставить его запустить следующий трек.
Примечание: я убедился, что это работает в iOS4.