2012-09-25 44 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