gpt4 book ai didi

ios - 自定义 iPhone 振动强度

转载 作者:可可西里 更新时间:2023-11-01 03:57:04 24 4
gpt4 key购买 nike

这是一个与Are there APIs for custom vibrations in iOS?相关的问题.我能够创建自定义振动模式,但无法控制强度。

这是从 Kevin Cao 的启用自定义振动模式的答案中复制过来的:

NSMutableDictionary* dict = [NSMutableDictionary dictionary];
NSMutableArray* arr = [NSMutableArray array ];

[arr addObject:[NSNumber numberWithBool:YES]]; //vibrate for 2000ms
[arr addObject:[NSNumber numberWithInt:2000]];

[arr addObject:[NSNumber numberWithBool:NO]]; //stop for 1000ms
[arr addObject:[NSNumber numberWithInt:1000]];

[arr addObject:[NSNumber numberWithBool:YES]]; //vibrate for 1000ms
[arr addObject:[NSNumber numberWithInt:1000]];

[arr addObject:[NSNumber numberWithBool:NO]]; //stop for 500ms
[arr addObject:[NSNumber numberWithInt:500]];

[dict setObject:arr forKey:@"VibePattern"];
[dict setObject:[NSNumber numberWithInt:1] forKey:@"Intensity"];


AudioServicesPlaySystemSoundWithVibration(4095,nil,dict);

添加键 @"Intensity"int 值的代码行不能解决问题,我不知道如何查看AudioServicesPlaySystemSoundWithVibration 方法来解决这个问题。我必须传递给它什么才能真正改变强度?现在,无论我通过 1、1000、0.4 还是 0.0001 都没有关系,它始终是相同的强度(在装有 iOS7 的 iPhone 4 上)。 任何人都可以重新创建这个吗?

我希望不仅能够创建振动模式,而且能够创建平滑的振动包络。 怎么做?


(由于这是一个仪器设计研究项目,我(还)不关心应用商店的限制。)

最佳答案

更改 numberWithInt拨入numberWithFloat ,并更改强度,使其介于 0 和 1 之间。我认为他们使用 int 时很奇怪而不是 float .


编辑:这是一个复制/粘贴,应该适用于您的代码以调用自定义振动:

#pragma mark - Custom vibration methods
-(void)invokeCustomVibrationWithStartStopTimes:(NSArray*)startStopTimes andIntensity:(float)intensity {
BOOL startOrStop = YES;
NSMutableArray* arr = [@[] mutableCopy];
double time = 0;
for (NSNumber *x in stopStartTimes) {
[arr addObject:x]
startOrStop = !startOrStop;
[arr addObject:@(startOrStop)];
time = [x doubleValue] / 1000.0;
}
AudioServicesPlaySystemSoundWithVibration(4095,nil,{@"VibePattern":arr,@"Intensity":@(intensity)})
[self performSelector:@selector(stop) withObject:nil afterDelay:time];
}

-(void)stop {
AudioServicesStopSystemSound(4095); // stop buzzing the phone
}

对于 startStopTimes ,它应该在开始时间和停止时间之间交替。传入这个数组:

@[@(2000), @(1000), @(1000), @(500)]

将执行示例代码执行的操作。在这种情况下,它将启动 2000 毫秒,停止 1000 毫秒,启动 1000 毫秒,并停止 500 毫秒。

stop叫声停止。按照我的设置方式,它会在发送总时间后停止声音。

您可能已经注意到我一直在使用数组/数字文字而不是使用 [NSArray arrayWithObjects: ... , nil];[NSNumber numberWith...]; .这使您的代码更短。另外,我用 #pragma mark 标记了开头.用它来更好地组织它。希望对您有所帮助!

关于ios - 自定义 iPhone 振动强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822295/

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