【问题标题】:Add a sound that is controlled by main volume添加由主音量控制的声音
【发布时间】:2012-07-29 05:10:57
【问题描述】:

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

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

【问题讨论】:

    标签: iphone objective-c ios xcode ipad


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如其他答案所述,您可以为此使用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];
      
      }
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          • 2017-09-28
          相关资源
          最近更新 更多