2012-09-25 2 views
3

이 내 현재 코드아이폰 OS 사운드 재생 볼륨이 볼륨 변경이나

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 string parameter' – user1604196

관련 문제