试图使我的Fitbit与Android应用程序兼容。它有助于检测跌倒并向家人发送短信通知。
它应该工作的方式是: 使用Fitbit的加速度,它会检测到跌倒并在智能手机上发送连续的哔哔声,您必须在10-15秒钟内手动将其重置,以免发生错误的跌落(跌倒检测算法并非100%准确,因此应该给您时间重置它)。手动重置后,它应该可以再次工作。
它是如何工作的:它只发出一次哔声,然后自动重置。稍后可以再次使用,是的但是仍然存在相同的问题。我希望我可以通过添加20秒的延迟来解决该问题,尽管我知道这根本不是最佳实践。
试图在最后一个If条件语句中添加一个返回值,但没有改变。 想到只用一会儿就可以了
public void checkFall() {
int i,j;
double minAcc, maxAcc;
long fallWindowSamp = (mFallWindow*mSdData.mSampleFreq)/1000; // Convert ms to samples.
Log.v(TAG, "check_fall() - fallWindowSamp=" +fallWindowSamp);
// Move window through sample buffer, checking for fall.
mSdData.fallAlarmStanding = false;
if (mFallActive) {
for (i = 0; i < mSdData.mNsamp - fallWindowSamp; i++) { // i = window start point
// Find max and min acceleration within window.
minAcc = mSdData.rawData[i];
maxAcc = mSdData.rawData[i];
for (j = 0; j < fallWindowSamp; j++) { // j = position within window
if (mSdData.rawData[i + j] < minAcc) minAcc = mSdData.rawData[i + j];
if (mSdData.rawData[i + j] > maxAcc) maxAcc = mSdData.rawData[i + j];
}
if ((minAcc < mFallThreshMin) && (maxAcc > mFallThreshMax)) {
Log.d(TAG, "check_fall() - minAcc=" + minAcc + ", maxAcc=" + maxAcc);
Log.d(TAG, "check_fall() - ****FALL DETECTED****");
mSdData.fallAlarmStanding = true;
// return;
}
}
} else {
Log.v(TAG,"check_fall - mFallActive is false - doing nothing");
}
//if (debug) APP_LOG(APP_LOG_LEVEL_DEBUG,"check_fall() - minAcc=%d, maxAcc=%d",
// minAcc,maxAcc);
}