package de.edotzlaff.schockwelle; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentActivity; import android.app.Dialog; import android.content.Intent; import android.hardware.Sensor; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GoogleApiAvailability; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; public class MainActivity extends FragmentActivity { private static final String TAG = "MainActivity"; private static final int ERROR_DIALOG_REQUEST = 9001; private DatabaseReference mDatenbank; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (isServiceOK()){ init(); } deviceInitDataBase(); //TODO Edward: Mit dieser Methode wird beim Starten der App die DB mit, vorerst festen, Werten für alle IDG 1-4 initialiert } private void init(){ Button btnEarthquake = (Button) findViewById(R.id.btnEarthquake); btnEarthquake.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, EarthquakeMapsActivity.class); startActivity(intent); } }); Button btnSensor = (Button) findViewById(R.id.btnSensor); btnSensor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SensorMapsActivity.class); startActivity(intent); } }); } public boolean isServiceOK(){ Log.d(TAG, "isServicesOK(): checking google services version"); int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(MainActivity.this); if (available== ConnectionResult.SUCCESS){ Log.d(TAG,"isServicesOK: Google Play Services is working"); return true; } else if (GoogleApiAvailability.getInstance().isUserResolvableError(available)){ Log.d(TAG, "isServicesOK(): an error occured but we can fix it"); Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(MainActivity.this, available, ERROR_DIALOG_REQUEST); dialog.show(); } else { Toast.makeText(this, "You can`t make map request", Toast.LENGTH_SHORT).show(); } return false; } public void deviceInitDataBase() { mDatenbank = FirebaseDatabase.getInstance().getReference(); Devices d1 = new Devices("10.00.00.000", false, 1103456789, 49.45470362290784, 11.151032510281498, 1000); Devices d2 = new Devices("20.00.00.000", false, 1203456789, 40.70064147511923, -73.993767997977787, 200); Devices d3 = new Devices("30.00.00.000", false, 1303456789, -33.93157129193122, 18.39666975233824, 30); Devices d4 = new Devices("40.00.00.000", false, 1403456789, -33.40763257191139, -70.61870273653996, 4); mDatenbank.child("overview").child("IDG1").setValue(d1); mDatenbank.child("overview").child("IDG2").setValue(d2); mDatenbank.child("overview").child("IDG3").setValue(d3); mDatenbank.child("overview").child("IDG4").setValue(d4); getDataBaseValues(); } public void getDataBaseValues() { mDatenbank.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { processDataBaseValues(snapshot); //Daten - Snapshot, Übergabe an Methode DataChangeProtocol } @Override public void onCancelled(@NonNull DatabaseError error) { getDataBaseFailure(error); } }); } public void processDataBaseValues (DataSnapshot data) { for (int i = 1; i<=4; i++) //Für alle IDG 1-4 werden Werte ausgegeben { //####### Auslesen für String-Werte #######: String ipAdresse = data.child("overview").child("IDG" + i).child("ip").getValue().toString(); //####### Auslesen für boolean-Werte #######: String vibrationString = data.child("overview").child("IDG" + i).child("vibration").getValue().toString(); boolean vibration; if(vibrationString == "true"){ vibration = true; }else{ vibration = false; } //####### Auslesen für double-Werte #######: String breitengradString = data.child("overview").child("IDG" + i).child("breitengrad").getValue().toString(); String laengengradString = data.child("overview").child("IDG" + i).child("laengengrad").getValue().toString(); double breitengrad = Double.parseDouble(breitengradString); double laengengrad = Double.parseDouble(laengengradString); //####### Auslesen für long-Werte #######: String timestampString = data.child("overview").child("IDG" + i).child("timestamp").getValue().toString(); long timestamp = Long.parseLong(timestampString); //####### Auslesen für ing-Werte #######: String amplitudeString = data.child("overview").child("IDG" + i).child("amplitude").getValue().toString(); int amplitude = Integer.parseInt(amplitudeString); //####### Optional zur Kontrolle #######: /* System.out.println("IDG" + i + " - IP:" + data.child("overview").child("IDG" + i).child("ip").getValue().toString()); System.out.println("IDG" + i + " - Vibration:" + data.child("overview").child("IDG" + i).child("vibration").getValue().toString()); System.out.println("IDG" + i + " - Zeitstempel:" + data.child("overview").child("IDG" + i).child("timestamp").getValue().toString()); System.out.println("IDG" + i + " - Breitengrad:" + data.child("overview").child("IDG" + i).child("breitengrad").getValue().toString()); System.out.println("IDG" + i + " - Laengengrad:" + data.child("overview").child("IDG" + i).child("laengengrad").getValue().toString()); System.out.println("IDG" + i + " - Amplitude:" + data.child("overview").child("IDG" + i).child("amplitude").getValue().toString()); */ } } public void getDataBaseFailure (DatabaseError error) { System.out.println("Fehler"); Log.w("Datenbankfehler", error.toException()); } }