From cfb0b0c612c6f6208698de2ee7dd7330a8909b1d Mon Sep 17 00:00:00 2001 From: Patrick Halboth Date: Fri, 25 Jun 2021 11:00:13 +0200 Subject: [PATCH] vvv Detection Code vvv --- .idea/vcs.xml | 6 ++ .../detection/EarthquakeLocation.java | 82 ++++++++++++++++++- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java b/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java index d6c60aa..4e4923d 100644 --- a/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java +++ b/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java @@ -1,11 +1,17 @@ package de.edotzlaff.detection; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; import android.os.Build; +import android.os.CountDownTimer; import android.util.Log; import androidx.annotation.RequiresApi; import androidx.fragment.app.FragmentActivity; import android.os.Bundle; +import android.widget.Toast; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; @@ -25,6 +31,20 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa private GoogleMap mMap; private static final String TAGEPIZENTRUM = "Epizentrum"; + //########################################################################################################################################################################## + //################################################################## vvv SensorParameter vvv ############################################################################## + private SensorManager mSensorManager; + private static final float mUpperThreshold = 1.5f; // für Emulator auf 1.5 setzen + private static final float mLowerThreshold = 0.5f; // für Emulator auf 0.5 setzen + private static final long mShakeDetectionLockTimeMicroSeconds = 10000; + private float mAccel; + private float mAccelCurrent; + private float mAccelLast; + private boolean mShakeDetectionIsActive = false; + private boolean mShakeDetected = false; + private boolean allowShakeEvent = true; + //################################################################## ^^^^ SensorParameter ^^^^ ############################################################################ + //########################################################################################################################################################################## @Override protected void onCreate(Bundle savedInstanceState) { @@ -43,8 +63,62 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa //################################################################## ^^^^ DB Code ^^^^ ################################################################################### //########################################################################################################################################################################## + //################################################################## vvv Detection Code vvv ################################################################################### + //########################################################################################################################################################################## + private final SensorEventListener mSensorListener = new SensorEventListener() { + @Override + public void onSensorChanged(SensorEvent event) { + float x = event.values[0]; + float y = event.values[1]; + float z = event.values[2]; + mAccelLast = mAccelCurrent; + mAccelCurrent = (float) Math.sqrt((double) (x * x + y * y + z * z)); + float delta = mAccelCurrent - mAccelLast; + mAccel = mAccel * 0.9f + delta; + // Log.d(TAG,"mAccel: "+ mAccel); + if (mShakeDetectionIsActive) { + if(Math.abs(mAccel) > mUpperThreshold) { + new CountDownTimer(1500, 10) { + public void onTick(long millisUntilFinished) { + if (Math.abs(mAccel) > mUpperThreshold) { + mShakeDetectionIsActive = false; + } else if (Math.abs(mAccel) < mLowerThreshold) { + mShakeDetectionIsActive = true; + this.cancel(); + } + } + + public void onFinish() { + if (Math.abs(mAccel) > mUpperThreshold) { + mShakeDetectionIsActive = false; + mShakeDetected = true; + + earthquakeDetected(); + + } else { + mShakeDetectionIsActive = true; + mShakeDetected = false; + } + } + }.start(); + } + } + } + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + }; + + private void earthquakeDetected() + { + Toast.makeText(getApplicationContext(), "!Earthquake detected!", Toast.LENGTH_SHORT).show(); + //setDataBaseValues(); + } + + //################################################################## ^^^^ Detection Code ^^^^ ################################################################################### + //########################################################################################################################################################################## //########################################################################################################################################################################## //################################################################## vvv Calculate Epicenter vvv ######################################################################### @@ -52,7 +126,7 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa //TODO Jan @RequiresApi(api = Build.VERSION_CODES.O) - public Epizentrum ermittleEpizentrum(DataSnapshot data) + /* public Epizentrum ermittleEpizentrum(DataSnapshot data) { Erdbeben erdbeben = new Erdbeben(); erdbeben.addDetektionssignalList(mapToDetektionssignale(data)); @@ -71,8 +145,8 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa return epizentrum; } - - public ArrayList mapToDetektionssignale(DataSnapshot data) +*/ + /* public ArrayList mapToDetektionssignale(DataSnapshot data) { ArrayList detektionssignale = new ArrayList<>(); for(data.child("overviewnodes").getChildernKey) @@ -90,6 +164,8 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa return detektionssignale; } + */ + //################################################################## ^^^^ Calculate Epicenter ^^^^ ####################################################################### //########################################################################################################################################################################## diff --git a/build.gradle b/build.gradle index ec19a1f..996b567 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath "com.android.tools.build:gradle:4.1.3" + classpath 'com.android.tools.build:gradle:4.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2b1f18d..67ad812 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip