2012-09-25 69 views
3

這是我當前的代碼iOS的聲音回放音量不尊重體積變化或靜音

void playSound(NSString* myString) { 

    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    NSString *string = myString; 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, 
         (__bridge CFStringRef) string, CFSTR ("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 

} 

它的工作原理,但它不會讓你改變音量的設備上或與靜音開關靜音。啓用這些功能的最簡單方法是什麼?謝謝。

回答

0

爲什麼不使用AVFoundation?如果您只想播放簡單的聲音效果,那麼這將是更好的選擇,因爲它是更高級的API。

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"mp3"]; 
NSURL *url = [NSURL fileURLWithPath:filePath]; 

// Assuming audioPlayer is an ivar. 
NSError *error; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
audioPlayer.numberOfLoops = -1; 

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

AVAudioPlayer應該尊重用戶的音量設置。

+0

我該如何聲明audioPlayer? – user1604196

+0

'AVAudioPlayer * audioPlayer'在頭... – DrummerB

+0

好吧,我做到了,但現在我得到這個終止應用程序,由於未捕獲異常'NSInvalidArgumentException',原因:'*** - [NSURL initFileURLWithPath:]:nil字符串參數' – user1604196