From 9932f3fc248511daaaa72dc51d688df1c8cfb6ce Mon Sep 17 00:00:00 2001 From: Patrick Halboth Date: Sun, 20 Jun 2021 18:47:14 +0200 Subject: [PATCH] Probleme mit Database Beschreiben und Lesen. Bitte einheitliches DB Format festelegen und alle Commits mal Pusheb --- app/src/main/AndroidManifest.xml | 1 + .../schockwelle/EarthquakeMapsActivity.java | 22 +++++++++++++------ .../schockwelle/SensorMapsActivity.java | 20 +++++++++++++---- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2fdfb71..8755d0e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,6 +10,7 @@ + > 8 & 0xff),(ip >> 16 & 0xff), (ip >> 24 & 0xff)); mDatenbank = FirebaseDatabase.getInstance().getReference(); - mDatenbank.child("overview").child("IDG1").child("ip").setValue("10.00.00.001"); - mDatenbank.child("overview").child("IDG1").child("vibration").setValue(true); + mDatenbank.child("overview").child("IDG1").child("ip").setValue(ipAddress); + mDatenbank.child("overview").child("IDG1").child("vibration").setValue(vibration); mDatenbank.child("overview").child("IDG1").child("timestamp").setValue(currentTime); //aktueller Zeitstempel wird in Datenbank eingetragen mDatenbank.child("overview").child("IDG1").child("breitengrad").setValue(currentLocation.getLatitude()); //aktueller Breitengrad mDatenbank.child("overview").child("IDG1").child("laengengrad").setValue(currentLocation.getLongitude()); //aktueller Längergrad - mDatenbank.child("overview").child("IDG1").child("amplitude").setValue(1001); + mDatenbank.child("overview").child("IDG1").child("amplitude").setValue(255); } } \ No newline at end of file diff --git a/app/src/main/java/de/edotzlaff/schockwelle/SensorMapsActivity.java b/app/src/main/java/de/edotzlaff/schockwelle/SensorMapsActivity.java index 819060d..67342b2 100644 --- a/app/src/main/java/de/edotzlaff/schockwelle/SensorMapsActivity.java +++ b/app/src/main/java/de/edotzlaff/schockwelle/SensorMapsActivity.java @@ -44,7 +44,7 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa private static final String TAG = "MainActivity"; private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION; private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234; - + private static final double EARTHQUAKE_VELOCITY = 1; // 1 Meter pro Sekunde Erdbebengeschwindigkeit //vars private Boolean mLocationPermissionsGranted = false; private GoogleMap mMap; @@ -75,7 +75,7 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa getVibrationAbility(); //distance(currentLocation.getLatitude(), currentLocation.getLongitude(),breitengrad,laengengrad); //Übergabe zur Berechnung der Distanz zwischen Auslöser und aktuellem Standort //TODO Patrick: die Funktion distance gibt Meter zurück, könntest Du das mit dem Zeitstempel und der Berechnung bis zur Vibration machen? - setVibrationTimer(10000,1000,255); + // setVibrationTimer(10000,1000,255); } private void getLocationPermission() { @@ -108,10 +108,16 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa } } - private long getTimeStampDifference(Date vibrationTime) + private long getTimeStampDifference(float distance) { long diff= 0; //TODO Zeitdifferenz in Millisekunden zwischen aktuellen Uhrzeit und Vibratonszeitstempel berechnen + + + if (distance>0) + { + diff = (long)Math.round(1/(EARTHQUAKE_VELOCITY/distance)); + } return diff; } private void setVibrationTimer(long msDelay, int duration, int amplitude) @@ -286,7 +292,13 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa //####### Auslesen für ing-Werte #######: String amplitudeString = data.child("overview").child("IDG" + i).child("amplitude").getValue().toString(); int amplitude = Integer.parseInt(amplitudeString); - + //TODO Workaround beseiteigen: hier wird immer davon ausgegangen, dass auslösendes Gerät die ID 1 besitzt + if(vibration == true && i == 1) + { + float distance = distance(currentLocation.getLatitude(), currentLocation.getLongitude(),breitengrad,laengengrad); + long delay = getTimeStampDifference(distance); + setVibrationTimer(delay,1000,amplitude); + } //####### Optional zur Kontrolle #######: /* System.out.println("IDG" + i + " - IP:" + data.child("overview").child("IDG" + i).child("ip").getValue().toString());