package dlr.stressrecognition.elicitation; import java.util.ArrayList; import dlr.stressrecognition.classifier.StressElicitationActivity; import dlr.stressrecognition.utils.AppSharedPrefs; import dlr.stressrecognition.utils.PlaySound; import android.content.Context; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.os.Message; public class PhysicalStress { private Context mContext; private Handler mHandler; public enum activities {RUNNING, WALKING, STANDING, SITTING, LYING, JUMPING, FALLING}; private ArrayList<String> activityTrace = new ArrayList<String>(); private int countdown; private int trace; public PhysicalStress(Context context, Handler mHandler) { this.mContext = context; this.mHandler = mHandler; this.countdown = AppSharedPrefs.getTaskTimer(context) * 60000; this.trace = AppSharedPrefs.getActivityTrace(context); switch(trace) { case 1: activityTrace = new ArrayList<String>(); activityTrace.add("Sitting"); break; case 2: activityTrace = new ArrayList<String>(); activityTrace.add("Walking"); break; case 3: activityTrace = new ArrayList<String>(); activityTrace.add("Running"); break; case 4: activityTrace = new ArrayList<String>(); activityTrace.add("Running"); activityTrace.add("Walking"); activityTrace.add("Sitting"); break; case 5: activityTrace = new ArrayList<String>(); activityTrace.add("Walking"); activityTrace.add("Running"); activityTrace.add("Walking"); activityTrace.add("Sitting"); activityTrace.add("Running"); activityTrace.add("Walking"); break; case 6: activityTrace = new ArrayList<String>(); activityTrace.add("Running"); activityTrace.add("Walking"); activityTrace.add("Sitting"); activityTrace.add("Walking"); activityTrace.add("Sitting"); activityTrace.add("Running"); break; } } private void sendMsg(Bundle data) { Message msg = mHandler.obtainMessage(StressElicitationActivity.EXERCISE_CHANGED); msg.setData(data); mHandler.sendMessage(msg); } public void startExercise() { if(!activityTrace.isEmpty()) { Bundle data = new Bundle(); data.putString("Activity", activityTrace.get(0)); sendMsg(data); activityTrace.remove(0); // Start task timer GameTimer gameTimer = new GameTimer(countdown, 1000); gameTimer.start(); } else { mHandler.sendEmptyMessage(StressElicitationActivity.EXERCISE_FINISHED); } } private class GameTimer extends CountDownTimer { public GameTimer(long millisInFuture, long countDownIntervall) { super(millisInFuture, countDownIntervall); } @Override public void onFinish() { PlaySound.play(mContext); startExercise(); } @Override public void onTick(long millisUntilFinished) { } } }