J'ai essayé d'apprendre AVAudioPlayer
et son comportement.Problème de gestion du comportement d'AVAudioPlayer
Donc, pour commencer, je l'avais écrit
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1;
[player play];
Il ne fonctionnait bien aussi longtemps que l'application ne sont pas entrés arrière-plan. Donc, je cherchais encore et trouvé que je dois ajouter une entrée dans plist et ont également écrit le code suivant
NSError *activationError = nil;
if([[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&activationError] == NO)
NSLog(@"*** %@ ***", activationError);
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
Maintenant, mes pièces d'application en arrière-plan sonore échantillons aussi bien. Puis j'ai rencontré un autre problème. Si je mets le sommeil avant tout ce traitement, prendre mon application en arrière-plan pendant le sommeil et commencer à jouer de la musique à partir d'une autre application, dans ce cas mon application ne peut pas jouer de son. C'est probablement parce qu'il n'obtient pas la session audio qu'une autre application musicale a prise.
Questions 1. Je comprends qu'il ya un moyen de détecter si une autre lecture d'un son, mais je ne pouvais pas trouver comment puis-je l'arrêter. Il existe des méthodes pour arrêter le son de l'application standard comme iPod, mais existe-t-il une méthode générique pour arrêter le son de toute autre application. 2.[player play];
donne NO
comme résultat qui est l'échec. Comment puis-je trouver ce que l'échec a causé. J'ai implémenté la méthode audioPlayerDecodeErrorDidOccur:error:
, mais elle n'est jamais appelée.
Veuillez partager vos connaissances à ce sujet. J'ai déjà passé à travers la plupart des questions de débordement de pile concernant la même chose, mais je n'ai rien trouvé d'utile à ce problème particulier.
s'il vous plaît imprimer votre soundFileURL –
@Manohar: utilisé le code ci-dessous pour obtenir l'URL 'NSString * soundFilePath = [[NSBundle mainBundle] pathForResource: @ "son" ofType: @ "mp3"]; NSURL * soundFileURL = [NSURL fileURLWithPath: soundFilePath]; ' Cela a fonctionné jusqu'à ce que l'application soit en arrière-plan et que rien d'autre ne soit joué. Donc, je ne pense pas que l'URL est un problème ici. – Sagrian
NSURL * soundFileURL = [URLLigneSSURL: soundFilePath]; essayez ceci –