我正在使用该UIAccelerotmeterDelegate方法,accelerometer:didAccelerate:但最近该方法已在iOS 5.0中弃用.那么获取加速度计数据的另一种方法是什么?文档没有提到我们应该使用的替代方案.
所以我有这个应用程序我正在努力你可以通过倾斜设备(加速度计)在屏幕上滚动球.我怎样才能改变下面的代码,这样我就不必将手机保持平衡,并将其作为我的中立平衡点.我想要的是,无论你在应用程序加载时对设备的任何倾斜,这都是神经平衡点.从当前角度来看,您握住设备即中性点.中立平衡点意味着球几乎仍然存在的点.希望这清楚我想要什么.该应用程序也只是landscapeRight.
注意下面的代码100%正常工作,就像它需要它为我的应用程序工作.我需要保持手机平放滚动球...
CGRect screenRect;
CGFloat screenHeight;
CGFloat screenWidth;
double currentMaxAccelX;
double currentMaxAccelY;
@property (strong, nonatomic) CMMotionManager *motionManager;
-(id)initWithSize:(CGSize)size {
//init several sizes used in all scene
screenRect = [[UIScreen mainScreen] bounds];
screenHeight = screenRect.size.height;
screenWidth = screenRect.size.width;
if (self = [super initWithSize:size]) {
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = .2;
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
[self outputAccelertionData:accelerometerData.acceleration];
if(error)
{
NSLog(@"%@", error);
}
}];
}
return self;
}
-(void)outputAccelertionData:(CMAcceleration)acceleration{
currentMaxAccelX = 0;
currentMaxAccelY = 0;
if(fabs(acceleration.x) …Run Code Online (Sandbox Code Playgroud) 我想创建一个简单的应用程序,当我在Y轴上从起点到终点移动手机时,在屏幕上绘制一条简单的线,例如从点a(0,0)到点b(0,10)请帮忙
演示:

还在BigNerdRanch iOS开发书上.
在Accelerometer章节中,他们首先实现加速度计跟踪,但它相当跳跃.然后,他们建议通过更改原始代码对其应用低通滤波器:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
HypnosisView *hv = (HypnosisView *)[self view];
[hv setXShift:10.0 * [acceleration x]];
[hv setYShift:10.0 * [acceleration y]];
[hv setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)
对此:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
HypnosisView *hv = (HypnosisView *)[self view];
float xShift = [hv xShift] * 0.8 + [accel x] * 2.0;
float yShift = [hv yShift] * 0.8 + [accel y] * 2.0;
[hv setXShift:xShift];
[hv setYShift:yShift];
[hv setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)
相当简单的问题:他们从哪里获得这些价值?我一直在查看文档,我发现了一些关于低通滤波器的东西,它建议使用以下代码:
#define kFilteringFactor 0.1
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration …Run Code Online (Sandbox Code Playgroud) 例如,假设我想检测用户是否做了圆圈手势,这样我就可以在游戏中触发某些内容.是否有一个图书馆可以让我只听一些"circleDectected"事件?
如果没有,如果我开发它,有人会发现这样的东西有价值吗?谢谢!
我试图确定利用Android的线性加速数据的好处,而不是简单地应用Androids API参考中提供的低通滤波器,并在此其他stackoverflow问题中讨论.
我问我正试图获得一个记录线性加速的免费应用程序(以及我的其他要求(采样率,将数据写入文件等等)).我找不到一个,所以我考虑使用一个使用标准加速度计记录的应用程序然后我只是将低通滤波器应用于数据.或者,我可以编写自己的应用程序来完成我需要的工作 - 但我在Android开发方面没有太多经验,这需要一些时间.
我想通过PyObjC访问我的iPhone的Accelerometer.这是我的代码:
@objc.signature("v@:@@")
def accelerometer_didAccelerate_(self, accelerometer, acceleration):
msgBox = UIAlertView.alloc().initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles_("Acceleration", str(acceleration.x), self, "OK", None)
msgBox.show()
msgBox.release()
@objc.signature("v@:@")
def applicationDidFinishLaunching_(self, unused):
self.accelerometer = UIAccelerometer.sharedAccelerometer()
self.accelerometer.setUpdateInterval_(1)
self.accelerometer.setDelegate_(self)
#...
Run Code Online (Sandbox Code Playgroud)
问题是str(accelleration.x)返回"<native-selector x of <UIAcceleration: 0x.....>>".我能做什么?
我正在使用xcode 4.2(并将很快升级)和这些代码行
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
代码工作,但我有一个黄色警告说代码是deprecated,我看了新的参考,CoreMotion现在做加速度计.我想知道什么是写上面的东西的新方法..?
我一直在研究AR框架一段时间,我正在尝试从UIAccelerometer(已弃用)更新到CMMotionManager,但是遇到了一些效率问题?
基本上看起来CMMotionManager比UIAccelerometer更大更慢.有没有人以前遇到过CMMotionManager的性能问题?
正如你在这里看到的,我有这个:
accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.updateInterval = 0.01;
[accelerometer setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
和
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
rollingZ = (acceleration.z * kFilteringFactor) + (rollingZ * (1.0 - kFilteringFactor));
rollingX = (acceleration.y * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
if (rollingZ > 0.0) currentInclination = inc_avg(atan(rollingX / rollingZ) + M_PI / 2.0);
else if (rollingZ < 0.0) currentInclination = inc_avg(atan(rollingX / rollingZ) - M_PI / 2.0);
else if (rollingX < 0) currentInclination = …Run Code Online (Sandbox Code Playgroud) 检测设备颠倒的正确值是什么?
我有以下内容,它开始检测用户何时在其背面标题设备.
我使用以下值
float xx = -[acceleration x];
float yy = [acceleration y];
float angle = atan2(yy, xx);
if(angle >= 0.75 && angle <= 2.25)
{
NSLog(@"Upside down");
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个可以在后台运行的导航应用程序.由于设置UIAccelerometer为,这工作正常location.但我也想使用加速度计,以获得有关用户正在做什么的一些额外信息.但是,在后台,UIAccelerometer它不会调用其委托.
有什么办法可以在后台获得当前的加速度吗?
我有一个使用这些的iPhone应用程序(通过UIAccelerometer) - 它可以在iPad上运行吗?
我必须开发一个应用程序.要求如下.
我必须在自行车上放一个像速度计这样的指示器.
iPhone放在汽车的角落里.
iPhone放置在汽车中,不能放在任何地方,甚至无法移动.(用户放置iPhone的车有特殊的地方)
现在,汽车正在顺利进行.
指标表示零 - 这是平滑的方式.
假设汽车经过了一个碰撞.
这些动作应该由iPhone跟踪.如果撞击很大,
如果碰撞很低
其他
我知道如何添加抖动处理程序,如下面的链接所示
但这里iPhone不会动摇吗?它在固定的地方.
应该是什么解决方案?
谢谢你提前帮助我.
uiaccelerometer ×13
ios ×7
iphone ×7
core-motion ×3
objective-c ×2
android ×1
filtering ×1
ios4 ×1
ios5 ×1
ios7 ×1
ipad ×1
math ×1
mobile ×1
performance ×1
pyobjc ×1
sprite-kit ×1