12
votes

Jouez aux fichiers MP3 avec iPhone SDK

Quel est le moyen le plus simple de lire un fichier de musique tel que MP3 avec le bouton Pause? Très très simple, un bouton de jeu et un autre bouton met en pause cette musique


0 commentaires

8 Réponses :


33
votes

Ce sont les codes des actions demandées, AppsoundPlayer est une propriété d'Avaudioplayer déclaré dans le fichier h. Cet exemple joue également une chanson dans le dossier de ressources.

#pragma mark -
    #pragma mark *play*
    - (IBAction) playaction {

        NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"songname" ofType:@"mp3"];
        NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
        self.soundFileURL = newURL;
        [newURL release];
        [[AVAudioSession sharedInstance] setDelegate: self];
        [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

    // Registers the audio route change listener callback function
    AudioSessionAddPropertyListener (
                                     kAudioSessionProperty_AudioRouteChange,
                                     audioRouteChangeListenerCallback,
                                     self
                                     );

    // Activates the audio session.

    NSError *activationError = nil;
    [[AVAudioSession sharedInstance] setActive: YES error: &activationError];

    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
    self.appSoundPlayer = newPlayer;
    [newPlayer release];
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume: 1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];


    [stopbutton setEnabled:YES];
    [playbutton setEnabled: NO];
    playbutton.hidden=YES;
    pausebutton.hidden =NO;
}//playbutton touch up inside

#pragma mark -
#pragma mark *pause*
-(IBAction)pauseaction {
    [appSoundPlayer pause];
    pausebutton.hidden = YES;
    resumebutton.hidden = NO;

}//pausebutton touch up inside

#pragma mark -
#pragma mark *resume*
-(IBAction)resumeaction{
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume:1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];
    playbutton.hidden=YES;
    resumebutton.hidden =YES;
    pausebutton.hidden = NO;

}//resumebutton touch up inside

#pragma mark -
#pragma mark *stop*
-(IBAction)stopaction{

    [appSoundPlayer stop];
    [playbutton setEnabled:YES];
    [stopbutton setEnabled:NO];
    playbutton.hidden=NO;
    resumebutton.hidden =YES;
    pausebutton.hidden = YES;

}//stopbutton touch up inside


3 commentaires

Avez-vous un exemple de code de ce tutoriel?


Ces erreurs sont leur raison pour que vous ne les ai pas déclarés dans le fichier h.


Ce code a-t-il fonctionné pour la nsurl ... jouer au tampon audio de serveur?



0
votes

La documentation Apple ici devrait avoir tout ce que vous devez savoir.


0 commentaires

7
votes

Eh bien ici est un bon tutoriel disponible.

Le thème est xxx

et lorsque vous souhaitez mettre en pause; xxx

espère que cela aide. < / p>


2 commentaires

merci beaucoup j'aime Stackoverflow.com et bien sûr: D


Ok, j'ai un peu de problème à nouveau. Lorsque je touche le bouton de lecture plusieurs fois, la musique joue dessus et sur ... !! Comment jouer de la musique 1 fois? et sur le bouton de pause, qui le travaille? désolé iam amateur:



25
votes

Pour des sons courts ou lorsque le MP3 ne joue pas bien sur le code suggéré, vous pouvez toujours utiliser:

#import <AudioToolbox/AudioToolbox.h>


1 commentaires

Merci, travaillé pour moi. Avec arc: audioservicesCreatsystemsoundidid ((__ pont cfurlref) URL, & SOUNDID);



0
votes

the OALTOUCH exemple de code sur la pomme Le site Web du développeur iOS fait ce que vous voulez et est prêt à courir.

Il montre également comment tester si une autre application (par exemple, iPod) joue déjà un fichier, qui est pratique si vous souhaitez autoriser vos utilisateurs à écouter leur propre musique au lieu de vous.


0 commentaires

0
votes

API Dirac est gratuit et assez facile à utiliser. Nous l'avons utilisé dans mon explication de robot parlant http://itunes.apple.com/us / app / daidai / ID484833168 et cela m'a été étonnant de savoir comment il réussit à changer la vitesse et la hauteur de la voix

http://www.dspdimension.com/download/


0 commentaires

5
votes

J'ai bien peur que la réponse indiquée ne fonctionne plus dans iOS 7 et plus. Vous devrez utiliser le code suivant:

dans le fichier d'en-tête (.h) strong> p>

afin de gérer les méthodes de délégation comme lorsque le jeu de l'audio a terminé. AudioplayerdidfinishPlaying :, hériter d'AvaudioplayerDelegate. P>

 NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: resourceName
                                                          ofType: @"mp3"];
 NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];

 AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
                                                                  error: nil];
_player = newPlayer;
[_player prepareToPlay];
[_player setDelegate: self];
[_player play];


0 commentaires

1
votes

J'aime le code simple et voici ma solution: (N'oubliez pas d'ajouter un bouton de commutateur pour obtenir la musique de musique. Amusez-vous)

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()
{
    NSURL*                  bgURL;
    AVAudioPlayer*          bgPlayer;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    bgURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp3"]];
    bgPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:bgURL error:nil];
}

#pragma mark AVAudioPlayer
- (IBAction)toggleMusic:(UISwitch*)sender {
    NSLog(@"togging music %s", sender.on ? "on" : "off");

    if (bgPlayer) {

        if (sender.on) {
            [bgPlayer play];
        }
        else {
            [bgPlayer stop];
        }
    }   
}


0 commentaires