Quelle est la meilleure façon de lire un fichier musical tel que Mp3 avec pause botton? très très simple un jeu de bouton et un autre bouton pause cette musique .. pouvez-vous écrire ce code!Lecture de fichiers MP3 avec iPhone SDK
Répondre
Voici les codes des actions requises, appSoundPlayer est une propriété de AVAudioPlayer déclarée 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
The Apple documentation here devrait avoir tout ce que vous devez savoir.
bien here est un bon tutoriel disponible.
Le thème est
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
et quand vous voulez faire une pause;
[audioPlayer pause];
espérons que cela aide.
merci beaucoup j'aime http://stackoverflow.com et bien sûr vous: D – Momi
OK, j'ai encore un problème. quand j'appuie sur le bouton de lecture plusieurs fois la musique joue encore et encore ... !! comment peut jouer de la musique 1 fois? et à propos du bouton pause, qui s'en occupe? désolé iam amateur: – Momi
Pour des sons courts ou lorsque le MP3 ne joue pas bien sur le code proposé, vous pouvez toujours utiliser:
SystemSoundID soundID;
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/sound.mp3", [[NSBundle mainBundle] resourcePath]]];
AudioServicesCreateSystemSoundID((CFURLRef)url, &soundID);
AudioServicesPlaySystemSound (soundID);
Ne pas oublier d'ajouter:
#import <AudioToolbox/AudioToolbox.h>
merci beaucoup pour cela! – rwarner
Merci, a travaillé pour moi. Avec ARC: AudioServicesCreateSystemSoundID ((__ bridge CFURLRef) url, & soundID); –
L'exemple de code oalTouch sur le site Web des développeurs Apple iOS fait ce que vous voulez et est prêt à fonctionner.
Il montre également comment tester si une autre application (par exemple iPod) joue déjà un fichier, ce qui est pratique si vous voulez permettre à vos utilisateurs d'écouter leur propre musique au lieu de la vôtre.
L'API DIRAC est gratuite et très facile à utiliser. Nous l'avons utilisé dans mon application de robot parlant http://itunes.apple.com/us/app/daidai/id484833168 et il a été incroyable pour moi comment il parvient à changer la vitesse et la hauteur de la voix
Je crains que la réponse non indiquée travaille plus dans iOS 7 et supérieur. Vous devez utiliser le code suivant:
dans le fichier d'en-tête (.h)
Afin de gérer les méthodes de déléguer comme lorsque le jeu de l'audio a terminé audioPlayerDidFinishPlaying :, hériter de AVAudioPlayerDelegate.
@property (nonatomic, strong) AVAudioPlayer *player;
dans le fichier de mise en œuvre (.m)
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];
J'aime code simple et voici ma solution: (. Rappelez-vous d'ajouter le bouton interrupteur pour obtenir le jeu de musique Amusez-vous bien)
#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];
}
}
}
avez-vous du code d'échantillon de ce tutoriel? – Momi
ces erreurs sont dues à ce que vous ne les avez pas déclarées dans le fichier h. – Nithin
Ce code a-t-il fonctionné pour le NSURL ... en jouant la mise en mémoire tampon audio du serveur? –