gpt4 book ai didi

ios - 有没有办法获得震动的强度?

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

我正在做一个 POC,看看我是否能找到震动的强度。

class ViewController: UIViewController {
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent) {
println("started shaking!")
}

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) {
println("ended shaking!")
}
}

我没有看到任何可以告诉我震动有多强烈的东西。就我而言,这种摇晃可能会持续几秒钟。

最佳答案

这是我放入带有一些类变量和常量的 didAccelerate 回调中的代码:

UIAccelerationValue accelX, accelY, accelZ;
#define kAccelerometerFrequency 25 //Hz
#define kFilteringFactor 0.1
#define kMinShakeInterval 0.1
#define kShakeAccelerationThreshold 0.2
-(CMMotionManager*) motionManager{
if (_motionManager==nil) {
_motionManager=[[CMMotionManager alloc] init];
_motionManager.accelerometerUpdateInterval=1.0/25;
_motionManager.gyroUpdateInterval=1.0/25;
}
return _motionManager;
}
-(void) viewDidLoad{
[...]
[[self motionManager] startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
[self didAccelerate:accelerometerData.acceleration];
if(error){
NSLog(@"%@", error);
}
}];
[...]
}

- (void)didAccelerate:(CMAcceleration)acceleration{
UIAccelerationValue lenght, x, y, z;
accelX=acceleration.x*kFilteringFactor + accelX * (1.0 - kFilteringFactor);
accelY=acceleration.y*kFilteringFactor + accelY * (1.0 - kFilteringFactor);
accelZ=acceleration.z*kFilteringFactor + accelZ * (1.0 - kFilteringFactor);

x=acceleration.x - accelX;
y=acceleration.y - accelY;
z=acceleration.z - accelZ;

lenght=sqrt(x*x + y*y + z*z);
if (lenght>=kShakeAccelerationThreshold && (CFAbsoluteTimeGetCurrent()>lastTime + kMinShakeInterval)){
//execute shaking actions on main thread
}
}

关于ios - 有没有办法获得震动的强度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058947/

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