audio commande non reconnue avec le framework CoreAudio
Bonjour a tous
j'ai une petite question j'ai inserer le framework CoreAudio a mon projet ensuite j'ai importé
dans ma classe dans le fichier .m et .h
Pourtant quand je creer cette commande
les deux commandes AudioServicesCreateSystemSoundID et AudioServicesPlaySystemSound ne sont pas reconues... pourquoi?
j'ai une petite question j'ai inserer le framework CoreAudio a mon projet ensuite j'ai importé
#import <CoreAudio/CoreAudioTypes.h>
dans ma classe dans le fichier .m et .h
Pourtant quand je creer cette commande
les deux commandes AudioServicesCreateSystemSoundID et AudioServicesPlaySystemSound ne sont pas reconues... pourquoi?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce ne serait pas #import <CoreAudio/CoreAudio.h> ?
il me dit no such file or directory...
As-tu importé correctement le framework dans ton projet ?
J'ai pas de sous dossier system (ou alors je ne sais pas ou il est)
Par contre il apparait bien dans la liste de mes framework dans Xcode
C'est bien <CoreAudio/CoreAudioTypes.h> que je dois importer ? car c'est bien ce fichier qui est dans le framework. par contre il n'y a pas de CoreAudio.h dans le framework
Apparemment, il faut faire un #import <AudioToolbox/AudioServices.h>.
Tente le coup pour voir...
MAJ : bien sûr, faudra peut-être intégrer le framework de même nom dans ton projet.
Par contre j'obtiens un avertissement
AudioServicesCreateSystemSoundID(path, key);
me disant incompatible pointer type pour path et pointer from interger without cast pour key
J'arrive plus a trouver d'ou j'ai eu ce code :-\\
quel est l'erreur ?
Menu Help > Documentation
Choisir iPhoneOS dans le répertoire Doc Sets
J'ai un peu de peine a comprendre la doc d'apple en général... d'autant qu'il y a peu d'exemples
ce que j'ai compris de la doc d'audio service c'est qu'il faut creer un system sound id pour identifier le son ensuite appeler cet key id pour jouer le son. Ca semble très simple
Le key id ne peut donc pas être un int il doit être de type SystemSoundID ? donc dois-je l'instancier au préalable ?
SystemSoundID *outSystemSoundID
ou suffit-il de passer un nom dans AudioServicesCreateSystemSoundID afin d'avoir l'id creer ?
Et pour le path ? la doc dit qu'il faut passer CFURLRef c'est un path de type [mainBundle pathForResource:@676 ofType:@wav];
Merci de votre patience !
Car d'après le peu glané sur le net, la fonction AudioServicesCreateSystemSoundID a comme prototype :
OSErr AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)
Ce qui est bien loin de ce que tu as codé :
1. le premier arg est un NSURL/CFURLREF (or tu fournis un NSString/CFStringRef),
2. le second arg est un pointeur vers sans doute un int (pour récupérer l'ID du son venant d'être lu).
De plus, cette fonction retourne un éventuel code erreur qu'il faut tester si le fichier son n'a pas pu être lu.
Connais tu le C ?
Il suffit donc de construire une NSURL* à partir de ton path (via [tt]fileURLWithPath:[/tt]) puis de simplement caster cette NSURL* en CFURLRef !
Non, pas de bétise, c'est vrai pour NSURL et CFURL (tout comme NSString et CFString).
Mais le grios problème, c'est le 2nd argument : ça doit être un pointeur.
Or il y met un int valant 1. Donc en toute logique, la fonction va tenter d'écrire à l'adresse 1... Inutile de faire un dessin pour décrire ce qui se passera...
Son problème ne semble plus être : comment fonctionne AudioServicesCreateSystemSoundID, mais connaitre un minimum la programmation (et donc de savoir lire une doc), et surtout connaitre le C (et donc de bien mettre les bons arguments là où il faut).
Euh, Java fait partie de la nombreuse descendance de C. Si tu sais coder en java, pondre du C ne te sera pas difficile.
Pour ton problème précis, je te donne une piste (basée sur Foundation/AppKit du OSX, donc peut-être un peu différent de iPhone) :
C'est sans doute ça qui perturbe yodark, cette notion de pointeur ([tt]SystemSoundID *[/tt] en l'occurence) qu'il ne connaà®t pas, donc forcément s'il pas l'entier directement au lieu de son adresse ne comprenant pas la différence... kaboum.