diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e6408bb..08bd489 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.GreenWatch"> + diff --git a/app/src/main/java/com/example/greenwatch/Beschleunigungssensor.java b/app/src/main/java/com/example/greenwatch/Beschleunigungssensor.java index c565c6d..46205a5 100644 --- a/app/src/main/java/com/example/greenwatch/Beschleunigungssensor.java +++ b/app/src/main/java/com/example/greenwatch/Beschleunigungssensor.java @@ -1,47 +1,139 @@ package com.example.greenwatch; -import android.content.Context; +import androidx.appcompat.app.AppCompatActivity; + import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; -import androidx.appcompat.app.AppCompatActivity; +import android.widget.TextView; -public class Beschleunigungssensor extends AppCompatActivity implements SensorEventListener { +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +public class Beschleunigungssensor extends AppCompatActivity implements SensorEventListener{ private SensorManager bsmanager; - private int sensorType = Sensor.TYPE_ACCELEROMETER; - private Sensor Beschleunigungssensor; + private ArrayList Gesamt_be; + private int sensorType = Sensor.TYPE_GYROSCOPE, zaehler_runde =0, listen_groesse = 10000; + private Sensor sens, sensor_l; + private float x_value = 0, y_value, z_value, Vorbesetzung = 0, gesamt_runde =0; + private double Schwellwert = 0.5, mittelwertsumme = 0.0, Offset; + String Daten, Warnung, Zeitstempel; + TextView Daten_Bsensor, Warnung_Bsensor, test; + private boolean toggle = true, ts_setzen = true, kalibrieren; - public Beschleunigungssensor() { - bsmanager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); - if(bsmanager.getSensorList(sensorType).size()==0) - { - //logger.log("Es gibt den gewünschten Sensor - //nicht"); - Beschleunigungssensor = null; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_beschleunigungssensor); + + Daten_Bsensor = (TextView) findViewById(R.id.DatenBsensor); + Warnung_Bsensor = (TextView) findViewById(R.id.WarnungBsensor); + test = (TextView) findViewById(R.id.test); + + bsmanager = (SensorManager) getSystemService(SENSOR_SERVICE); + if (bsmanager.getSensorList(Sensor.TYPE_GYROSCOPE).size() == 0) { + sens = null; + Daten = "kein B Sensor voranden"; + } else { + sens = bsmanager.getSensorList(sensorType).get(0); } - else - { - Beschleunigungssensor = bsmanager.getSensorList(sensorType).get(0); + Gesamt_be = new ArrayList(); + for (int i = 0; i < listen_groesse; i++){ + Gesamt_be.add(Vorbesetzung); } + kalibrieren = true; } + public static String getTimestamp(){ + Long tslong = System.currentTimeMillis(); + SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy, HH:mm:ss"); + Date date = new Date(tslong); + String result = sdf.format(date); + return result; + } @Override public void onSensorChanged(SensorEvent event) { StringBuilder sb = new StringBuilder(); - sb.append("t=").append(event.timestamp) - .append("\nx=").append(event.values[0]) + sb.append("x=").append(event.values[0])//.append(event.timestamp) .append("\ny=").append(event.values[1]) .append("\nz=").append(event.values[2]); + Daten = sb.toString(); + Daten_Bsensor.setText(Daten); + gesamt_runde = event.values[0] + event.values[1] + event.values[2]; + Gesamt_be.remove(zaehler_runde); + Gesamt_be.add(zaehler_runde, gesamt_runde); + mittelwertsumme = 0.0; + //Mittelwert des Arrays berechnen + for (int i = 0; i < listen_groesse; i++){ + if (Gesamt_be.get(i) < 0){ + mittelwertsumme += (Gesamt_be.get(i) * (-1)); + }else { + mittelwertsumme += Gesamt_be.get(i); + } + } + mittelwertsumme = mittelwertsumme/listen_groesse; + if (kalibrieren == true){ + Offset = mittelwertsumme; + kalibrieren = false; + } + mittelwertsumme = mittelwertsumme - Offset; + StringBuilder testsb = new StringBuilder(); + testsb.append(mittelwertsumme); + String tests = testsb.toString(); + test.setText(tests); + if((mittelwertsumme > Schwellwert ) & (ts_setzen == true)){ + Zeitstempel = getTimestamp(); + StringBuilder ts = new StringBuilder(); + ts.append("Warnung: ") + .append(Zeitstempel) + .append("\n") + .append(mittelwertsumme); + Warnung = ts.toString(); + Warnung_Bsensor.setText(Warnung); + ts_setzen = false; + }else if((mittelwertsumme > Schwellwert) & (ts_setzen == false)){ + } else if ((mittelwertsumme < Schwellwert) & (ts_setzen == false)) { + Warnung_Bsensor.setText(""); + ts_setzen = true; + } + if (zaehler_runde < (listen_groesse -1)){ + zaehler_runde++; + }else { + zaehler_runde = 0; + } + } + //Einstellen um bei Pausen keine Werte zu speichern -> höhere Priorität auf großen Bewegungen + //Vektor verlängern um Pausen geringer zu gewichten + //Kalibrierung: Vektor einmal füllen -> Durchschnitt berechnen, + //bei Schwellwert Ruhe Erwartungswert abziehen + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) {} + + @Override + protected void onResume() { + super.onResume(); + if (sens != null) { + if (bsmanager.registerListener(this, sens, SensorManager.SENSOR_DELAY_GAME)) { + Daten = "Wir haben uns beim Sensor angemeldet"; + } else { + Daten = "Das anmelden hat nicht geklappt"; + } + } } @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) {} - // if Abfrage ob values sich verändert haben -} + protected void onPause() { + super.onPause(); + if (sens != null) { + bsmanager.unregisterListener(this, sens); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/greenwatch/MainActivity.java b/app/src/main/java/com/example/greenwatch/MainActivity.java index 98aa213..d630a83 100644 --- a/app/src/main/java/com/example/greenwatch/MainActivity.java +++ b/app/src/main/java/com/example/greenwatch/MainActivity.java @@ -2,13 +2,40 @@ package com.example.greenwatch; import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; + public class MainActivity extends AppCompatActivity { + private Button Beschleunigungssensor; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + final Button Beschleunigungssensor = (Button) findViewById(R.id.beschleunigungssensor); + Beschleunigungssensor.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(MainActivity.this, Beschleunigungssensor.class); + startActivity(intent); + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + } + + + @Override + protected void onPause() { + super.onPause(); } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_beschleunigungssensor.xml b/app/src/main/res/layout/activity_beschleunigungssensor.xml new file mode 100644 index 0000000..f952c92 --- /dev/null +++ b/app/src/main/res/layout/activity_beschleunigungssensor.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4fc2444..1947c8f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,13 +6,42 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + + + + + + +