diff --git a/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java b/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java index 054ae7f..b08504b 100644 --- a/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java +++ b/app/src/main/java/de/edotzlaff/detection/EarthquakeLocation.java @@ -6,6 +6,7 @@ import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Build; import android.os.CountDownTimer; +import android.provider.ContactsContract; import android.util.Log; import androidx.annotation.NonNull; @@ -31,6 +32,7 @@ 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 de.edotzlaff.detection.detektion.berechnung.mathObjekte.Koordinaten; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -42,11 +44,15 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa private GoogleMap mMap; private static final String TAGEPIZENTRUM = "Epizentrum"; private DatabaseReference mDatenbank; + private double latitudeD1, latitudeD2, latitudeD3, latitudeD4; + private double longitudeD1, longitudeD2, longitudeD3, longitudeD4; + private String dev1, dev2, dev3, dev4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_earthquake_location); + getLocationInfo(); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); @@ -56,7 +62,7 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa //################################################################## vvv DB Code vvv ##################################################################################### - public void getDataBaseInfo(int k) + public void getLocationInfo() { mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection"); mDatenbank.get().addOnCompleteListener(new OnCompleteListener() { @@ -66,31 +72,48 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa if (!task.isSuccessful()) { System.out.println("Datenbank Fehler in getDataBaseValuesNoListener"); } - else { - mapToDetektionssignale(task.getResult()); + else{ + defineGPSforMapping(task.getResult()); + //ermittleEpizentrum(task.getResult()); + //mapToDetektionssignale(task.getResult()); } } }); } - public double getLocationInfo(String specific,int index) + public void defineGPSforMapping(DataSnapshot data) { - double kp = 5; - 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 { - } + String breitengradString; + String laengengradString; + String androidID; + for(int i =1; i<=3; i++) + { + breitengradString = data.child("IDG" + i).child("d_breitengrad").getValue().toString(); + laengengradString = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); + androidID = data.child("IDG" + i).child("a_androidid").getValue().toString(); + double breitengrad = Double.parseDouble(breitengradString); + double laengengrad = Double.parseDouble(laengengradString); + + switch (i){ + case 1: + latitudeD1 = breitengrad; + longitudeD1 = laengengrad; + dev1 = androidID; + break; + case 2: + latitudeD2 = breitengrad; + longitudeD2 = laengengrad; + dev2 = androidID; + break; + case 3: + latitudeD3 = breitengrad; + longitudeD3 = laengengrad; + dev3 = androidID; + break; + default: + break; } - - }); - - return kp; + } } @@ -103,6 +126,7 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa @RequiresApi(api = Build.VERSION_CODES.O) public Epizentrum ermittleEpizentrum(DataSnapshot data) { + System.out.println("############## EPIZENTRUM ###############"); Erdbeben erdbeben = new Erdbeben(); erdbeben.addDetektionssignalList(mapToDetektionssignale(data)); @@ -121,10 +145,10 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa } - @RequiresApi(api = Build.VERSION_CODES.O) public ArrayList mapToDetektionssignale(DataSnapshot data) { + System.out.println("################# ARRAYLIST ####################"); ArrayList detektionssignale = new ArrayList<>(); for(int i=1; i<=3; i++) { @@ -139,20 +163,19 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa //ID als String detektionssignal.setDeviceId(data.child("IDG" + i).child("a_androidid").getValue().toString()); - //Koordinaten als ??? + //Koordinaten 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 breitengrad und laengengrad hier rein? Außerdem welche Einheit? m/s oder km/s? - //detektionssignal.setKoordinaten(breitengrad, laengengrad); + Koordinaten koordinaten = new Koordinaten(breitengrad, laengengrad); + detektionssignal.setKoordinaten(koordinaten); - //Wellengeschwindigkeit als int + //Welle in m/s 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; @@ -163,6 +186,7 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa //########################################################################################################################################################################## + //########################################################################################################################################################################## //################################################################## vvv Maps Code vvv ################################################################################### @@ -172,18 +196,18 @@ public class EarthquakeLocation extends FragmentActivity implements OnMapReadyCa //TODO Aron: Daten aus DB in die jeweiligen Devices einsetzten //aus DB für Device 1 long lat - LatLng divice1 = new LatLng(-34, 152); - mMap.addMarker(new MarkerOptions().position(divice1).title("Device 1").icon(BitmapDescriptorFactory + LatLng device1 = new LatLng(latitudeD1, longitudeD1); + mMap.addMarker(new MarkerOptions().position(device1).title("Device 1").icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); //aus DB für Device 2 long lat - LatLng divice2 = new LatLng(-33, 152); - mMap.addMarker(new MarkerOptions().position(divice2).title("Device 2").icon(BitmapDescriptorFactory + LatLng device2 = new LatLng(latitudeD2, longitudeD2); + mMap.addMarker(new MarkerOptions().position(device2).title("Device 2").icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); //aus DB für Device 3 long lat - LatLng divice3 = new LatLng(-34, 150); - mMap.addMarker(new MarkerOptions().position(divice3).title("Device 3").icon(BitmapDescriptorFactory + LatLng device3 = new LatLng(latitudeD3, longitudeD3); + mMap.addMarker(new MarkerOptions().position(device3).title("Device 3").icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); //man könnten noch eine IF Abfrage einbauen falls es 4 Devices gibt diff --git a/app/src/main/java/de/edotzlaff/detection/MainActivity.java b/app/src/main/java/de/edotzlaff/detection/MainActivity.java index 1457715..b4439fc 100644 --- a/app/src/main/java/de/edotzlaff/detection/MainActivity.java +++ b/app/src/main/java/de/edotzlaff/detection/MainActivity.java @@ -491,33 +491,6 @@ public class MainActivity extends AppCompatActivity { //################################################################## ^^^^ DB Code ^^^^ ################################################################################### //########################################################################################################################################################################## - - - //########################################################################################################################################################################## - //################################################################## vvv Set Text of Device 1/2/3 on MainActivity vvv #################################################### - - private void setText(){ - TextView txtDevice1 = (TextView) findViewById(R.id.txtdevice1); - TextView txtDevice2 = (TextView) findViewById(R.id.txtdevice2); - TextView txtDevice3 = (TextView) findViewById(R.id.txtdevice3); - TextView txtDevice4 = (TextView) findViewById(R.id.txtdevice4); - - - txtDevice1.setText("Device 1"+"\n"+"Time Stamp: "+ Calendar.getInstance().getTimeInMillis()+"\n"+"Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad+"\n"); - - txtDevice2.setText("Device 2"+"\n"+"Time Stamp: "+ Calendar.getInstance().getTimeInMillis()+"\n"+"Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad+"\n"); - - txtDevice3.setText("Device 3"+"\n"+"Time Stamp: "+ Calendar.getInstance().getTimeInMillis()+"\n"+"Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad+"\n"); - - txtDevice4.setText("Device 4"+"\n"+"Time Stamp: "+ Calendar.getInstance().getTimeInMillis()+"\n"+"Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad+"\n"); - - } - - //################################################################## ^^^^ Set Text of Device 1/2/3 on MainActivity ^^^^ ################################################## - //########################################################################################################################################################################## - - - //########################################################################################################################################################################## //################################################################## vvv Maps Code vvv ################################################################################### diff --git a/app/src/main/java/de/edotzlaff/detection/detektion/berechnung/EpizentrumRechnung.java b/app/src/main/java/de/edotzlaff/detection/detektion/berechnung/EpizentrumRechnung.java index cc30760..4534f07 100644 --- a/app/src/main/java/de/edotzlaff/detection/detektion/berechnung/EpizentrumRechnung.java +++ b/app/src/main/java/de/edotzlaff/detection/detektion/berechnung/EpizentrumRechnung.java @@ -1,6 +1,7 @@ package de.edotzlaff.detection.detektion.berechnung; +import android.location.Location; import android.os.Build; import androidx.annotation.RequiresApi; import com.google.common.collect.ImmutableSet; @@ -163,7 +164,7 @@ public class EpizentrumRechnung { public LocalDateTime berechneEntstehungsZeitpunktLongLatt(Detektionssignal detektionssignal, Koordinaten koordEpi) { float[] results = new float[1]; - LocalDateTime.distanceBetween(detektionssignal.getKoordinaten().getX(), detektionssignal.getKoordinaten().getY(), koordEpi.getX(), koordEpi.getY()); + Location.distanceBetween(detektionssignal.getKoordinaten().getX(), detektionssignal.getKoordinaten().getY(), koordEpi.getX(), koordEpi.getY(), results); float distanceInMeters = results[0]; int sec = (int) distanceInMeters/ detektionssignal.geschwErdbeben; return detektionssignal.getAnkunftsZeit().minusSeconds(sec);