这是一个与
Are there APIs for custom vibrations in iOS?相关的问题.
我能够创建自定义振动模式,但无法控制强度.
我能够创建自定义振动模式,但无法控制强度.
这是凯文曹的答案复制的,它可以实现自定义振动模式:
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上).任何人都可以重新创建吗?
我希望不仅能够创建振动模式,还能够创建平滑的振动包络.如何?
(由于这是一个用于仪器设计的研究项目,我(尚未)关注App Store的限制.)
解决方法
将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,{@"VibePattern":arr,@"Intensity":@(intensity)}) [self performSelector:@selector(stop) withObject:nil afterDelay:time]; } -(void)stop { AudioServicesstopSystemSound(4095); // stop buzzing the phone }
对于startStopTimes,它应该在开始时间和停止时间之间交替.传入这个数组:
@[@(2000),@(1000),@(500)]
将执行示例代码所做的事情.在这种情况下,它将启动2000 ms,停止1000 ms,启动1000 ms,停止500 ms.
停止被叫来停止声音.我设置它的方式,它会在发送总时间后停止声音.
你可能已经注意到我一直在使用数组/数字文字,而不是使用[NSArray arrayWithObjects:…,nil];或[NSNumber numberWith …] ;.这使您的代码缩短了很多.另外,我用#pragma标记开头.用它来更好地组织它.希望能帮助到你!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。