添加由主音量控制的声音

时间:2012-07-29 05:10:57

标签: iphone objective-c ios xcode ipad

我正在开发的iOS应用程序中有一个发射声音,虽然此时声音的音量是由铃声音量控制的,而不是主音量。我认为这是因为它是一个.caf文件,但在用mp3替换之后它没有改变它控制的音量类型。

我认为这是因为我正在使用AudioServicesCreateSystemSoundID,我假设它只适用于铃声音量。

- (IBAction)fire_rifle {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"rifle", CFSTR ("caf"), NULL);
    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
}

如何更改此代码以便使用主音量而不是铃声音量?

3 个答案:

答案 0 :(得分:1)

我建议您查看AVAudioPlayer。它适用于主音量,并有其他方便的方法来调整你可以利用的播放。

答案 1 :(得分:0)

如其他答案中所述,您可以使用AVAudioPlayer。但是,这里有一些示例代码:

<AVAudioPlayerDelegate>

请务必加入此^^

- (void)myMethod{
        AVAudioPlayer *data;
        NSString *name = [[NSString alloc] initWithFormat:@"mySoundName"];
        NSString *source = [[NSBundle mainBundle] pathForResource:name ofType:@"mp3"];
        if (data) {
            [data stop];
            data = nil;
        }
        data=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: source] error:NULL];
        data.delegate = self;
        [data prepareToPlay];
                [data play];

}

答案 2 :(得分:-1)

根据this,您无法以编程方式更改设备卷,但MPVolumeView(音量滑块)可用于更改设备音量,但仅通过用户交互。

如果您想要应用程序级别的卷,AVAudioPlayer就在那里。在这种情况下,您可以使用volume属性以编程方式设置应用程序卷(而不是设备卷)。