2010-04-19 15 views
0

J'essaie de lire deux fichiers .wav dans mon application, mais je ne peux lire que le premier fichier wav, le second fichier ne joue pas du tout.Lecture de fichiers wav avec AudioServices dans l'iPhone

J'ai ajouté le framework AudioToolbox. Dans mon .h j'ai inclus le fichier Audiotoolbox.h et a les déclarations suivantes

//Beep Sound 
SystemSoundID soundFileObject; 
SystemSoundID recycleFileObject; 

Dans mon fichier .m j'enregistre les fichiers wav comme suit

CFURLRef soundFileURLRef = CFBundleCopyResourceURL (CFBundleGetMainBundle(),CFSTR ("Beep"),CFSTR ("wav"),NULL); 
AudioServicesCreateSystemSoundID (soundFileURLRef,&soundFileObject); 

CFURLRef soundFileURLRef2 = CFBundleCopyResourceURL (CFBundleGetMainBundle(),CFSTR ("Recycle"),CFSTR ("wav"),NULL); 
AudioServicesCreateSystemSoundID (soundFileURLRef2,&recycleFileObject); 

et moi avons écrit deux méthodes pour jouer chaque fichier individuellement. Mais je suis seulement capable de jouer le son Bip, mais pas le deuxième fichier son WAV.

Quelle est l'erreur ???

Merci

Répondre

0

Si je vous j'envelopperait le code Boîte à outils audio dans une classe afin que vous puissiez tenir le code en commun et le jeu des sons avec plus de confort (example code). Cela pourrait aussi résoudre votre problème, car il semble être une petite faute de frappe quelque part - l'exemple de code que vous nous avez donné semble bien. (Avez-vous essayé de tout enregistrer? Non null, tout est appelé comme prévu? Essayez-vous de jouer les deux sons à la fois, ou y a-t-il un retard entre eux?)

+0

Lorsque le son finit de jouer, nous devons libérer l'objet sonore - comment savons-nous quand le son s'arrête? (en utilisant votre wrapper) – Jonny

+0

Les services sonores du système sont généralement utilisés pour les effets d'interface utilisateur courts. Cela signifie qu'ils sont destinés à être recyclés: vous aurez juste une instance d'un certain échantillon à jouer encore et encore sans désaffecter. Il peut manquer de mémoire lorsqu'un contrôleur de vue est désalloué, par exemple. – zoul