实现计步器中的判断运动状态功能

          为了准确判断出人的运动状态是走路还是跑步,这里用来一种类似存能量的原理,当人跑步时就会往有一个漏洞的容器存储能量,由于存储量大于漏出量,容器能量值会上升,当容器能量值到一定值时可以判断为跑步状态。当人散步时,由于存储量小于漏出量,容器能量值会下降,当容器存储量低于某个值时可判断为散步。

        当人走路时重力传感器传回来的数值的平方和会比较接近98,当人跑步时就会偏离98比较大,所以可以把跑步时偏离98的值平方“(heli - 98) * (heli - 98)"减去走路时偏离98的值”7000这个值是走路时偏离98的最大值的平方(7000)“可以使bianhuazhi一直增大,当bianhuazhi大于2500000时可以判断出为跑步,反之为散步。为了使bianhuazhi不会一直变大,用if(bianhuazhi>3030000){bianhuazhi=3030000;};来限制最大值。如果不是跑步,由于(heli - 98) * (heli - 98)<7000,变化值会一直变大,所以用if(bianhuazhi<0){bianhuazhi=0;};限制最小值。

public void onSensorChanged(SensorEvent event) {
float[] v = event.values;
showValue();

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

             bianhuazhi = bianhuazhi+(heli - 98) * (heli - 98)-7000;
            if (bianhuazhi > 2500000) {
             zhuangtai = "跑步";
          if(bianhuazhi>3030000){bianhuazhi=3030000;};
           }else{

           zhuangtai = "散步";

            if(bianhuazhi<0){bianhuazhi=0;};

           }



你可能感兴趣的:(实现计步器中的判断运动状态功能)