2012-05-24 12 views

Odpowiedz

11

Jeśli chcesz grać krótki dźwięk (krócej niż 30 sekund), można to łatwo zrobić tak:

Uwaga: Będziesz mieć aby dodać AudioToolbox ramy i zaimportować go (#import <AudioToolbox/AudioToolbox.h>)

SystemSoundID mySSID; 

NSString *path = [[NSBundle mainBundle] pathForResource:@"beep" ofType:@"wav"]; 
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: path], &mySSID); 

AudioServicesPlaySystemSound(mySSID); 

Należy również pamiętać, że plik może być:

  • Nie dłużej niż 30 sekund, w czasie trwania
  • W PCM (liniowe lub IMA4/ADPCM IMA) format
  • Pakowane w .caf, .aif lub .wav pliku
+0

Świetny !! Ale czy można odtwarzać dźwięk systemu? Nie chcę wgrać od razu żadnego nowego ... Brzmi jak standardowy dźwięk kliknięcia przycisku iPhone. – Radislav

+0

Nie jestem tego pewien ... Chociaż wiem na pewno, że można użyć dźwięku "wibracji" systemu. Jeśli coś znajdę, dam ci znać. – Alladinian

+0

+1 dla lepszego rozwiązania dla krótkich dźwięków systemowych –

3

Powinieneś używać AVAudioPlayer.

Istnieje świetny samouczek here dotyczący używania AVAudioPlayer do odtwarzania dźwięków. Bardzo prosty przykład na jego zastosowanie:

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3",dataPath]; 

NSError *error; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 

if (audioPlayer == nil) 
    NSLog([error description]); 
else 
    [audioPlayer play]; 
+0

Wielkiej !! Ale czy można odtwarzać dźwięk systemu? Nie chcę wgrywać od czasu do czasu czegoś nowego ... Trochę jak standardowy dźwięk kliknięcia przycisku iPhone – Radislav

0
NSString *path = [[NSBundle mainBundle] pathForResource:@"gorilla 2" ofType:@"mp3"]; 
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 

theAudio.delegate=self; 
[theAudio play]; 
Powiązane problemy