在我的应用程序中,我想测量加速度计静止的时间.
例如,如果我将阈值设置为0.4 m/s且加速计速度始终低于此值,则表示手机处于静止状态(阈值是计算值的抖动).
我希望能够计算手机静止的时间以及在休息时达到一定的时间,然后对该事件作出反应.
我已经让加速度计工作正常,我只需要算一下这个时间,我不熟悉如何做到这一点,任何人都可以帮助我吗?提前致谢
解:
start = System.currentTimeMillis();
if (vectorTotal > 10.1 || vectorTotal < 9.5){
timelimit = (System.currentTimeMillis()+ 10000);
}
else if (start >= timelimit){
checkUser();
timelimit = (System.currentTimeMillis()+ 10000);
}
Run Code Online (Sandbox Code Playgroud) 我正在研究一款适用于Android的简单罗盘类应用程序,在Xoom WiFi上进行测试.加速度计读数的准确性始终如一SensorManager.SENSOR_STATUS_UNRELIABLE.磁场读数总是准确的SensorManager.SENSOR_STATUS_ACCURACY_HIGH.这可能是Xoom中的错误,还是我的代码中存在问题?
onCreate:
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
accelGravitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
onResume:
mSensorManager.registerListener(accelListener, accelGravitySensor, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(magListener, magSensor, SensorManager.SENSOR_DELAY_NORMAL);
private final SensorEventListener accelListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
Log.d(TAG, "accel (" + event.values[0] + ", " + event.values[1] + ", " + event.values[2] + ") accuracy=" + accuracyTag(event.accuracy));
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用Android OS的应用程序,我需要知道如何计算设备在垂直方向上的移动.
例如,设备处于静止状态(A点),用户手拿它(B点),现在A点和B点之间有高度变化,我该如何计算?
我已经阅读了有关传感器和加速度计的文章,但我找不到任何可以帮助我的东西.有人有主意吗?
我正在为iPhone和Android平台开发简单的移动应用程序,我正在寻找能够在使用内部加速度计检测某个手势时触发某些事件(函数)的算法.我使用的是Phonegap,它使用HTML5和javascript,它在预先设定的时间间隔内从加速度计读取三个坐标(x,y和z)(例如每隔0.04秒).
我写了一个简单的函数来检测摇动动作并且它工作得非常好但它是原始的(它只能检测到震动,而不是方向) - 我想要检测一些其他手势,例如: - 倾斜(向左/向右) - 向上/向下摇 - 左/右摇 - 圆周运动 - 颠倒 - 等......
是否有人能够根据我拥有的输入值(x,y,z和每次调用的时间间隔)计算(检测)这种手势的算法(或至少是数学公式/函数)?
我正在寻找任何编程语言的代码(我将自己重写为javascript.提前感谢!
我正在尝试构建一个基于Kinect和iPhone的应用程序.
我试图根据kinect返回的轨迹计算我的手在XY和Z轴的每一个上随时间的加速度.基本上我选择的0.5秒或15帧(标准时间间隔dt)和3点,( x0,x1和x2)超过其通过0.5秒separeted时间.首先我要提一下,以米为单位提到3点的位置.通过使用这些点,我计算两种速度(v0 = (x1 - x0) / dt和v1 = (x2 - x1) / dt).最后,通过使用这个速度,我计算的加速度x1和x2作为acc = (v1 - v0) / dt.
我在每一帧重复这些计算,然后获得一系列加速度.
正如我所说,我还有一部iPhone,我想看看我用哪只手拿着我的iPhone,左手还是右手.我想通过尝试将我的手的加速度与保持在正确位置的iPhone的加速度相匹配来做到这一点,这样我就拥有相同的轴系统.
唯一的问题是我的加速度和手机的加速度之间存在巨大差异.
每个轴的手机加速读数介于-2和2之间,而我的介于-10和10之间.我应该如何解释iPhone的加速度,以获得类似于以米/秒为单位的采矿措施?
我正在开发一款需要检测垂直运动的Android应用程序.向上移动平板电脑时,陀螺仪,加速度计和线性加速度传感器会给出相应的值,表示向上或向下运动.
我遇到的问题是,当您将平板电脑向用户倾斜或远离用户时,这些传感器也会读取向上/向下的动作.例如,陀螺仪中的x值表示垂直平面.但是当您向前倾斜设备时,x值将会改变.当我做这个动作时,读取垂直运动的同一个传感器为此读取一个值.

其他传感器也是如此.我试图使用方向与陀螺仪结合来制作条件语句,如果音高没有变化,但是x变量上升/下降,那么我们就有垂直运动.这个问题是,如果用户向上移动但略微倾斜,它将不再起作用.我也试过这样做,如果倾斜有变化,那么就没有垂直运动了.但是迭代速度如此之快,以至于倾斜度可能会有1/100秒的变化,但是接下来却没有.
有什么方法我只能读取垂直变化而不是设备间距的变化吗?
编辑:
"请提出一个数学上合理的定义,你认为'向上移动'."这是我最初的问题,我如何编写一个函数来定义平板电脑何时向上或向下移动?我认为垂直翻译向上移动.现在我该怎么检测到这个?我根本不知道从哪里开始,谢谢.
例如,Location Spoofer通过使用Access Mock Location权限发出假位置,我可以让我的设备发出一个信号,表明它存在于我想要的任何地方.
以同样的方式,我可以伪造Accelerometer数据来模拟用户可以处于的各种情况吗?
提前致谢.
我正在尝试使用Fitbit的数据来抓住我的手部动作.
然后我在这里找到Fitbit Api:https://wiki.fitbit.com/display/API/Fitbit+Resource+Access+API
在收集资源部分,我似乎只能获得一些数据,如身体测量,体重,近期活动,朋友等.
所以,我的问题是,Fitbit是否提供任何API来帮助我获取实时加速度计数据和陀螺仪数据?
我尝试重现以下动画:
1)实施加速度计没有问题:
public class Accelerometer extends AppCompatActivity implements SensorEventListener {
private SensorManager senSensorManager;
private Sensor senAccelerometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
// Get a reference to a SensorManager
senSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
// This method will update the UI on new sensor events
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Sensor sensor = sensorEvent.sensor;
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float x = sensorEvent.values[0];
float y = sensorEvent.values[1];
}
}
@Override
public void onAccuracyChanged(Sensor arg0, int …Run Code Online (Sandbox Code Playgroud) 我已经为Apple Watch创建了一个应用程序.逻辑是,当用户举手并点击应用程序中的按钮时.那时我将获取加速度计值.每当用户举手并达到捕获位置时,我都必须向iPhone发送消息.
对我来说正确地得到了值但是,它总是会根据加速度计给出值.这意味着用户不会抬起手但加速度计值匹配.因此值将发送到移动设备.
func startUpadateAccelerometer() {
self.motionManager.accelerometerUpdateInterval = 1.0 / 10.0
self.motionManager.startAccelerometerUpdates(to: OperationQueue()) { (accelerometerData, error) -> Void in
guard accelerometerData != nil else
{
print("There was an error: \(String(describing: error))")
return
}
DispatchQueue.main.async {
if(self.can_reset){
let differenceX : Bool = self.validateButtom(currentValue: accelerometerData!.acceleration.x, inititalValue: self.gravityReference.x)
let differenceY : Bool = self.validateButtom(currentValue: accelerometerData!.acceleration.y, inititalValue: self.gravityReference.y)
if(differenceX && differenceY && self.gravityOffsetDifference(currentValue: accelerometerData!.acceleration.x, referenceValue: self.gravityReference.x ) && self.gravityOffsetDifference(currentValue: accelerometerData!.acceleration.y, referenceValue: self.gravityReference.y)){
WKInterfaceDevice().play(.success)
// self.addLog(_logStr: EventsTypes.Achievements1.rawValue)
self.logString += String(format: "X: %0.3f Y: %0.3f Z: …Run Code Online (Sandbox Code Playgroud)