diff --git a/.idea/misc.xml b/.idea/misc.xml index 5d19981..ba7052b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,5 @@ - - - - - - - - - - - - - - + diff --git a/app/build.gradle b/app/build.gradle index 792fcd1..983ed45 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 23 - buildToolsVersion '25.0.0' + buildToolsVersion '26.0.2' defaultConfig { applicationId "de.fhws.indoor.sensorreadout" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 42540b0..6c5724c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,10 +1,9 @@ > - - - + package="de.fhws.indoor.sensorreadout"> + > + @@ -13,20 +12,27 @@ - + - - + - + @@ -35,4 +41,4 @@ - + \ No newline at end of file diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java b/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java index 9259c9d..f4f22db 100644 --- a/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/MainActivity.java @@ -22,6 +22,8 @@ import android.widget.TextView; import android.widget.Toast; import android.view.ViewGroup.LayoutParams; +import com.google.android.gms.vision.text.Line; + import java.util.ArrayList; import java.util.List; @@ -29,6 +31,8 @@ import de.fhws.indoor.sensorreadout.sensors.Gps; import de.fhws.indoor.sensorreadout.sensors.GpsNew; import de.fhws.indoor.sensorreadout.sensors.GroundTruth; import de.fhws.indoor.sensorreadout.sensors.Logger; +import de.fhws.indoor.sensorreadout.sensors.PedestrianActivity; +import de.fhws.indoor.sensorreadout.sensors.PedestrianActivityButton; import de.fhws.indoor.sensorreadout.sensors.PhoneSensors; import de.fhws.indoor.sensorreadout.sensors.WiFi; import de.fhws.indoor.sensorreadout.sensors.iBeacon; @@ -44,6 +48,15 @@ public class MainActivity extends Activity { private Button btnStart; private Button btnStop; private Button btnGround; + private PedestrianActivityButton btnWalk; + private PedestrianActivityButton btnStand; + private PedestrianActivityButton btnStairsUp; + private PedestrianActivityButton btnStairsDown; + private PedestrianActivityButton btnElevatorUp; + private PedestrianActivityButton btnElevatorDown; + private PedestrianActivity currentPedestrianActivity; + private PedestrianActivity pastPedestrianActivity; + private int groundTruthCounter = 0; private boolean isInitialized = false; @@ -88,11 +101,23 @@ public class MainActivity extends Activity { btnStop = (Button) findViewById(R.id.btnStop); btnGround = (Button) findViewById(R.id.btnGround); + //get activity Buttons + btnWalk = new PedestrianActivityButton((LinearLayout) findViewById(R.id.btnWalk), PedestrianActivity.WALK); + btnStand = new PedestrianActivityButton((LinearLayout) findViewById(R.id.btnStanding), PedestrianActivity.STANDING); + btnStairsUp = new PedestrianActivityButton((LinearLayout) findViewById(R.id.btnStairsUp), PedestrianActivity.STAIRS_UP); + btnStairsDown = new PedestrianActivityButton((LinearLayout) findViewById(R.id.btnStairsDown), PedestrianActivity.STAIRS_DOWN); + btnElevatorUp = new PedestrianActivityButton((LinearLayout) findViewById(R.id.btnElevatorUp), PedestrianActivity.ELEVATOR_UP); + btnElevatorDown = new PedestrianActivityButton((LinearLayout) findViewById(R.id.btnElevatorDown), PedestrianActivity.ELEVATOR_DOWN); + + //set current activity + btnStand.toggleActivity(); //first activity is standing! + currentPedestrianActivity = PedestrianActivity.STANDING; + //Click Sound final MediaPlayer mpStart = MediaPlayer.create(this, R.raw.go); final MediaPlayer mpStop = MediaPlayer.create(this, R.raw.go); final MediaPlayer mpGround = MediaPlayer.create(this, R.raw.go); - final MediaPlayer mpFailure = MediaPlayer.create(this, R.raw.go); + final MediaPlayer mpFailure = MediaPlayer.create(this, R.raw.error); // log GroundTruth ButtonClicks using sensor number 99 final GroundTruth grndTruth = new GroundTruth(this); @@ -118,6 +143,9 @@ public class MainActivity extends Activity { //Write the first groundTruthPoint grndTruth.writeGroundTruth(groundTruthCounter); + //Write first activity + add(SensorType.PEDESTRIAN_ACTIVITY, PedestrianActivity.STANDING.toString() + ";" + PedestrianActivity.STANDING.ordinal()); + //Disable the spinners groundSpinner.setEnabled(false); pathSpinner.setEnabled(false); @@ -144,6 +172,9 @@ public class MainActivity extends Activity { //Enable the spinners groundSpinner.setEnabled(true); pathSpinner.setEnabled(true); + + //reset activity buttons + setActivityBtn(PedestrianActivity.STANDING); } else{ mpFailure.start(); @@ -171,6 +202,72 @@ public class MainActivity extends Activity { }); + btnWalk.getLayout().setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if(isInitialized) { + setActivityBtn(PedestrianActivity.WALK); + } + else{ + mpFailure.start(); + } + } + }); + + btnStand.getLayout().setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if(isInitialized) { + setActivityBtn(PedestrianActivity.STANDING); + } + else{ + mpFailure.start(); + } + } + }); + + btnStairsUp.getLayout().setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if(isInitialized) { + setActivityBtn(PedestrianActivity.STAIRS_UP); + } + else{ + mpFailure.start(); + } + } + }); + + btnStairsDown.getLayout().setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if(isInitialized) { + setActivityBtn(PedestrianActivity.STAIRS_DOWN); + } + else{ + mpFailure.start(); + } + } + }); + + btnElevatorUp.getLayout().setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if(isInitialized) { + setActivityBtn(PedestrianActivity.ELEVATOR_UP); + } + else{ + mpFailure.start(); + } + } + }); + + btnElevatorDown.getLayout().setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if(isInitialized) { + setActivityBtn(PedestrianActivity.ELEVATOR_DOWN); + } + else{ + mpFailure.start(); + } + } + }); + //all Sensors final PhoneSensors phoneSensors = new PhoneSensors(this); sensors.add(phoneSensors); @@ -231,6 +328,40 @@ public class MainActivity extends Activity { } + private void setActivityBtn(PedestrianActivity act){ + + // set and write new activity + if(currentPedestrianActivity != act){ + + // toggle past and current activity + PedestrianActivity[] tmpActArray = new PedestrianActivity[] {currentPedestrianActivity, act}; + + for(PedestrianActivity a : tmpActArray){ + switch (a) { + case WALK: btnWalk.toggleActivity(); + break; + case STANDING: btnStand.toggleActivity(); + break; + case STAIRS_UP: btnStairsUp.toggleActivity(); + break; + case STAIRS_DOWN: btnStairsDown.toggleActivity(); + break; + case ELEVATOR_UP: btnElevatorUp.toggleActivity(); + break; + case ELEVATOR_DOWN: btnElevatorDown.toggleActivity(); + break; + default: + break; + } + } + + currentPedestrianActivity = act; + add(SensorType.PEDESTRIAN_ACTIVITY, act.toString() + ";" + act.ordinal()); + } else { + //do nothin + } + + } private void start() { loadCounterAny = 0; diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PedestrianActivity.java b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PedestrianActivity.java new file mode 100644 index 0000000..1e7042b --- /dev/null +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PedestrianActivity.java @@ -0,0 +1,24 @@ +package de.fhws.indoor.sensorreadout.sensors; + +/** + * Created by toni on 10/01/18. + */ + +public enum PedestrianActivity { + + WALK(0), + STANDING(1), + STAIRS_UP(2), + STAIRS_DOWN(3), + ELEVATOR_UP(4), + ELEVATOR_DOWN(5), + ; + + private int id; + + PedestrianActivity(final int id) { + this.id = id; + } + + public final int id() {return id;} +} diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PedestrianActivityButton.java b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PedestrianActivityButton.java new file mode 100644 index 0000000..288732f --- /dev/null +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PedestrianActivityButton.java @@ -0,0 +1,35 @@ +package de.fhws.indoor.sensorreadout.sensors; + +import android.graphics.Color; +import android.view.View; +import android.widget.LinearLayout; + +/** + * Created by toni on 10/01/18. + */ + +public class PedestrianActivityButton { + + private LinearLayout btn; + private boolean isActivated = false; + private PedestrianActivity whatActivity; + + public PedestrianActivityButton(LinearLayout btn, PedestrianActivity act){ + this.btn = btn; + this.whatActivity = act; + } + + public void toggleActivity(){ + isActivated = !isActivated; + + if(isActivated){ + btn.setBackgroundColor(Color.parseColor("#F9D737")); + } else { + btn.setBackgroundColor(Color.parseColor("#B2B2B2")); + } + } + + public LinearLayout getLayout(){ + return btn; + } +} diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PhoneSensors.java b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PhoneSensors.java index 3505708..0103455 100644 --- a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PhoneSensors.java +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/PhoneSensors.java @@ -139,6 +139,7 @@ public class PhoneSensors extends mySensor implements SensorEventListener{ @Override public void onSensorChanged(SensorEvent event) { + /* // to compare with the other orientation if(event.sensor.getType() == Sensor.TYPE_ORIENTATION) { @@ -152,8 +153,9 @@ public class PhoneSensors extends mySensor implements SensorEventListener{ } } + */ - else if(event.sensor.getType() == Sensor.TYPE_HEART_RATE) { + if(event.sensor.getType() == Sensor.TYPE_HEART_RATE) { // inform listeners if (listener != null){ diff --git a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/SensorType.java b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/SensorType.java index 7a21578..4633911 100644 --- a/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/SensorType.java +++ b/app/src/main/java/de/fhws/indoor/sensorreadout/sensors/SensorType.java @@ -23,6 +23,7 @@ public enum SensorType { HEART_RATE(15), GPS(16), + PEDESTRIAN_ACTIVITY(50), GROUND_TRUTH(99), GROUND_TRUTH_PATH(-1), diff --git a/app/src/main/res/drawable/ic_elevator_down.xml b/app/src/main/res/drawable/ic_elevator_down.xml new file mode 100644 index 0000000..d0fd2f7 --- /dev/null +++ b/app/src/main/res/drawable/ic_elevator_down.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/ic_elevator_up.xml b/app/src/main/res/drawable/ic_elevator_up.xml new file mode 100644 index 0000000..1e49ae7 --- /dev/null +++ b/app/src/main/res/drawable/ic_elevator_up.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/ic_stairs_down.xml b/app/src/main/res/drawable/ic_stairs_down.xml new file mode 100644 index 0000000..df584b2 --- /dev/null +++ b/app/src/main/res/drawable/ic_stairs_down.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/drawable/ic_stairs_up.xml b/app/src/main/res/drawable/ic_stairs_up.xml new file mode 100644 index 0000000..166cc2b --- /dev/null +++ b/app/src/main/res/drawable/ic_stairs_up.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/drawable/ic_standing.xml b/app/src/main/res/drawable/ic_standing.xml new file mode 100644 index 0000000..d4a1f99 --- /dev/null +++ b/app/src/main/res/drawable/ic_standing.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/drawable/ic_walk.xml b/app/src/main/res/drawable/ic_walk.xml new file mode 100644 index 0000000..1788d1f --- /dev/null +++ b/app/src/main/res/drawable/ic_walk.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d8630ed..83f3a3f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,103 +1,317 @@ - - -