2015-03-11 3 views

ответ

18

Самый простой способ, чтобы импортировать структуру AudioToolbox как так #import <AudioToolbox/AudioToolbox.h> то все, что вам нужно сделать, это:

NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"Beep" ofType:@"mp3"]; 
SystemSoundID soundID; 
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundPath], &soundID); 
AudioServicesPlaySystemSound(soundID); 

Это лучше всего подходит для очень коротких звуков, таких как звуковые сигналы и т.д., потому что вы не будете иметь много контроль над звучит так, как если бы вы с AVAudioPlayer.

+1

Спасибо. Кажется, что для коротких звуков это лучший метод. – Kyle

+0

Очень приятный ответ спасибо :-) – Josef

+1

mp3 прерывает другие звуки и не может быть воспроизведен с другими. Возможно, вам понадобится кафе. – durazno

10

Использование AVAudio - больше кода, что с помощью AudioToolbox, но она более гибкая (если вам это нужно в будущем)

0.

#import <AVFoundation/AVFoundation.h> 

1.

//conform to delegate and make a property 
@interface ViewController() <AVAudioPlayerDelegate> 
@property (nonatomic, strong) AVAudioPlayer *audioplayer; //the player 
@end 

2.

//have a lazy property for the player! where you also tell it to load the sound 
#define YourSound @"sound.caf" 
- (AVAudioPlayer *)audioplayer { 
    if(!_audioplayer) { 
     NSURL *audioURL = [[NSBundle mainBundle] URLForResource:YourSound.stringByDeletingPathExtension withExtension:YourSound.pathExtension]; 
     NSData *audioData = [NSData dataWithContentsOfURL:audioURL]; 
     NSError *error = nil; 
     // assing the audioplayer to a property so ARC won't release it immediately 
     _audioplayer = [[AVAudioPlayer alloc] initWithData:audioData error:&error]; 
     _audioplayer.delegate = self; 
    } 
    return _audioplayer; 
} 

3.

//play 
- (void)action { 
    [self.audioplayer play]; 
} 
+0

Спасибо, это работает для меня. Но для коротких аудио я попробую C-функции. – Kyle

+0

спасибо, что это сработало для меня – BoSoud

2
#Import Avfoundation.Framework 

AVAudioPlayer *_audioPlayer; //Declare Globally 

Nsstring *path =[Nsstring stringwithformat:@"%@/Beep.mp3",[[Nsbundle mainBundle] resourcePath]];   //Give Your Local Path 

Nsurl *soundUrl= [Nsurl FileUrlWithPath:path]; 

_audioPlayer=[[AvAudioPlayer alloc] initwithContents ofurl:soundUrl error:nil]; 

_audioPlayer.volume=1.0; //Give Volume 

_audioPlayer.numberOfLoops=loop; //Give number of loop for repeating sound 

_audioPlayer.enableRate = Yes; 

_audioPlayer.rate=2.0f; //Give for fast playing sound. default value is 1.0f; 

[_audioPlayer Play];