2

我正在开发的 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);
}

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

4

3 回答 3

1

我建议检查一下AVAudioPlayer。它适用于主音量,并具有其他方便的方法来调整播放,您可以利用这些方法。

于 2012-07-29T06:28:43.860 回答
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];

}
于 2012-08-11T23:39:47.683 回答
-1

根据这个,您不能以编程方式更改设备音量,但是 MPVolumeView(音量滑块)可以更改设备音量,但只能通过用户交互。

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

于 2012-08-11T23:32:04.363 回答