2009-07-19 8 views
1

Voici le code:En utilisant le système audio pour lire des sons

-(void)stop 
{ 
    NSLog(@"Disposing Sounds"); 
    AudioServicesDisposeSystemSoundID (soundID); 
    //AudioServicesRemoveSystemSoundCompletion (soundID); 
} 

static void completionCallback (SystemSoundID mySSID, void* myself) { 
    NSLog(@"completion Callback"); 
} 
- (void) playall: (id) sender { 

    [self stop]; 

    AudioServicesAddSystemSoundCompletion (soundID,NULL,NULL, 
    completionCallback, 
    (void*) self); 


    OSStatus err = kAudioServicesNoError; 
    NSString *aiffPath = [[NSBundle mainBundle] pathForResource:@"slide1" ofType:@"m4a"]; 
    NSURL *aiffURL = [NSURL fileURLWithPath:aiffPath]; 
    err = AudioServicesCreateSystemSoundID((CFURLRef) aiffURL, &soundID); 
    AudioServicesPlaySystemSound (soundID); 
    NSLog(@"Done Playing"); 
} 

Sortie:

Disposing Sounds 
Done Playing 

En aucun son réel se joue du tout et appel d'achèvement est de retour pas appelé aussi. Une idée de ce qui pourrait être mauvais ici? Je souhaite arrêter le son précédent avant de lire le courant.

Répondre

0

Que contient l'erreur? De cela, vous devriez être en mesure d'inférer le problème.

+0

I err imprimé en utilisant NSLog et apears être (null) – Shoaibi

+0

Voulez-vous dire (nul) ou zéro? Je pense que vous devez être un peu plus prudent avec votre NSLog ... (null) n'est pas un nombre entier ...;) –

+0

je l'ai fait: NSLog (@ "Error:% @", err); donc je suppose que je suis l'impression de chaîne, et il me dit son "(null)" sur la console. – Shoaibi

1

AFAIK, les seuls fichiers pris en charge sont .caf, .aif ou .wav:

To play your own sounds, add the sound file to your application bundle; the sound file must adhere to the following requirements:

  • Must be .caf, .aif, or .wav files.
  • The audio data in the file must be in PCM or IMA/ADPCM (IMA4) format.
  • The file's audio duration must be less than 30 seconds.

Audio & Video Coding How-To's

0

Vous pouvez utiliser le cadre AudioToolbox pour cela:

CFBundleRef mainbundle = CFBundleGetMainBundle(); 
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainbundle, CFSTR("tap"), CFSTR("aif"), NULL); 
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject); 
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
AudioServicesPlaySystemSound(1100); 
Questions connexes