我现在没有Android手机.但在我的应用程序中,我需要使用加速度计值.如何在模拟环境中执行此操作?
是否有一种特殊的方法来获得iPhone定位?我不需要它在度或弧度,我希望它返回一个UIInterfaceOrientation对象.我只需要它来构建if-else结构
if(currentOrientation==UIInterfaceOrientationPortrait ||currentOrientation==UIInterfaceOrientationPortraitUpsideDown) {
//Code
}
if (currentOrientation==UIInterfaceOrientationLandscapeRight ||currentOrientation==UIInterfaceOrientationLandscapeLeft ) {
//Code
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
在谷歌飞度的应用程序,在安装时,测量你在走路或跑步的时间,也步数所有的时间.然而,奇怪的是,使用它似乎并没有耗尽电池.其他应用程序,如Moves,似乎可以非常准确地记录步数,因为它不断监控GPS和加速度计,因此它会消耗大量功率.
我想象几种可能性:
该应用程序仍然感觉神奇.一直计数步骤而没有可察觉的电池消耗.
我正在使用算法开发一些应用程序,如Runtastic计步器,但我没有得到结果之间的任何相似性.
我的代码如下:
public void onSensorChanged(SensorEvent event)
{
Sensor sensor = event.sensor;
synchronized (this)
{
if (sensor.getType() == Sensor.TYPE_ORIENTATION) {}
else {
int j = (sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? 1 : 0;
if (j == 1) {
float vSum = 0;
for (int i=0 ; i<3 ; i++) {
final float v = mYOffset + event.values[i] * mScale[j];
vSum += v;
}
int k = 0;
float v = vSum / 3;
//Log.e("data", "data"+v);
float direction = (v > …Run Code Online (Sandbox Code Playgroud) 我正在开发汽车加速跟踪应用程序.我使用标准加速度计,事先在特定位置校准.
然后,假设手机的方向没有改变,我将加速度计数据记录了指定的时间并计算了移动参数,其中一个是测试结束时的汽车速度.
它在一条平直的水平道路上工作得相当好:几个百分点的误差.
但后来我发现,在API级别10中有一个叫做的虚拟传感器TYPE_LINEAR_ACCELERATION,据我所知,它必须做我需要的东西:过滤重力,方向变化 - 所以我可以使用它并获得纯粹的线性加速度移动设备.
但在现实生活中......
我做了一个简单的应用程序,做了一点测试:
//public class Accelerometer implements SensorEventListener { ...
public void onSensorChanged(SensorEvent se)
{
if(!active)
return;
lastX = se.values[SensorManager.DATA_X];
lastY = se.values[SensorManager.DATA_Y];
lastZ = se.values[SensorManager.DATA_Z];
long now = System.currentTimeMillis();
interval = now - lastEvetn;
lastEvetn = now;
out.write(Float.toString(lastX) + ";" +
Float.toString(lastY) + ";" +
Float.toString(lastZ) + ";" +
Long.toString(interval) + "\n");
}
Run Code Online (Sandbox Code Playgroud)
我用以下参数绑定一个监听器:
mSensorManager.registerListener(linAcc,
mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
SensorManager.SENSOR_DELAY_GAME);
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我分析数据转储时,计算速度,比如V = V0 + AT,V0 = 0首先,然后 - 之前的间隔速度,A = …
在iPhone上使用陀螺仪需要一些帮助.在特定情况下,我无法理解CMAttitude关于俯仰,翻滚和偏航的读数.
这是我的代码
- (void)handleDeviceMotion:(CMDeviceMotion*)motion {
NSLog(@"Yaw %f ",attitude.yaw * 180 / M_PI);
NSLog(@"Pitch %f ",attitude.pitch * 180 / M_PI);
NSLog(@"Roll %f ",attitude.roll * 180 / M_PI);
}
Run Code Online (Sandbox Code Playgroud)
我们假设iPhone正在平面上,如下图所示:

俯仰,滚转和偏航是(几乎)0度,绕轴的任何转弯都会返回可理解的读数.例如,向右转动设备,Yaw减小,Pitch and Roll保持为0.
现在iPhone处于以下位置:

并再次开始测量.
读数为:Yaw = 0,Pitch = 90,Roll = 0
由于设备围绕该轴旋转,因此间距增加.
将iPhone移动到这个位置:

读数为:Yaw = 30,Pitch = 90,Roll = 0
再一次,由于设备围绕偏航轴旋转,因此该值会改变而其他值则不会改变.
围绕Roll轴移动设备:

读数为:Yaw = 0,Pitch = 90,Roll = -20.
现在我无法理解.将iPhone移动到半径为R(R> 0)的圆周,如下图所示:

Yaw改变同时Pitch and Roll没有.
我原以为Yaw保持不变而Roll已经改变了.
如何补偿这一点,因为我对用户制作的偏航轴周围的旋转感兴趣?
我遇到的另一个问题是漂移.iPhone处于第二个图中描述的位置,长时间(1分钟或更长时间)在我的手中拍摄.偏航不断增加.知道如何补偿漂流吗?
先感谢您
更新 我跟随凯的建议,但没有任何改变.关于我的代码的更多细节.我想仅在用户围绕偏航轴旋转设备时使用Yaw旋转UIImage.这是有效的,但是当用户围绕其自己的垂直轴旋转时,偏转会发生变化.我认为这是不正确的,因为当用户围绕其垂直轴移动时,设备不会围绕其自己的偏航轴旋转.可能是我错了.这是我的原始代码:
- (void)handleDeviceMotion:(CMDeviceMotion*)motion {
CMAttitude *attitude = motion.attitude;
NSLog(@"Yaw %f ",attitude.yaw * …Run Code Online (Sandbox Code Playgroud) 可以假设大多数用户设备都有陀螺仪吗?换句话说,我会在我的应用中使用陀螺仪排除相当多的人吗?
我正在制作儿童故事书应用程序,我希望用户能够围绕偏航轴倾斜设备,来回移动摇椅.它只是应用程序的一小部分,并不一定非常精确.我应该使用一个传感器吗?
我正在尝试构建一个应用程序,用于从手机上的加速度计读取值,该应用程序仅支持Android 2.1.
如何使用兼容2.1的代码读取加速度计?
适用于iOS 5的全新Nike + GPS应用程序能够在后台处理加速度计事件(从而允许室内跑步机跟踪).这怎么可能?当我将我的应用程序放在后台时,它会停止接收事件.我使用标准的UIAccelerometer API.
我正在使用android项目.我需要FFT算法来处理android加速度计数据.在android sdk中有FFT库吗?
accelerometer ×10
android ×7
gyroscope ×2
algorithm ×1
fft ×1
google-fit ×1
gps ×1
ios ×1
ios5 ×1
ipad ×1
iphone ×1
java ×1
objective-c ×1
sensor ×1