gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:26:48 24 4
gpt4 key购买 nike

我正在制作一个 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 的实际音量,我只想播放可以说幅度较小的声音。

我怎样才能做到这一点(最好使用我现在使用的音频服务)?

更新
在尝试实现 Louis 的回答后,此代码没有播放任何音频(即使我的手机没有处于静音状态并且我的音量已调高):

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 超出范围,它就会被释放,音频甚至没有机会开始播放。

您需要在某处保留玩家:

@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];

关于ios - 如何在 Objective-C 中以较低的音量播放系统声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com