Sur l'iPhone, j'ai besoin d'obtenir le chemin pour la ressource. OK, fait cela, mais quand il s'agit de CFURLCreateFromFileSystemRepresentation chose, je ne sais pas comment résoudre ce problème. Pourquoi cette erreur se produit-elle? Toute solution ou solution de contournement serait très appréciée. Merci d'avance.Comment puis-je obtenir le chemin du système de fichiers pour une ressource sur iPhone?
J'ai regardé les exemples suivants afin de jouer de l'audio en utilisant AudioQueue sur l'iPhone: SpeakHere, AudioQueueTools (du répertoire SimpleSDK) et AudioQueueTest. J'ai essayé de faire ceci et cela, en essayant de mettre les puzzles ensemble. En ce moment, je suis coincé à cela. Le programme s'est écrasé à cause de l'exception lancée depuis le fichier sndFile ci-dessus. J'utilise AVAudioPlayer pour jouer tous les sons de mes jeux iPhone. Sur le vrai iPhone, il s'est avéré très décalé quand un son devait être joué, j'ai donc décidé d'utiliser AudioQueue.
- (id) initWithFile: (NSString*) argv{
if (self = [super init]){
NSString *soundFilePath = [[NSBundle mainBundle]
pathForResource:argv
ofType:@"mp3"];
int len = [soundFilePath length];
char* fpath = new char[len];
//this is for changing NSString into char* to match
//CFURLCreateFromFileSystemRepresentation function's requirement.
for (int i = 0; i < [soundFilePath length]; i++){
fpath[i] = [soundFilePath characterAtIndex:i];
}
CFURLRef sndFile = CFURLCreateFromFileSystemRepresentation
(NULL, (const UInt8 *)fpath, strlen(fpath), false);
if (!sndFile) {
NSLog(@"sndFile error");
XThrowIfError (!sndFile, "can't parse file path");
}
}
Qu'essayez-vous d'accomplir? Je n'aime pas les questions qui demandent comment utiliser une méthode de cadre par opposition à comment puis-je résoudre ce problème réel. Aussi, que se passe-t-il avec l'ellipse redondante? –
Correction d'une question –
OK, désolé pour cela. J'étais un peu fatigué. Quoi qu'il en soit, j'ai essayé de suivre tous les exemples pour AudioQueue et j'ai aussi lu le document Apple pour cela. Étant donné que je ne suis pas très expérimenté, je ne sais pas comment traiter correctement CFURLRef. Tout ce que je comprends de tous les exemples et documents, c'est que j'ai besoin d'utiliser le CFURLCreateFromFileSystemRepresentation pour obtenir un CFURLRef afin que je puisse utiliser ce CFURLRef comme argument dans la méthode AudioFileOpenURL. Mais j'ai eu une erreur disant: "terminated appelé après avoir lancé une instance de 'CAXException'". Je ne sais pas comment faire face à cette erreur. – Karl