如何在Objective-C中以较低的音量播放系统声音?

伊森·G

我正在制作一个iOS 8 Objective-C应用程序(在我的iPhone 5上部署),并且我正在使用以下代码通过该应用程序通过电话播放声音:

@property (assign) SystemSoundID scanSoundID;

...

- (void)someFunction {

    ...

    //Play beep sound.
    NSString *scanSoundPath = [[NSBundle mainBundle]
                               pathForResource:@"beep" ofType:@"caf"];
    NSURL *scanSoundURL = [NSURL fileURLWithPath:scanSoundPath];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)scanSoundURL, &_scanSoundID);
    AudioServicesPlaySystemSound(self.scanSoundID);

    ...

}

该代码可以正常工作,但是beep.caf声音很大。我想以50%的音量播放提示音(不更改iPhone的音量)。换句话说,我不想触摸iPhone的实际音量,我只是想播放声音幅度较小的声音。

我该如何做到这一点(最好使用现在正在使用的音频服务)?

更新
在尝试实现路易斯的答案后,此代码未播放任何音频(即使我的电话处于静音状态且音量已调高):

NSString *scanSoundPath = [[NSBundle mainBundle] pathForResource:@"beep"
                                                          ofType:@"caf"];
NSURL *scanSoundURL = [NSURL fileURLWithPath:scanSoundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:scanSoundURL 
                                                               error:nil];
player.volume = 0.5;
[player play];
意义事项

您的UPDATE代码将创建player为局部变量,当方法(在其中调用此代码)返回时,该变量将超出范围。

一旦player超出范围,它就会被释放,并且音频甚至没有机会开始播放。

您需要在retain某个地方玩:

@property AVAudioPlayer* player;

...

- (void)initializePlayer
{
    NSString *scanSoundPath = [[NSBundle mainBundle] pathForResource:@"beep"
                                                      ofType:@"caf"];
    NSURL *scanSoundURL = [NSURL fileURLWithPath:scanSoundPath];
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:scanSoundURL 
                                                           error:nil];
    self.player.volume = 0.5;
}

然后在其他地方打电话:

[self.player play];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用系统音量来播放声音?

来自分类Dev

Objective-C:如何在DiracLE中控制多个音频播放器的音量

来自分类Dev

如何在C ++中播放声音?

来自分类Dev

如何在C ++中播放声音

来自分类Dev

如何播放系统媒体声音

来自分类Dev

如何在Objective C中存储块?

来自分类Dev

如何在XBMC中调整系统音量?

来自分类Dev

如何在XBMC中调整系统音量?

来自分类Dev

如何在 Objective C 中使用 CallKit

来自分类Dev

如何在Java中播放声音?

来自分类Dev

如何在angularjs中播放声音

来自分类Dev

如何在Julia中播放声音

来自分类Dev

如何在android中播放声音

来自分类Dev

如何在Lubuntu中启用系统声音?

来自分类Dev

如何制作,以增加和减少声音播放的音量

来自分类Dev

如何使用文本播放声音系统?

来自分类Dev

Powershell——如何播放不同的系统声音?

来自分类Dev

如何在Objective C中以非全屏方式从浏览器应用播放Youtube Video

来自分类Dev

C#如何设置声音字节的音量[]

来自分类Dev

如何在Objective c 中处理TableviewCell 中的UIButton?

来自分类Dev

如何在Objective-C函数中返回C ++指针

来自分类Dev

如何在Objective-C中验证JSON模式?

来自分类Dev

如何在Objective-C中创建Swift对象?

来自分类Dev

如何在Swift / Objective C中从HTTP请求返回数据

来自分类Dev

如何在Swift中调用Objective C类方法

来自分类Dev

如何在Objective-C中列出可用的蓝牙设备?

来自分类Dev

如何在Objective-C中创建对象?

来自分类Dev

如何在Swift中调用Objective-C类别方法

来自分类Dev

如何在Objective-C中取消异步HTTP请求?