计步器判断运动状态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;
}
}
}
}
要实现跑步与散步者两状态很简单,这里不解释(上一篇文章有介绍)。要实现休息与散步之间的区别也和跑步与散步状态区别类似。但要实现这工能要注意两点。一:休息与散步之间,总变化值(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;
}
}
}
}
相关文章推荐
- 移动Web轮播图IOS卡顿的问题
- PPT演示快捷键
- Ubuntu14.04 安装jdk
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- UVA 10217 A Dinner with Schwarzenegger!!!
- UVA_11437_TriangleFun
- linux route命令学习
- 《设计模式》之策略模式
- XML的dom解析详解
- LeetCode题解——Happy Number
- RSS 2.0 php生成类,快读生成需要xml文件
- SPDY
- 通过开发者工具监控事件触发
- jdk7的新特性
- (笔记)Linux下system()函数的深度理解(整理)
- hdu5505
- 关于C#中的CompareTo使用方法
- ubuntu 中用vim打开txt等文件中文显示乱码的解决方法
- iOS开发拓展篇—音效的播放
- U-Boot启动过程完全分析