Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
59d17304ad | |||
906df05c6c | |||
a685f972bf | |||
![]() |
53528a82e9 |
@ -43,5 +43,6 @@ dependencies {
|
|||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||||
|
|
||||||
implementation("com.google.guava:guava:30.1.1-jre")
|
implementation("com.google.guava:guava:30.1.1-jre")
|
||||||
|
implementation ('com.lemmingapex.trilateration:trilateration:1.0.2')
|
||||||
|
|
||||||
}
|
}
|
@ -19,7 +19,6 @@ import android.location.Location;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.provider.ContactsContract;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -70,8 +69,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
//##########################################################################################################################################################################
|
//##########################################################################################################################################################################
|
||||||
//################################################################## vvv SensorParameter vvv ##############################################################################
|
//################################################################## vvv SensorParameter vvv ##############################################################################
|
||||||
private SensorManager mSensorManager;
|
private SensorManager mSensorManager;
|
||||||
private static final float mUpperThreshold = 1.0f; // für Emulator auf 1.5 setzen //Für passende Empfindlichkeit auf 0.025f setzen ohne Smartphonehülle
|
private static final float mUpperThreshold = 0.075f; // für Emulator auf 1.5 setzen
|
||||||
//private static final float mUpperThreshold = 1.0f; // für Emulator auf 1.5 setzen //Für passende Empfindlichkeit auf 0.025f setzen ohne Smartphonehülle
|
|
||||||
private static final float mLowerThreshold = 0.5f; // für Emulator auf 0.5 setzen
|
private static final float mLowerThreshold = 0.5f; // für Emulator auf 0.5 setzen
|
||||||
private static final long mShakeDetectionLockTimeMicroSeconds = 3500;
|
private static final long mShakeDetectionLockTimeMicroSeconds = 3500;
|
||||||
private float mAccel;
|
private float mAccel;
|
||||||
@ -103,15 +101,17 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
{
|
{
|
||||||
//TextView txtEarthquake = (TextView) findViewById(R.id.txtEarthquake);
|
//TextView txtEarthquake = (TextView) findViewById(R.id.txtEarthquake);
|
||||||
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
|
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
|
||||||
Objects.requireNonNull(mSensorManager).registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
|
Objects.requireNonNull(mSensorManager).registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
|
||||||
mAccel = 1f;
|
mAccel = 0.05f;
|
||||||
mAccelCurrent = SensorManager.GRAVITY_EARTH;
|
mAccelCurrent = SensorManager.GRAVITY_EARTH;
|
||||||
mAccelLast = SensorManager.GRAVITY_EARTH;
|
mAccelLast = SensorManager.GRAVITY_EARTH;
|
||||||
mShakeDetectionIsActive = false;
|
mShakeDetectionIsActive = false;
|
||||||
mShakeDetected = false;
|
mShakeDetected = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final SensorEventListener mSensorListener = new SensorEventListener() {
|
private final SensorEventListener mSensorListener = new SensorEventListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSensorChanged(SensorEvent event) {
|
public void onSensorChanged(SensorEvent event) {
|
||||||
float x = event.values[0];
|
float x = event.values[0];
|
||||||
@ -121,11 +121,11 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
mAccelCurrent = (float) Math.sqrt((double) (x * x + y * y + z * z));
|
mAccelCurrent = (float) Math.sqrt((double) (x * x + y * y + z * z));
|
||||||
float delta = mAccelCurrent - mAccelLast;
|
float delta = mAccelCurrent - mAccelLast;
|
||||||
mAccel = mAccel * 0.9f + delta;
|
mAccel = mAccel * 0.9f + delta;
|
||||||
// Log.d(TAG,"mAccel: "+ mAccel);
|
Log.d(TAG,"mAccel: "+ mAccel);
|
||||||
if (mShakeDetectionIsActive && !mShakeDetected) {
|
if (mShakeDetectionIsActive && !mShakeDetected) {
|
||||||
if(Math.abs(mAccel) > mUpperThreshold) {
|
if(Math.abs(mAccel) > mUpperThreshold) {
|
||||||
|
|
||||||
new CountDownTimer(1000, 10) {
|
new CountDownTimer(500, 10) {
|
||||||
|
|
||||||
public void onTick(long millisUntilFinished) {
|
public void onTick(long millisUntilFinished) {
|
||||||
mShakeDetectionIsActive = false;
|
mShakeDetectionIsActive = false;
|
||||||
@ -495,6 +495,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getandroidid ()
|
public String getandroidid ()
|
||||||
{
|
{
|
||||||
return Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
|
return Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
|
||||||
@ -566,203 +567,6 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
btnReadyToDetect.setEnabled(false);
|
btnReadyToDetect.setEnabled(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO Benötigt für Testzwecke (Epizentrum) für Jan
|
|
||||||
|
|
||||||
Button btnGerichtet = (Button) findViewById(R.id.btnGerichtet1);
|
|
||||||
btnGerichtet.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
getDataBaseValuesWithListener();
|
|
||||||
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection");
|
|
||||||
mDatenbank.child("IDG1").child("a_androidid").setValue("ID1");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG1").child("b_localdatetime").setValue("2021-06-25T19:00:00.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG1").child("d_breitengrad").setValue(49.448290362613854);
|
|
||||||
mDatenbank.child("IDG1").child("e_laengengrad").setValue(11.097272994499544);
|
|
||||||
mDatenbank.child("IDG1").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG1").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG1").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG2").child("a_androidid").setValue("ID2");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG2").child("b_localdatetime").setValue("2021-06-25T19:01:40.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG2").child("d_breitengrad").setValue(49.44466671859845);
|
|
||||||
mDatenbank.child("IDG2").child("e_laengengrad").setValue(11.11073498515257);
|
|
||||||
mDatenbank.child("IDG2").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG2").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG2").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG3").child("a_androidid").setValue("ID3");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG3").child("b_localdatetime").setValue("2021-06-25T19:03:20.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG3").child("d_breitengrad").setValue(49.44263735292373);
|
|
||||||
mDatenbank.child("IDG3").child("e_laengengrad").setValue(11.124199910730779);
|
|
||||||
mDatenbank.child("IDG3").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG3").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG3").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Button btnDreiGoogle = (Button) findViewById(R.id.btnDreieckGoogle);
|
|
||||||
btnDreiGoogle.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection");
|
|
||||||
mDatenbank.child("IDG1").child("a_androidid").setValue("ID1");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG1").child("b_localdatetime").setValue("2021-06-25T19:00:00.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG1").child("d_breitengrad").setValue(49.449588027612);
|
|
||||||
mDatenbank.child("IDG1").child("e_laengengrad").setValue(11.069961699379434);
|
|
||||||
mDatenbank.child("IDG1").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG1").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG1").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG2").child("a_androidid").setValue("ID2");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG2").child("b_localdatetime").setValue("2021-06-25T19:01:40.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG2").child("d_breitengrad").setValue(49.45813339772139);
|
|
||||||
mDatenbank.child("IDG2").child("e_laengengrad").setValue(11.105891230575331);
|
|
||||||
mDatenbank.child("IDG2").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG2").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG2").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG3").child("a_androidid").setValue("ID3");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG3").child("b_localdatetime").setValue("2021-06-25T19:03:20.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG3").child("d_breitengrad").setValue(49.42208575064953);
|
|
||||||
mDatenbank.child("IDG3").child("e_laengengrad").setValue(11.096983614292839);
|
|
||||||
mDatenbank.child("IDG3").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG3").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG3").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Button btnDreiEigen = (Button) findViewById(R.id.btnDreieckEigen);
|
|
||||||
btnDreiEigen.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection");
|
|
||||||
mDatenbank.child("IDG1").child("a_androidid").setValue("ID1");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG1").child("b_localdatetime").setValue("2021-06-25T19:00:00.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG1").child("d_breitengrad").setValue(49.44796056728842);
|
|
||||||
mDatenbank.child("IDG1").child("e_laengengrad").setValue(11.069682589518582);
|
|
||||||
mDatenbank.child("IDG1").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG1").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG1").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG2").child("a_androidid").setValue("ID2");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG2").child("b_localdatetime").setValue("2021-06-25T19:01:40.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG2").child("d_breitengrad").setValue(49.445169649958295);
|
|
||||||
mDatenbank.child("IDG2").child("e_laengengrad").setValue(11.110874403601176);
|
|
||||||
mDatenbank.child("IDG2").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG2").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG2").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG3").child("a_androidid").setValue("ID3");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG3").child("b_localdatetime").setValue("2021-06-25T19:03:20.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG3").child("d_breitengrad").setValue(49.42197662865119);
|
|
||||||
mDatenbank.child("IDG3").child("e_laengengrad").setValue(11.07097763125116);
|
|
||||||
mDatenbank.child("IDG3").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG3").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG3").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Button btnLinieGoogle= (Button) findViewById(R.id.btnLinieGoogle);
|
|
||||||
btnLinieGoogle.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection");
|
|
||||||
mDatenbank.child("IDG1").child("a_androidid").setValue("ID1");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG1").child("b_localdatetime").setValue("2021-06-25T19:00:00.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG1").child("d_breitengrad").setValue(49.439093816961254);
|
|
||||||
mDatenbank.child("IDG1").child("e_laengengrad").setValue(11.087992224141008);
|
|
||||||
mDatenbank.child("IDG1").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG1").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG1").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG2").child("a_androidid").setValue("ID2");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG2").child("b_localdatetime").setValue("2021-06-25T19:01:40.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG2").child("d_breitengrad").setValue(49.43058961031174);
|
|
||||||
mDatenbank.child("IDG2").child("e_laengengrad").setValue(11.092487606432716);
|
|
||||||
mDatenbank.child("IDG2").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG2").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG2").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG3").child("a_androidid").setValue("ID3");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG3").child("b_localdatetime").setValue("2021-06-25T19:03:20.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG3").child("d_breitengrad").setValue(49.42208989434345);
|
|
||||||
mDatenbank.child("IDG3").child("e_laengengrad").setValue(11.096991470517569);
|
|
||||||
mDatenbank.child("IDG3").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG3").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG3").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Button btnLinieEigen = (Button) findViewById(R.id.btnLinieEigen);
|
|
||||||
btnLinieEigen.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
mDatenbank = FirebaseDatabase.getInstance().getReference().child("overviewdetection");
|
|
||||||
mDatenbank.child("IDG1").child("a_androidid").setValue("ID1");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG1").child("b_localdatetime").setValue("2021-06-25T19:00:00.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG1").child("d_breitengrad").setValue(49.44709382725857);
|
|
||||||
mDatenbank.child("IDG1").child("e_laengengrad").setValue(11.069646529622538);
|
|
||||||
mDatenbank.child("IDG1").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG1").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG1").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG2").child("a_androidid").setValue("ID2");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG2").child("b_localdatetime").setValue("2021-06-25T19:01:40.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG2").child("d_breitengrad").setValue(49.446938212388574);
|
|
||||||
mDatenbank.child("IDG2").child("e_laengengrad").setValue(11.055889659014166);
|
|
||||||
mDatenbank.child("IDG2").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG2").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG2").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
|
|
||||||
mDatenbank.child("IDG3").child("a_androidid").setValue("ID3");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
mDatenbank.child("IDG3").child("b_localdatetime").setValue("2021-06-25T19:03:20.000");
|
|
||||||
}
|
|
||||||
mDatenbank.child("IDG3").child("d_breitengrad").setValue(49.447447927483005);
|
|
||||||
mDatenbank.child("IDG3").child("e_laengengrad").setValue(11.042050722727316);
|
|
||||||
mDatenbank.child("IDG3").child("h_timestamp").setValue(Calendar.getInstance().getTimeInMillis());
|
|
||||||
mDatenbank.child("IDG3").child("i_amplitude").setValue(1000);
|
|
||||||
mDatenbank.child("IDG3").child("w_wellengeschwindigkeit").setValue(10);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -771,53 +575,3 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
public void setDisplayText(DataSnapshot data, int i)
|
|
||||||
{
|
|
||||||
String androidid = data.child("IDG" + i).child("a_androidid").getValue().toString();
|
|
||||||
String localedatetime = data.child("IDG" + i).child("b_localdatetime").getValue().toString();
|
|
||||||
String breitengrad = data.child("IDG" + i).child("d_breitengrad").getValue().toString();
|
|
||||||
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();
|
|
||||||
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);
|
|
||||||
switch (i){
|
|
||||||
case 1:
|
|
||||||
txtDevice1.setText("Device ID 1: "+ androidid + "\n" + "Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad +"\n" + "Time Stamp: "+ timestamp + "\n" + "LocalDateTime: " + localedatetime +"\n"+ "Amplitude: "+ ampltiude+"\n");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
txtDevice2.setText("Device ID 2: "+ androidid + "\n" + "Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad +"\n" + "Time Stamp: "+ timestamp + "\n" + "LocalDateTime: " + localedatetime +"\n"+ "Amplitude: "+ ampltiude+"\n");
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
txtDevice3.setText("Device ID 3: "+ androidid + "\n" + "Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad +"\n" + "Time Stamp: "+ timestamp + "\n" + "LocalDateTime: " + localedatetime +"\n"+ "Amplitude: "+ ampltiude+"\n");
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
txtDevice4.setText("Device ID 4: "+ androidid + "\n" + "Latitude: "+breitengrad+"\n"+ "Longitude: "+ laengengrad +"\n" + "Time Stamp: "+ timestamp + "\n" + "LocalDateTime: " + localedatetime +"\n"+ "Amplitude: "+ ampltiude+"\n");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
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);
|
|
||||||
TextView txtDevice4 = (TextView) findViewById(R.id.txtdevice4);
|
|
||||||
txtDevice1.setText("");
|
|
||||||
txtDevice2.setText("");
|
|
||||||
txtDevice3.setText("");
|
|
||||||
txtDevice4.setText("");
|
|
||||||
allowCalculation=true;
|
|
||||||
}
|
|
||||||
*/
|
|
@ -27,7 +27,7 @@ public class Detektionssignal {
|
|||||||
this.koordinaten = koordinaten;
|
this.koordinaten = koordinaten;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getGeschwErdbeben() {
|
public double getGeschwErdbeben() {
|
||||||
return geschwErdbeben;
|
return geschwErdbeben;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,6 +44,6 @@ public class Detektionssignal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Koordinaten koordinaten;
|
public Koordinaten koordinaten;
|
||||||
public int geschwErdbeben;
|
public double geschwErdbeben;
|
||||||
public LocalDateTime ankunftsZeit;
|
public LocalDateTime ankunftsZeit;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import android.os.Build;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import de.edotzlaff.detection.detektion.berechnung.Endpunkt;
|
import de.edotzlaff.detection.detektion.berechnung.Endpunkt;
|
||||||
import de.edotzlaff.detection.detektion.berechnung.EndpunktVerbindung;
|
import de.edotzlaff.detection.detektion.berechnung.EndpunktVerbindung;
|
||||||
import de.edotzlaff.detection.detektion.berechnung.EpizentrumRechnung;
|
import de.edotzlaff.detection.detektion.berechnung.EpizentrumRechnung;
|
||||||
@ -17,7 +18,7 @@ import java.util.Objects;
|
|||||||
public class Erdbeben {
|
public class Erdbeben {
|
||||||
|
|
||||||
//ToDO anpassen an Szenario umso mehr umso wahrscheinlich ein Ergebnis, oder Abbruchbedingung mit do while
|
//ToDO anpassen an Szenario umso mehr umso wahrscheinlich ein Ergebnis, oder Abbruchbedingung mit do while
|
||||||
public static final Integer SCHLEIFENDURCHLAUFTE = 2000;
|
public static final Integer SCHLEIFENDURCHLAUFTE = 200;
|
||||||
private static final String TAG = "ERDBEBEN";
|
private static final String TAG = "ERDBEBEN";
|
||||||
|
|
||||||
private Epizentrum epizentrum;
|
private Epizentrum epizentrum;
|
||||||
@ -37,11 +38,9 @@ public class Erdbeben {
|
|||||||
return nutzerDaten.size();
|
return nutzerDaten.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDetektionssignalList(ArrayList<Detektionssignal> detektionssignale)
|
public void addDetektionssignalList(ArrayList<Detektionssignal> detektionssignale) {
|
||||||
{
|
for (int i = 0; i < detektionssignale.size(); i++) {
|
||||||
for (int i = 0; i< detektionssignale.size(); i++)
|
nutzerDaten.put(detektionssignale.get(i).getDeviceId() + "i", detektionssignale.get(i));
|
||||||
{
|
|
||||||
nutzerDaten.put(detektionssignale.get(i).getDeviceId()+"i",detektionssignale.get(i));
|
|
||||||
}
|
}
|
||||||
Log.i(TAG, "addDetektionssignalList: " + nutzerDaten.size());
|
Log.i(TAG, "addDetektionssignalList: " + nutzerDaten.size());
|
||||||
}
|
}
|
||||||
@ -69,6 +68,16 @@ public class Erdbeben {
|
|||||||
}
|
}
|
||||||
epizentrumRechnung.erhoheRadius(berechnungsEndpunkte);
|
epizentrumRechnung.erhoheRadius(berechnungsEndpunkte);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!Objects.isNull(epizentrumRechnung.trilateration(berechnungsEndpunkte)))
|
||||||
|
{
|
||||||
|
epizentrum = epizentrumRechnung.trilateration(berechnungsEndpunkte);
|
||||||
|
Log.i(TAG, "Koordinaten: " +epizentrum.getKoordinaten().getX() + " " + epizentrum.getKoordinaten().getY());
|
||||||
|
epizentrum.setEntstehungsZeitpunkt(epizentrumRechnung.berechneEntstehungsZeitpunktLongLatt(erstesDetektionssignal, epizentrum.getKoordinaten()));
|
||||||
|
return epizentrum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,12 +9,18 @@ import android.util.Log;
|
|||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import com.lemmingapex.trilateration.NonLinearLeastSquaresSolver;
|
||||||
|
import com.lemmingapex.trilateration.TrilaterationFunction;
|
||||||
|
|
||||||
|
import org.apache.commons.math3.fitting.leastsquares.LeastSquaresOptimizer;
|
||||||
|
import org.apache.commons.math3.fitting.leastsquares.LevenbergMarquardtOptimizer;
|
||||||
|
|
||||||
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.berechnung.mathObjekte.Koordinaten;
|
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.Koordinaten;
|
||||||
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.Kreis;
|
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.Kreis;
|
||||||
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.Schnittpunkt;
|
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.Schnittpunkt;
|
||||||
|
import de.edotzlaff.detection.detektion.berechnung.mathObjekte.UTM2Deg;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
@ -26,10 +32,10 @@ import java.util.Set;
|
|||||||
public class EpizentrumRechnung {
|
public class EpizentrumRechnung {
|
||||||
|
|
||||||
//ToDo Schrittweite und Abstand auf Szenario anpassen
|
//ToDo Schrittweite und Abstand auf Szenario anpassen
|
||||||
private static final double SCHRITTWEITE = 2;
|
private static final double SCHRITTWEITE = 5;
|
||||||
private static final double MAX_ABSTAND = 0.5;
|
private static final double MAX_ABSTAND = 5;
|
||||||
private static final int DOUBLESTELLEN = 15;
|
private static final int DOUBLESTELLEN = 15;
|
||||||
private static final int SCHLEIFENDURCHLAUFTE = 8000;
|
private static final int SCHLEIFENDURCHLAUFTE = 5000;
|
||||||
|
|
||||||
private static final String TAG = "EPIZENTRUMRECHNUNG";
|
private static final String TAG = "EPIZENTRUMRECHNUNG";
|
||||||
|
|
||||||
@ -181,21 +187,21 @@ public class EpizentrumRechnung {
|
|||||||
double abstand = Math.sqrt(
|
double abstand = Math.sqrt(
|
||||||
Math.pow(detektionssignal.getKoordinaten().getX() - koordEpi.getX(), 2) +
|
Math.pow(detektionssignal.getKoordinaten().getX() - koordEpi.getX(), 2) +
|
||||||
Math.pow(detektionssignal.getKoordinaten().getY() - koordEpi.getY(), 2));
|
Math.pow(detektionssignal.getKoordinaten().getY() - koordEpi.getY(), 2));
|
||||||
int sec = (int) abstand/ detektionssignal.geschwErdbeben;
|
int sec = (int) (abstand / detektionssignal.geschwErdbeben);
|
||||||
|
|
||||||
return detektionssignal.getAnkunftsZeit().minusSeconds(sec);
|
return detektionssignal.getAnkunftsZeit().minusSeconds(sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||||
public LocalDateTime berechneEntstehungsZeitpunktLongLatt(Detektionssignal detektionssignal, Koordinaten koordEpi)
|
public LocalDateTime berechneEntstehungsZeitpunktLongLatt(Detektionssignal detektionssignal, Koordinaten koordEpi) {
|
||||||
{
|
|
||||||
float[] results = new float[1];
|
float[] results = new float[1];
|
||||||
Location.distanceBetween(detektionssignal.getKoordinaten().getX(), detektionssignal.getKoordinaten().getY(), koordEpi.getX(), koordEpi.getY(), results);
|
Location.distanceBetween(detektionssignal.getKoordinaten().getX(), detektionssignal.getKoordinaten().getY(), koordEpi.getX(), koordEpi.getY(), results);
|
||||||
float distanceInMeters = results[0];
|
float distanceInMeters = results[0];
|
||||||
int sec = (int) distanceInMeters/ detektionssignal.geschwErdbeben;
|
int sec = (int) (distanceInMeters / detektionssignal.geschwErdbeben);
|
||||||
return detektionssignal.getAnkunftsZeit().minusSeconds(sec);
|
return detektionssignal.getAnkunftsZeit().minusSeconds(sec);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void erhoheRadius(ArrayList<Endpunkt> tempEndpunktListe) {
|
public void erhoheRadius(ArrayList<Endpunkt> tempEndpunktListe) {
|
||||||
|
|
||||||
for (Endpunkt b : tempEndpunktListe) {
|
for (Endpunkt b : tempEndpunktListe) {
|
||||||
@ -203,5 +209,32 @@ public class EpizentrumRechnung {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Epizentrum trilateration(ArrayList<Endpunkt> tempEndpunktListe) {
|
||||||
|
double[][] positions = new double[tempEndpunktListe.size()][2];
|
||||||
|
double[] distances = new double[tempEndpunktListe.size()];
|
||||||
|
|
||||||
|
for (int i = 0; i < tempEndpunktListe.size(); i++) {
|
||||||
|
positions[i][0] = tempEndpunktListe.get(i).getKreis().getMittelPunkt().getX();
|
||||||
|
positions[i][1] = tempEndpunktListe.get(i).getKreis().getMittelPunkt().getY();
|
||||||
|
distances[i] = tempEndpunktListe.get(i).getKreis().getRadius();
|
||||||
|
}
|
||||||
|
NonLinearLeastSquaresSolver solver = new NonLinearLeastSquaresSolver(new TrilaterationFunction(positions, distances), new LevenbergMarquardtOptimizer());
|
||||||
|
LeastSquaresOptimizer.Optimum optimum = solver.solve();
|
||||||
|
|
||||||
|
double[] centroid = optimum.getPoint().toArray();
|
||||||
|
if (centroid.length == 2) {
|
||||||
|
UTM2Deg utm2Deg = new UTM2Deg();
|
||||||
|
utm2Deg.convertToDeg(32, 'U', centroid[0], centroid[1]);
|
||||||
|
|
||||||
|
Log.i(TAG, "Center: " + utm2Deg.getLatitude() + " " + utm2Deg.getLongitude());
|
||||||
|
Epizentrum epizentrum = new Epizentrum();
|
||||||
|
Koordinaten koordinaten = new Koordinaten(centroid[0], centroid[1]);
|
||||||
|
epizentrum.setKoordinaten(koordinaten);
|
||||||
|
return epizentrum;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -86,57 +86,6 @@
|
|||||||
android:textColor="@color/black"
|
android:textColor="@color/black"
|
||||||
android:text="@string/db_zur_cksetzen" />
|
android:text="@string/db_zur_cksetzen" />
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btnGerichtet1"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_above="@id/btnResetDB"
|
|
||||||
android:backgroundTint="@color/design_default_color_secondary_variant"
|
|
||||||
android:layout_alignParentStart="false"
|
|
||||||
android:layout_alignParentEnd="false"
|
|
||||||
android:layout_alignParentBottom="false"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:layout_marginBottom="1dp"
|
|
||||||
android:text="@string/gerichtett"
|
|
||||||
android:textColor="@color/white" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btnLinieGoogle"
|
|
||||||
android:backgroundTint="@color/design_default_color_secondary_variant"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignBaseline="@id/btnGerichtet1"
|
|
||||||
android:layout_toStartOf="@id/btnGerichtet1"
|
|
||||||
android:text="@string/linie_g" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btnDreieckGoogle"
|
|
||||||
android:backgroundTint="@color/design_default_color_secondary_variant"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignBaseline="@id/btnGerichtet1"
|
|
||||||
android:layout_toEndOf="@id/btnGerichtet1"
|
|
||||||
android:text="@string/gerichtet_g"
|
|
||||||
tools:text="Dreieck_G" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btnDreieckEigen"
|
|
||||||
android:backgroundTint="@color/design_default_color_secondary_variant"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_above="@id/btnGerichtet1"
|
|
||||||
android:layout_toEndOf="@id/btnGerichtet1"
|
|
||||||
android:text="@string/dreieck_e"
|
|
||||||
tools:text="Dreieck_E" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btnLinieEigen"
|
|
||||||
android:backgroundTint="@color/design_default_color_secondary_variant"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_above="@id/btnGerichtet1"
|
|
||||||
android:layout_toStartOf="@id/btnGerichtet1"
|
|
||||||
android:text="@string/linie_e" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,9 +9,4 @@
|
|||||||
<string name="device_2">Device 2</string>
|
<string name="device_2">Device 2</string>
|
||||||
<string name="device_1">Device 1</string>
|
<string name="device_1">Device 1</string>
|
||||||
<string name="db_zur_cksetzen">DB zurücksetzen</string>
|
<string name="db_zur_cksetzen">DB zurücksetzen</string>
|
||||||
<string name="gerichtet_g">Gerichtet_G</string>
|
|
||||||
<string name="dreieck_e">Dreieck_E</string>
|
|
||||||
<string name="linie_e">Linie_E</string>
|
|
||||||
<string name="linie_g">Linie_G</string>
|
|
||||||
<string name="gerichtett">Gerichtett</string>
|
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user