From b88f45b7280a989efdbf8ac00392963bc9a03aea Mon Sep 17 00:00:00 2001 From: Raz492 Date: Fri, 25 Jun 2021 18:23:44 +0200 Subject: [PATCH] Pre-AlphaV5 --- .../detection/EarthquakeLocation.java | 74 ++++++++++++++++--- .../de/edotzlaff/detection/MainActivity.java | 23 ++++-- 2 files changed, 79 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java b/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java index 37f57dd..464e708 100644 --- a/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java +++ b/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java @@ -7,6 +7,8 @@ import android.hardware.SensorManager; import android.os.Build; import android.os.CountDownTimer; import android.util.Log; + +import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.fragment.app.FragmentActivity; @@ -20,10 +22,18 @@ import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; + import de.edotzlaff.detection.detektion.Detektionssignal; import de.edotzlaff.detection.detektion.Epizentrum; import de.edotzlaff.detection.detektion.Erdbeben; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Objects; @@ -31,6 +41,7 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa private GoogleMap mMap; private static final String TAGEPIZENTRUM = "Epizentrum"; + private DatabaseReference mDatenbank; @Override protected void onCreate(Bundle savedInstanceState) { @@ -55,7 +66,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)); @@ -72,29 +83,68 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa Log.i(TAGEPIZENTRUM, "Epizentrum konnte ermittelt werden, Koordinaten: " + epizentrum.getKoordinaten().getX() + " " + epizentrum.getKoordinaten().getY()); } return epizentrum; + } + + //Aufruf der DB + public void getDataBaseValuesNoListener() + { + mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection"); + mDatenbank.get().addOnCompleteListener(new OnCompleteListener() { + @RequiresApi(api = Build.VERSION_CODES.O) + @Override + public void onComplete(@NonNull Task task) { + if (!task.isSuccessful()) { + System.out.println("Datenbank Fehler in getDataBaseValuesNoListener"); + } + else { + mapToDetektionssignale(task.getResult()); + doSomething(task.getResult()); + } + } + }); + } + + public void doSomething(DataSnapshot data) + { } -*/ - /* public ArrayList mapToDetektionssignale(DataSnapshot data) + + @RequiresApi(api = Build.VERSION_CODES.O) + public ArrayList mapToDetektionssignale(DataSnapshot data) { ArrayList detektionssignale = new ArrayList<>(); - for(data.child("overviewnodes").getChildernKey) + for(int i=1; i<=3; i++) { Detektionssignal detektionssignal = new Detektionssignal(); - detektionssignal.setAnkunftsZeit(); - detektionssignal.setDeviceId(); - detektionssignal.setKoordinaten(data.child("overviewnodes").child("IDG" + f).child("d_breitengrad").getValue().toString(), - data.child("overviewnodes").child("IDG" + f).child("e_laengengrad").getValue().toString()); - detektionssignal.setGeschwErdbeben(); + //LocalDateTime als LocalDateTime + String localdatetimeString = data.child("IDG" + i).child("b_localdatetime").getValue().toString(); + DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; + LocalDateTime localdatetime = LocalDateTime.parse(localdatetimeString, formatter); + detektionssignal.setAnkunftsZeit(localdatetime); + + //ID als String + detektionssignal.setDeviceId(data.child("IDG" + i).child("a_androidid").getValue().toString()); + + //Koordinaten als??? + String breitengradString = data.child("IDG" + i).child("d_breitengrad").getValue().toString(); + String laengengradString = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); + double breitengrad = Double.parseDouble(breitengradString); + double laengengrad = Double.parseDouble(laengengradString); + //TODO @Jan In welchem Datenformat muss ich breitengrad und laengengrad hier einfügen? Außerdem welche Einheit? m/s oder km/s? + //detektionssignal.setKoordinaten(breitengrad, laengengrad); + + //Wellengeschwindigkeit als int + String welle = data.child("IDG" + i).child("w_wellengeschwindigkeit").getValue().toString(); + int wellengeschwindigkeit = Integer.parseInt(welle); + detektionssignal.setGeschwErdbeben(wellengeschwindigkeit); + + //Detektionssignal detektionssignale.add(detektionssignal); } - return detektionssignale; } - */ - //################################################################## ^^^^ Calculate Epicenter ^^^^ ####################################################################### //########################################################################################################################################################################## diff --git a/app/src/main/java/de/edotzlaff/detection/MainActivity.java b/app/src/main/java/de/edotzlaff/detection/MainActivity.java index 1791085..fe9c675 100644 --- a/app/src/main/java/de/edotzlaff/detection/MainActivity.java +++ b/app/src/main/java/de/edotzlaff/detection/MainActivity.java @@ -251,6 +251,7 @@ public class MainActivity extends AppCompatActivity { String laengengrad; String timestamp; String ampltiude; + String welle; int emptyIDG =0; for (int i=1; i<=data.getChildrenCount(); i++) @@ -261,8 +262,9 @@ public class MainActivity extends AppCompatActivity { laengengrad = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); timestamp = data.child("IDG" + i).child("h_timestamp").getValue().toString(); ampltiude = data.child("IDG" + i).child("i_amplitude").getValue().toString(); + welle = data.child("IDG" + i).child("w_wellengeschwindigkeit").getValue().toString(); - if(androidid.isEmpty() && localedatetime.isEmpty() && breitengrad.isEmpty() && laengengrad.isEmpty() && timestamp.isEmpty() && ampltiude.isEmpty()) + if(androidid.isEmpty() && localedatetime.isEmpty() && breitengrad.isEmpty() && laengengrad.isEmpty() && timestamp.isEmpty() && ampltiude.isEmpty() && welle.isEmpty()) { emptyIDG++; }else{ @@ -290,6 +292,7 @@ public class MainActivity extends AppCompatActivity { mDatenbank.child("IDG" + k).child("e_laengengrad").setValue(""); mDatenbank.child("IDG" + k).child("h_timestamp").setValue(""); mDatenbank.child("IDG" + k).child("i_amplitude").setValue(""); + mDatenbank.child("IDG" + k).child("w_wellengeschwindigkeit").setValue(""); } //###### Bei Vibration der APP #### @@ -327,14 +330,16 @@ public class MainActivity extends AppCompatActivity { String laengengrad; String timestamp; String ampltiude; + String welle; androidid = data.child("IDG" + i).child("a_androidid").getValue().toString(); localedatetime = data.child("IDG" + i).child("b_localdatetime").getValue().toString(); breitengrad = data.child("IDG" + i).child("d_breitengrad").getValue().toString(); laengengrad = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); timestamp = data.child("IDG" + i).child("h_timestamp").getValue().toString(); ampltiude = data.child("IDG" + i).child("i_amplitude").getValue().toString(); + welle = data.child("IDG" + i).child("w_wellengeschwindigkeit").getValue().toString(); - if(androidid.isEmpty() && localedatetime.isEmpty() && breitengrad.isEmpty() && laengengrad.isEmpty() && timestamp.isEmpty() && ampltiude.isEmpty()) + if(androidid.isEmpty() && localedatetime.isEmpty() && breitengrad.isEmpty() && laengengrad.isEmpty() && timestamp.isEmpty() && ampltiude.isEmpty() && welle.isEmpty()) { return true; }else @@ -354,6 +359,7 @@ public class MainActivity extends AppCompatActivity { mDatenbank.child("IDG" + k).child("e_laengengrad").setValue(currentLocation.getLongitude()); mDatenbank.child("IDG" + k).child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis()); mDatenbank.child("IDG" + k).child("i_amplitude").setValue(1000); + mDatenbank.child("IDG" + k).child("w_wellengeschwindigkeit").setValue(4500); } //###### Bei Eintragungen in der DB #### @@ -402,10 +408,10 @@ public class MainActivity extends AppCompatActivity { //Bei genau 3 Einträgen: if(takenIDG >= 3 && allowCalculation) { - Toast.makeText(MainActivity.this, "Es wurden 3 Geräteeinträge registriert!", Toast.LENGTH_SHORT).show(); + Toast.makeText(MainActivity.this, "3 Geräte regisrtiert - Berechnung möglich!", Toast.LENGTH_SHORT).show(); allowCalculation = false; - System.out.println("Gebe an Berechnung raus"); - //An Jans Code anknüpfen + Button btnEarthquake = (Button) findViewById(R.id.btnEarthquakeLocation); + btnEarthquake.setEnabled(true); } } @@ -417,8 +423,9 @@ public class MainActivity extends AppCompatActivity { String laengengrad = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); String timestamp = data.child("IDG" + i).child("h_timestamp").getValue().toString(); String ampltiude = data.child("IDG" + i).child("i_amplitude").getValue().toString(); + String welle = data.child("IDG" + i).child("w_wellengeschwindigkeit").getValue().toString(); - if(!androidid.isEmpty() && !localedatetime.isEmpty() && !breitengrad.isEmpty() && !laengengrad.isEmpty() && !timestamp.isEmpty() && !ampltiude.isEmpty()) + if(!androidid.isEmpty() && !localedatetime.isEmpty() && !breitengrad.isEmpty() && !laengengrad.isEmpty() && !timestamp.isEmpty() && !ampltiude.isEmpty() && !welle.isEmpty()) { return true; }else @@ -460,6 +467,8 @@ public class MainActivity extends AppCompatActivity { public void resetDisplayText() { + Button btnEarthquake = (Button) findViewById(R.id.btnEarthquakeLocation); + btnEarthquake.setEnabled(false); TextView txtDevice1 = (TextView) findViewById(R.id.txtdevice1); TextView txtDevice2 = (TextView) findViewById(R.id.txtdevice2); TextView txtDevice3 = (TextView) findViewById(R.id.txtdevice3); @@ -469,6 +478,7 @@ public class MainActivity extends AppCompatActivity { txtDevice3.setText(""); txtDevice4.setText(""); } + public String getandroidid () { return Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); @@ -536,6 +546,7 @@ public class MainActivity extends AppCompatActivity { private void init() { Button btnEarthquake = (Button) findViewById(R.id.btnEarthquakeLocation); + btnEarthquake.setEnabled(false); btnEarthquake.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {