Android Open Source - Fall_Prevention_2013 Detect Steps Thread






From Project

Back to project page Fall_Prevention_2013.

License

The source code is released under:

Apache License

If you think the Android project Fall_Prevention_2013 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Licensed to UbiCollab.org under one or more contributor
 * license agreements.  See the NOTICE file distributed 
 * with this work for additional information regarding
 * copyright ownership. UbiCollab.org licenses this file
 * to you under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 * // ww  w . j ava 2  s . c  om
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 ******************************************************************************/
package ntnu.stud.valens.stepdetector;

import java.util.List;

import android.content.ContentValues;
import android.net.Uri;

/**
 * A separate thread called by StepMainService to calculate the step time stamps based on a time 
 * series of data. Performed in a separate thread to not interfere with the sensor input in 
 * StepMainService.
 * 
 * @author Elias
 *
 */
public class DetectStepsThread implements Runnable {  
  
  private List<Float> mVectorLengths;
  private List<Long> mTimeStamps;
  private StepMainService activity; 
  private double mMean, mStd;
  
  /**
   * Constructs the new thread for calculating peaks
   * 
   * @param mTimeSeries - The time series of data
   * @param mTimeStamps - The time stamps associated with the time series of data
   * @param activity - The SetpMainService activity that called the thread
   */
  public DetectStepsThread(List<Float> mTimeSeries, List<Long> mTimeStamps, StepMainService activity, double mean, double std) {
    this.mVectorLengths = mTimeSeries;
    this.mTimeStamps = mTimeStamps;
    this.activity = activity;
    mMean = mean;
    mStd = std;
  }

  /**
   * Performs the running of the thread. Calculation follows the given steps:
   *     1) Smoothing the time series data
   *     2) Give each point a peak strength depending on the neighbouring data
   *     3) Find prospective peaks
   *     4) Remove peaks that are too close to constituate individual peaks
   * For a detailed description of the algorithm, see the documentation.
   */
  @Override
  public void run() {
    // Calculate peak indices
    List<Float> smoothedData = Methods.smooth(mVectorLengths, Values.SMOOTHING_WINDOW);
    List<Float> peakStrengths = Methods.calculatePeakStrengths(smoothedData);
    List<Integer> peakIndices = Methods.findPossiblePeaks(peakStrengths, mMean, mStd);
    peakIndices = Methods.removeClosePeaks(peakIndices, peakStrengths);
    storeSteps(peakIndices);
  }

  /**
   * Stores the steps that have been found into the content provider
   * 
   * @param peakIndices - A list of which indices in the timeStamps list that correspond to peaks
   */
  private void storeSteps(List<Integer> peakIndices) {
    for (Integer i : peakIndices) {
      pushToContentProvider(mTimeStamps.get(i));
    }
  }
  
  /**
   * Connects to the content provider to store the time stamp of a single
   * step.
   * 
   * @param Step
   *            - The time stamp of the single step.
   */
  public void pushToContentProvider(Long step) {
    Uri uri = Uri
        .parse("content://ntnu.stud.valens.contentprovider/raw_steps/");
    // Define the row to insert
    ContentValues rowToInsert = new ContentValues();
    rowToInsert.put( "timestamp",step);
    rowToInsert.put( "source", Values.TAG);
    // Insert row, hoping that everything works as expected.
    activity.getContentResolver().insert(uri, rowToInsert);
  }
}




Java Source Code List

ntnu.stud.valens.contentprovider.CPValensDB.java
ntnu.stud.valens.contentprovider.DBSchema.java
ntnu.stud.valens.contentprovider.Main.java
ntnu.stud.valens.contentprovider.ValensDataProvider.java
ntnu.stud.valens.contentprovider.calculations.AlarmManagerBroadcastReceiver.java
ntnu.stud.valens.contentprovider.calculations.ContentProviderHelper.java
ntnu.stud.valens.contentprovider.calculations.ManipulationStarter.java
ntnu.stud.valens.contentprovider.calculations.ManipulatorHelper.java
ntnu.stud.valens.demonstration.Constants.java
ntnu.stud.valens.demonstration.NotificationBroadcastReciever.java
ntnu.stud.valens.demonstration.activity.ClearHistory.java
ntnu.stud.valens.demonstration.activity.ContactPerson.java
ntnu.stud.valens.demonstration.activity.CreateContact.java
ntnu.stud.valens.demonstration.activity.EventDetail.java
ntnu.stud.valens.demonstration.activity.EventList.java
ntnu.stud.valens.demonstration.activity.LaunchActivity.java
ntnu.stud.valens.demonstration.activity.MainScreen.java
ntnu.stud.valens.demonstration.activity.NewContact.java
ntnu.stud.valens.demonstration.activity.Related.java
ntnu.stud.valens.demonstration.activity.Settings.java
ntnu.stud.valens.demonstration.activity.Statistics.java
ntnu.stud.valens.demonstration.activity.WriteName.java
ntnu.stud.valens.demonstration.connectivity.AlarmManagerBroadcastReceiver.java
ntnu.stud.valens.demonstration.connectivity.ContentProviderHelper.java
ntnu.stud.valens.demonstration.connectivity.DatabaseContract.java
ntnu.stud.valens.demonstration.connectivity.DatabaseHelper.java
ntnu.stud.valens.demonstration.datastructures.Contact.java
ntnu.stud.valens.demonstration.datastructures.Event.java
ntnu.stud.valens.demonstration.datastructures.RiskStatus.java
ntnu.stud.valens.demonstration.listadapters.EditContactAdapter.java
ntnu.stud.valens.demonstration.listadapters.EventListAdapter.java
ntnu.stud.valens.demonstration.widget.WidgetProvider.java
ntnu.stud.valens.stepdetector.DetectStepsThread.java
ntnu.stud.valens.stepdetector.LaunchActivity.java
ntnu.stud.valens.stepdetector.Methods.java
ntnu.stud.valens.stepdetector.StepMainServiceStarter.java
ntnu.stud.valens.stepdetector.StepMainService.java
ntnu.stud.valens.stepdetector.Values.java
ntnu.stud.valens.stepdetector.calibration.CalibrationActivity.java
ntnu.stud.valens.stepdetector.calibration.CalibrationStartTask.java
ntnu.stud.valens.stepdetector.calibration.CalibrationThread.java