J'utilise AVAudioPlayer de iOS SDK pour lire des sons courts à chaque clic dans les lignes de tableView. J'ai fait @selector sur le bouton dans chaque ligne qui lance la méthode playSound: (id) receiver {}. Du récepteur, je reçois une URL sonore pour que je puisse jouer.L'application iPhone AVAudioPlayer gèle à la première lecture
Cette méthode ressemble que:
- (void)playSound:(id)sender {
[audioPlayer prepareToPlay];
UIButton *audioButton = (UIButton *)sender;
[audioButton setImage:[UIImage imageNamed:@"sound_preview.png"] forState:UIControlStateNormal];
NSString *soundUrl = [[listOfItems objectForKey:[NSString stringWithFormat:@"%i",currentPlayingIndex]] objectForKey:@"sound_url"];
//here I get mp3 file from http url via NSRequest in NSData
NSData *soundData = [sharedAppSettingsController getSoundUrl:defaultDictionaryID uri:soundUrl];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithData:soundData error:&error];
audioPlayer.numberOfLoops = 0;
if (error) {
NSLog(@"Error: %@",[error description]);
}
else {
audioPlayer.delegate = self;
[audioPlayer play];
}
}
Tout fonctionne bien, sauf pour le premier jeu de certains sons. L'application se bloque pendant environ 2 secondes et le son est joué. Deuxième et tous les autres jeux de sons fonctionne juste après avoir cliqué sur le bouton sonore.
Je me demande pourquoi il y a environ 2 secondes de gel à la première lecture lorsque l'application démarre?
Si vous pensez que je prends une mauvaise solution s'il vous plaît me dire la bonne ...
Cordialement
Merci, je vais essayer ça ... –