|
|
|
|
|
|
|
|
import android.hardware.SensorManager; |
|
|
import android.hardware.SensorManager; |
|
|
import android.os.Build; |
|
|
import android.os.Build; |
|
|
import android.os.CountDownTimer; |
|
|
import android.os.CountDownTimer; |
|
|
|
|
|
import android.provider.ContactsContract; |
|
|
import android.util.Log; |
|
|
import android.util.Log; |
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull; |
|
|
import androidx.annotation.NonNull; |
|
|
|
|
|
|
|
|
import de.edotzlaff.detection.detektion.Detektionssignal; |
|
|
import de.edotzlaff.detection.detektion.Detektionssignal; |
|
|
import de.edotzlaff.detection.detektion.Epizentrum; |
|
|
import de.edotzlaff.detection.detektion.Epizentrum; |
|
|
import de.edotzlaff.detection.detektion.Erdbeben; |
|
|
import de.edotzlaff.detection.detektion.Erdbeben; |
|
|
|
|
|
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.Koordinaten; |
|
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.format.DateTimeFormatter; |
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
|
|
|
|
|
private GoogleMap mMap; |
|
|
private GoogleMap mMap; |
|
|
private static final String TAGEPIZENTRUM = "Epizentrum"; |
|
|
private static final String TAGEPIZENTRUM = "Epizentrum"; |
|
|
private DatabaseReference mDatenbank; |
|
|
private DatabaseReference mDatenbank; |
|
|
|
|
|
private double latitudeD1, latitudeD2, latitudeD3, latitudeD4; |
|
|
|
|
|
private double longitudeD1, longitudeD2, longitudeD3, longitudeD4; |
|
|
|
|
|
private String dev1, dev2, dev3, dev4; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
protected void onCreate(Bundle savedInstanceState) { |
|
|
protected void onCreate(Bundle savedInstanceState) { |
|
|
super.onCreate(savedInstanceState); |
|
|
super.onCreate(savedInstanceState); |
|
|
setContentView(R.layout.activity_earthquake_location); |
|
|
setContentView(R.layout.activity_earthquake_location); |
|
|
|
|
|
getLocationInfo(); |
|
|
// Obtain the SupportMapFragment and get notified when the map is ready to be used. |
|
|
// Obtain the SupportMapFragment and get notified when the map is ready to be used. |
|
|
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); |
|
|
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); |
|
|
mapFragment.getMapAsync(this); |
|
|
mapFragment.getMapAsync(this); |
|
|
|
|
|
|
|
|
//################################################################## vvv DB Code vvv ##################################################################################### |
|
|
//################################################################## vvv DB Code vvv ##################################################################################### |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void getDataBaseInfo(int k) |
|
|
|
|
|
|
|
|
public void getLocationInfo() |
|
|
{ |
|
|
{ |
|
|
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection"); |
|
|
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection"); |
|
|
mDatenbank.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() { |
|
|
mDatenbank.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() { |
|
|
|
|
|
|
|
|
if (!task.isSuccessful()) { |
|
|
if (!task.isSuccessful()) { |
|
|
System.out.println("Datenbank Fehler in getDataBaseValuesNoListener"); |
|
|
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<DataSnapshot>() { |
|
|
|
|
|
@RequiresApi(api = Build.VERSION_CODES.O) |
|
|
|
|
|
@Override |
|
|
|
|
|
public void onComplete(@NonNull Task<DataSnapshot> 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); |
|
|
|
|
|
|
|
|
return kp; |
|
|
|
|
|
|
|
|
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; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@RequiresApi(api = Build.VERSION_CODES.O) |
|
|
@RequiresApi(api = Build.VERSION_CODES.O) |
|
|
public Epizentrum ermittleEpizentrum(DataSnapshot data) |
|
|
public Epizentrum ermittleEpizentrum(DataSnapshot data) |
|
|
{ |
|
|
{ |
|
|
|
|
|
System.out.println("############## EPIZENTRUM ###############"); |
|
|
Erdbeben erdbeben = new Erdbeben(); |
|
|
Erdbeben erdbeben = new Erdbeben(); |
|
|
erdbeben.addDetektionssignalList(mapToDetektionssignale(data)); |
|
|
erdbeben.addDetektionssignalList(mapToDetektionssignale(data)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@RequiresApi(api = Build.VERSION_CODES.O) |
|
|
@RequiresApi(api = Build.VERSION_CODES.O) |
|
|
public ArrayList<Detektionssignal> mapToDetektionssignale(DataSnapshot data) |
|
|
public ArrayList<Detektionssignal> mapToDetektionssignale(DataSnapshot data) |
|
|
{ |
|
|
{ |
|
|
|
|
|
System.out.println("################# ARRAYLIST ####################"); |
|
|
ArrayList<Detektionssignal> detektionssignale = new ArrayList<>(); |
|
|
ArrayList<Detektionssignal> detektionssignale = new ArrayList<>(); |
|
|
for(int i=1; i<=3; i++) |
|
|
for(int i=1; i<=3; i++) |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
//ID als String |
|
|
//ID als String |
|
|
detektionssignal.setDeviceId(data.child("IDG" + i).child("a_androidid").getValue().toString()); |
|
|
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 breitengradString = data.child("IDG" + i).child("d_breitengrad").getValue().toString(); |
|
|
String laengengradString = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); |
|
|
String laengengradString = data.child("IDG" + i).child("e_laengengrad").getValue().toString(); |
|
|
double breitengrad = Double.parseDouble(breitengradString); |
|
|
double breitengrad = Double.parseDouble(breitengradString); |
|
|
double laengengrad = Double.parseDouble(laengengradString); |
|
|
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(); |
|
|
String welle = data.child("IDG" + i).child("w_wellengeschwindigkeit").getValue().toString(); |
|
|
int wellengeschwindigkeit = Integer.parseInt(welle); |
|
|
int wellengeschwindigkeit = Integer.parseInt(welle); |
|
|
detektionssignal.setGeschwErdbeben(wellengeschwindigkeit); |
|
|
detektionssignal.setGeschwErdbeben(wellengeschwindigkeit); |
|
|
|
|
|
|
|
|
//Detektionssignal |
|
|
|
|
|
detektionssignale.add(detektionssignal); |
|
|
detektionssignale.add(detektionssignal); |
|
|
} |
|
|
} |
|
|
return detektionssignale; |
|
|
return detektionssignale; |
|
|
|
|
|
|
|
|
//########################################################################################################################################################################## |
|
|
//########################################################################################################################################################################## |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//########################################################################################################################################################################## |
|
|
//########################################################################################################################################################################## |
|
|
//################################################################## vvv Maps Code vvv ################################################################################### |
|
|
//################################################################## vvv Maps Code vvv ################################################################################### |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO Aron: Daten aus DB in die jeweiligen Devices einsetzten |
|
|
//TODO Aron: Daten aus DB in die jeweiligen Devices einsetzten |
|
|
//aus DB für Device 1 long lat |
|
|
//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))); |
|
|
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); |
|
|
|
|
|
|
|
|
//aus DB für Device 2 long lat |
|
|
//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))); |
|
|
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); |
|
|
|
|
|
|
|
|
//aus DB für Device 3 long lat |
|
|
//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))); |
|
|
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); |
|
|
|
|
|
|
|
|
//man könnten noch eine IF Abfrage einbauen falls es 4 Devices gibt |
|
|
//man könnten noch eine IF Abfrage einbauen falls es 4 Devices gibt |