如何在 iOS 7 上获得拨号盘蜂鸣声。
我的应用程序中有一个拨号盘,并且想使用 iOS 7 拨号盘声音。如图所示
我尝试了一些其他方法,但不正确,并且在设备静音时声音不会减弱。
谢谢你。
可以使用以下简单的声音技巧。
NSUInteger toneID = 1200 + value;
AudioServicesPlaySystemSound((SystemSoundID)toneID);
这里
value
是0到11之间的数字。
0-9 代表键盘数字,10 代表星号,11 代表哈希值。
请注意,Apple 在 AppStore 中接受此代码没有任何问题。从 2014 年至今,我的许多应用程序都在 AppStore 上。
首先在音频框中导入 .wav 音频文件 0 到 9 并正确命名它们,就像我在这里为 DTMF_00.wav 到 DTMF_09.wav 这样的文件编写代码一样,所以你必须根据你的意愿命名这个文件,但请记住,你必须更改
NSString *toneFilename = [NSString stringWithFormat:@"DTMF_%02d", count];
这行并给出你的文件名。
然后你必须
#import <AudioToolbox/AudioToolbox.h>
都在viewController.h中
在.h文件中在接口的{}中声明
SystemSoundID toneSSIDs[10];
,如下所示
@interface yourViewController : UIViewController{
SystemSoundID toneSSIDs[10];
}
在头文件中设置一个按钮动作事件并将其设置为所有按钮。(请记住,不要为单个按钮创建动作事件,您只需创建一个单击事件)
然后你必须在上面或下面的.m文件中编写这段代码
- (void)viewDidLoad
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
for(int count = 0; count < 10; count++){
NSString *toneFilename = [NSString stringWithFormat:@"DTMF_%02d", count];
NSURL *toneURLRef = [[NSBundle mainBundle] URLForResource:toneFilename withExtension:@"wav"];
SystemSoundID toneSSID = 0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef) toneURLRef,&toneSSID);
toneSSIDs[count] = toneSSID;
}
}
return self;
}
然后
-(IBAction)numberButtonPressed:(UIButton *)pressedButton
{
int toneIndex = [pressedButton.titleLabel.text intValue];
SystemSoundID toneSSID = toneSSIDs[toneIndex];
AudioServicesPlaySystemSound(toneSSID);
}
@IBAction func btnDialPadNumberTapped(_ sender: UIButton) {
// Play built-in iPhone DialPad Sound
let toneID = UInt(1200 + sender.tag)
AudioServicesPlaySystemSound(SystemSoundID(toneID))
}
它利用系统的内置声音功能,例如,按数字1对应于声音ID 1201。在内部,此代码链接到特定的声音文件,例如“dtmf-1.caf”,用于数字 1。
请参阅可与 AudioServices iPhone Development Wiki 一起使用的预定义 iPhone 声音列表。 有关更多信息,请查找 Apple 文档:AudioServicesPlaySystemSound(_:)