Exemplo n.º 1
0
  @Override
  protected void processInput(String name, String type, Object data, int length, long timestamp) {
    if (name.contains("AccelerometerRMSFFT1.0-10.0-1.0")) {
      mFFT1_10 = (double[]) data;
    } else if (name.contains("AccelerometerRMSVariance")) {
      mVariance = (Double) data;
      mIsVarianceNew = true;
    } else if (name.contains("AccelerometerRMSScale310.0FFT1.0-3.0-1.0")) {
      mScaledFFT1_3 = (double[]) data;
    } else if (name.contains("AccelerometerRMSScale310.0Variance")) {
      mScaledVariance = (Double) data;
      mIsScaledVarianceNew = true;
    } else if (name.contains("GPS")) {
      mSpeed = ((double[]) data)[3];
      mIsSpeedNew = true;
    } else {
      throw new UnsupportedOperationException("Unsupported name: " + name);
    }

    int activity = -1;

    if (mIsSpeedNew && mSpeed > 0.29 && mIsScaledVarianceNew && mScaledFFT1_3 != null) {
      activity = classifyActivityWithGPS(mSpeed, mScaledVariance, mScaledFFT1_3);
      mIsSpeedNew = false;
      mIsScaledVarianceNew = false;
      mScaledFFT1_3 = null;
    } else if (mFFT1_10 != null && mIsVarianceNew) {
      activity = classifyActivityWithoutGPS(mVariance, mFFT1_10);
      mIsVarianceNew = false;
      mFFT1_10 = null;
    }

    if (activity != -1) {
      DebugHelper.log(TAG, "activity = " + activity);
      output(SensorType.ACTIVITY_CONTEXT_NAME, DataType.INTEGER, activity, 0, timestamp);
    }
  }