Skip to content

Commit 2ddcf48

Browse files
author
xf
committed
修改计步算法
1 parent 901b6a7 commit 2ddcf48

File tree

3 files changed

+4
-67
lines changed

3 files changed

+4
-67
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<intent-filter >
3333
<!-- 系统启动完成后会调用-->
3434
<action android:name="android.intent.action.BOOT_COMPLETED"/>
35+
<action android:name="android.intent.action.DATE_CHANGED"/>
3536
<action android:name="android.intent.action.MEDIA_MOUNTED" />
3637
<action android:name="android.intent.action.USER_PRESENT" />
3738
<action android:name="android.intent.action.ACTION_TIME_TICK" />

app/src/main/java/com/base/basepedo/service/StepDcretor.java

Lines changed: 2 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,6 @@ public class StepDcretor implements SensorEventListener {
4545
//初始阈值
4646
float ThreadValue = (float) 2.0;
4747

48-
49-
float avg_v = 0;
50-
float min_v = 0;
51-
float max_v = 0;
52-
53-
int acc_count = 0;
54-
int up_c = 0;
55-
int down_c = 0;
56-
long pre_time = 0;
57-
58-
5948
private final String TAG = "StepDcretor";
6049
// alpha 由 t / (t + dT)计算得来,其中 t 是低通滤波器的时间常数,dT 是事件报送频率
6150
private final float alpha = 0.8f;
@@ -167,57 +156,6 @@ public void onTick(long millisUntilFinished) {
167156

168157
}
169158

170-
171-
void avg_check_v(float v) {
172-
acc_count++;
173-
//求移动平均线
174-
//50ms 1 second 20 , 3 sec60;
175-
if (acc_count < 34) {
176-
//avg_v=((acc_count-1)*avg_v+v)/acc_count;
177-
avg_v = avg_v + (v - avg_v) / acc_count;
178-
} else {
179-
//avg_v=(avg_v*99+v)/100;
180-
avg_v = avg_v * 33 / 34 + v / 34;
181-
}
182-
183-
if (v > avg_v) {
184-
up_c++;
185-
if (up_c == 1) {
186-
//Log.e("wokao","diff:"+(max_v-min_v));
187-
max_v = avg_v;
188-
} else {
189-
max_v = Math.max(v, max_v);
190-
}
191-
if (up_c >= 2) {
192-
down_c = 0;
193-
}
194-
} else {
195-
down_c++;
196-
if (down_c == 1) {
197-
min_v = v;
198-
} else {
199-
min_v = Math.min(v, min_v);
200-
}
201-
if (down_c >= 2) {
202-
up_c = 0;
203-
}
204-
}
205-
//Log.e("wokao","avg_v:"+avg_v+",v:"+v+",uc"+up_c+",dc:"+down_c);
206-
207-
if (up_c == 2 && (max_v - min_v) > 2) {
208-
//
209-
long cur_time = System.currentTimeMillis();
210-
if (cur_time - pre_time >= 500
211-
) {
212-
pre_time = cur_time;
213-
preStep();
214-
Log.e("xfblog", "CURRENT_SETP:" + CURRENT_SETP);
215-
} else {
216-
up_c = 1;
217-
}
218-
}
219-
}
220-
221159
synchronized private void calc_step(SensorEvent event) {
222160
average = (float) Math.sqrt(Math.pow(event.values[0], 2)
223161
+ Math.pow(event.values[1], 2) + Math.pow(event.values[2], 2));
@@ -329,10 +267,8 @@ public void DetectorNewStep(float values) {
329267
* 2.例如记录的9步用户停住超过3秒,则前面的记录失效,下次从头开始
330268
* 3.连续记录了9步用户还在运动,之前的数据才有效
331269
* */
332-
StepDcretor.CURRENT_SETP++;
333-
if (onSensorChangeListener != null) {
334-
onSensorChangeListener.onChange();
335-
}
270+
271+
preStep();
336272
}
337273
if (timeOfNow - timeOfLastPeak >= 250
338274
&& (peakOfWave - valleyOfWave >= initialValue)) {

0 commit comments

Comments
 (0)