您的位置:首页 > 其它

计步器判断运动状态2

2015-10-22 19:39 309 查看
由于计步器需要更新根据了人运动状态自动设置灵敏度的功能,发现上次发表的《实现计步器中的判断运动状态功能》文章缺少了人休息时的这一状态,这里补上这一状态。

要实现跑步与散步者两状态很简单,这里不解释(上一篇文章有介绍)。要实现休息与散步之间的区别也和跑步与散步状态区别类似。但要实现这工能要注意两点。一:休息与散步之间,总变化值(bianhuazhi )很小,而且也要设置散步时总变化值的最大值,这最大值不能根据跑步的最小值设置,要根据休息状态时的总变化值的减的量射,不然数值太大就要休息很久才能显示休息状态,这里重新设置了一个;二:如果用判断跑步与散步时用的总变化量(bianhuazhi)就会出现矛盾,因为跑步时总变化值已经设置了一个最大值,散步在设置一个最大值就会运行不了。因此,我用了一个新变量(sanbu_bianhuazhi )来解决这两个问题。还不明白这代码的可以去看看上一篇文章,能理解上篇文章的相信这里也能看懂。

由于代码是刚想出来,快毕业找工作忙碌,还没有经过优化,但功能已经准确实现。

public void onSensorChanged(SensorEvent event) {

// TODO Auto-generated method stub

float[] v = event.values;

StringBuilder sb = new StringBuilder();

sb.append(v[0]);

sb.append("\n" + v[1]);

sb.append("\n" + v[2]);

// sb.append("\n步数=" + zongchaopincishu/ (chaohelicishu_1 /2));

// sb.append("\n路程=" + lucheng);

// sb.append("\n速度sudu=" + sudu);

sb.append("\n运动状态state_motion=" + zhuangtai);

//sb.append("\n值=" + bianhuazhi);

//sb.append("\n值=sanbu" + sanbu_bianhuazhi);

text.setText(sb.toString());

heli = v[0] * v[0] + v[1] * v[1] + v[2] * v[2];

bianhuazhi = bianhuazhi + (heli - 98) * (heli - 98);

sanbu_bianhuazhi = sanbu_bianhuazhi + (heli - 98) * (heli - 98);

// Log.i("msg", bianhuazhi);

bianhuazhi = bianhuazhi - 7000;

sanbu_bianhuazhi = sanbu_bianhuazhi - 7000;

if (bianhuazhi > 2500000) {

zhuangtai = "跑步";

if (bianhuazhi > 3030000) {

bianhuazhi = 3030000;

sanbu_bianhuazhi = 3030000;

}

;

} else {

sanbu_bianhuazhi = sanbu_bianhuazhi + 6800;

if (sanbu_bianhuazhi > 100000&&heli <400) {

zhuangtai = "散步";// 判断状态

if (sanbu_bianhuazhi >= 102000) {

sanbu_bianhuazhi = 102000;

}

} else {

zhuangtai = "休息";

if (bianhuazhi < 0) {

bianhuazhi = 0;

sanbu_bianhuazhi = 0;

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: