• Billet écrit dans : Mobile, iPhone 18.03.2009

    Aujourd’hui, j’ai bataillé pour lancer un mp3 au lancement d’une application. Tellement bataillé que je vais mettre ici le code qui va bien pour que je puisse le retrouver rapidement :) Donc peu d’explication, ceci n’est pas un tutorial.

    1. Inclure le framework AudioToolBox & AVFoundation
    2. Faire les imports suivants : #import <AVFoundation/AVFoundation.h> #import <AudioToolbox/AudioToolbox.h>
    3. Inclure le fichier à jouer dans le projet dans le dossier « ressources »
    4. Déclarer une propriété de classe AVAudioPlayer * audioPlayer;

    Et voici le code qui va bien :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    	// Initialise un contexte Audio
    	AudioSessionInitialize (
    							NULL,                          // 'NULL' to use the default (main) run loop
    							NULL,                          // 'NULL' to use the default run loop mode
    							NULL,  // a reference to your interruption callback
    							self                       // data to pass to your interruption listener callback
    							);
     
    	// Definit quel type de son on va joué
    	UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
    	AudioSessionSetProperty (
    							 kAudioSessionProperty_AudioCategory,
    							 sizeof (sessionCategory),
    							 &sessionCategory
    							 );
     
    	// Définit quel fichier on utilise pour le son
    	NSData *soundFileData;
    	soundFileData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music.mp3" ofType:NULL]]];
     
    	// Initialise notre lecteur avec les données du fichiers son à jouer
    	audioPlayer = [[AVAudioPlayer alloc] initWithData:soundFileData error:NULL];
     
    	// Precharge le son
    	if(!([audioPlayer prepareToPlay])){
    		NSLog(@"myAudioPlayer:prepareToPlay returned FALSE");
    	}
     
    	// Définit le delegate sur la classe courante
    	audioPlayer.delegate = self;
     
    	// Définit le volume
    	[audioPlayer setVolume:1.0];
     
    	// Joue le son !
    	[audioPlayer play];

    Voilà, la seul différence avec les codes que l’on peut trouver un peu partout est l’ajout du Session Audio. Si je l’initialise pas le son ne fonctionne que sur le simulateur et pas sur le mobile. Je ne sais pas trop pourquoi.

    Merci à fpillet du channel irc #iphonedev sur freenode pour son aide.

    Billet écrit dans : Mobile, iPhone 18.03.2009

    Tags: , , ,

  • Réagissez a cet article ?!

    Attention: Les commentaires sont modérés et ne sont pas visibles automatiquement. Ce n'est pas la peine de re-soumettre votre commentaire.

    Add a comment on FriendFeed




CV Guillaume chave