Probleme mit Database Beschreiben und Lesen.
Bitte einheitliches DB Format festelegen und alle Commits mal Pusheb
This commit is contained in:
parent
b60c167cc8
commit
9932f3fc24
@ -10,6 +10,7 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@ -4,9 +4,11 @@ import android.Manifest;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.text.format.Formatter;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@ -63,8 +65,8 @@ public class EarthquakeMapsActivity extends FragmentActivity implements OnMapRea
|
|||||||
|
|
||||||
//Shake Sensor
|
//Shake Sensor
|
||||||
private SensorManager mSensorManager;
|
private SensorManager mSensorManager;
|
||||||
private static final float mUpperThreshold = 10.5f; // für Emulator auf 1.5 setzen
|
private static final float mUpperThreshold = 1.5f; // für Emulator auf 1.5 setzen
|
||||||
private static final float mLowerThreshold = 5.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 = 10000;
|
private static final long mShakeDetectionLockTimeMicroSeconds = 10000;
|
||||||
private float mAccel;
|
private float mAccel;
|
||||||
private float mAccelCurrent;
|
private float mAccelCurrent;
|
||||||
@ -152,6 +154,7 @@ public class EarthquakeMapsActivity extends FragmentActivity implements OnMapRea
|
|||||||
|
|
||||||
private void writeEarthquakeToDatabase()
|
private void writeEarthquakeToDatabase()
|
||||||
{
|
{
|
||||||
|
setDataBaseValues(true);
|
||||||
//TODO Erdbeben + Erzeugerparameter in Datenbank schreiben
|
//TODO Erdbeben + Erzeugerparameter in Datenbank schreiben
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
@ -238,7 +241,7 @@ public class EarthquakeMapsActivity extends FragmentActivity implements OnMapRea
|
|||||||
Toast.makeText(EarthquakeMapsActivity.this, currentTime.toString(), Toast.LENGTH_SHORT).show();
|
Toast.makeText(EarthquakeMapsActivity.this, currentTime.toString(), Toast.LENGTH_SHORT).show();
|
||||||
currentLocation.setLatitude(breitengrad);
|
currentLocation.setLatitude(breitengrad);
|
||||||
currentLocation.setLongitude(laengengrad);
|
currentLocation.setLongitude(laengengrad);
|
||||||
setDataBaseValues(); //TODO Edward: Die Funktion geht jetzt. Statt Datum wird Unix Zeitstempel als Long Typ verwendet
|
setDataBaseValues(false); //TODO Edward: Die Funktion geht jetzt. Statt Datum wird Unix Zeitstempel als Long Typ verwendet
|
||||||
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()),15f);
|
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()),15f);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -266,6 +269,7 @@ public class EarthquakeMapsActivity extends FragmentActivity implements OnMapRea
|
|||||||
@Override
|
@Override
|
||||||
public void onDataChange(@NonNull DataSnapshot snapshot) {
|
public void onDataChange(@NonNull DataSnapshot snapshot) {
|
||||||
processDataBaseValues(snapshot); //Daten Snapshot, Übergabe an processDataBaseValues
|
processDataBaseValues(snapshot); //Daten Snapshot, Übergabe an processDataBaseValues
|
||||||
|
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onCancelled(@NonNull DatabaseError error) {
|
public void onCancelled(@NonNull DatabaseError error) {
|
||||||
@ -291,14 +295,18 @@ public class EarthquakeMapsActivity extends FragmentActivity implements OnMapRea
|
|||||||
|
|
||||||
|
|
||||||
//TODO Edward: Hier ist eine beispielhafte Methode mit der du Werte in der Datenbank setzen kannst
|
//TODO Edward: Hier ist eine beispielhafte Methode mit der du Werte in der Datenbank setzen kannst
|
||||||
public void setDataBaseValues()
|
public void setDataBaseValues(boolean vibration)
|
||||||
{
|
{
|
||||||
|
currentTime = Calendar.getInstance().getTimeInMillis();
|
||||||
|
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
|
||||||
|
int ip = wm.getConnectionInfo().getIpAddress();
|
||||||
|
String ipAddress = String.format("%d.%d.%d.%d",(ip & 0xff),(ip >> 8 & 0xff),(ip >> 16 & 0xff), (ip >> 24 & 0xff));
|
||||||
mDatenbank = FirebaseDatabase.getInstance().getReference();
|
mDatenbank = FirebaseDatabase.getInstance().getReference();
|
||||||
mDatenbank.child("overview").child("IDG1").child("ip").setValue("10.00.00.001");
|
mDatenbank.child("overview").child("IDG1").child("ip").setValue(ipAddress);
|
||||||
mDatenbank.child("overview").child("IDG1").child("vibration").setValue(true);
|
mDatenbank.child("overview").child("IDG1").child("vibration").setValue(vibration);
|
||||||
mDatenbank.child("overview").child("IDG1").child("timestamp").setValue(currentTime); //aktueller Zeitstempel wird in Datenbank eingetragen
|
mDatenbank.child("overview").child("IDG1").child("timestamp").setValue(currentTime); //aktueller Zeitstempel wird in Datenbank eingetragen
|
||||||
mDatenbank.child("overview").child("IDG1").child("breitengrad").setValue(currentLocation.getLatitude()); //aktueller Breitengrad
|
mDatenbank.child("overview").child("IDG1").child("breitengrad").setValue(currentLocation.getLatitude()); //aktueller Breitengrad
|
||||||
mDatenbank.child("overview").child("IDG1").child("laengengrad").setValue(currentLocation.getLongitude()); //aktueller Längergrad
|
mDatenbank.child("overview").child("IDG1").child("laengengrad").setValue(currentLocation.getLongitude()); //aktueller Längergrad
|
||||||
mDatenbank.child("overview").child("IDG1").child("amplitude").setValue(1001);
|
mDatenbank.child("overview").child("IDG1").child("amplitude").setValue(255);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -44,7 +44,7 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa
|
|||||||
private static final String TAG = "MainActivity";
|
private static final String TAG = "MainActivity";
|
||||||
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
|
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
|
||||||
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
|
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
|
||||||
|
private static final double EARTHQUAKE_VELOCITY = 1; // 1 Meter pro Sekunde Erdbebengeschwindigkeit
|
||||||
//vars
|
//vars
|
||||||
private Boolean mLocationPermissionsGranted = false;
|
private Boolean mLocationPermissionsGranted = false;
|
||||||
private GoogleMap mMap;
|
private GoogleMap mMap;
|
||||||
@ -75,7 +75,7 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa
|
|||||||
getVibrationAbility();
|
getVibrationAbility();
|
||||||
//distance(currentLocation.getLatitude(), currentLocation.getLongitude(),breitengrad,laengengrad); //Übergabe zur Berechnung der Distanz zwischen Auslöser und aktuellem Standort
|
//distance(currentLocation.getLatitude(), currentLocation.getLongitude(),breitengrad,laengengrad); //Übergabe zur Berechnung der Distanz zwischen Auslöser und aktuellem Standort
|
||||||
//TODO Patrick: die Funktion distance gibt Meter zurück, könntest Du das mit dem Zeitstempel und der Berechnung bis zur Vibration machen?
|
//TODO Patrick: die Funktion distance gibt Meter zurück, könntest Du das mit dem Zeitstempel und der Berechnung bis zur Vibration machen?
|
||||||
setVibrationTimer(10000,1000,255);
|
// setVibrationTimer(10000,1000,255);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getLocationPermission() {
|
private void getLocationPermission() {
|
||||||
@ -108,10 +108,16 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private long getTimeStampDifference(Date vibrationTime)
|
private long getTimeStampDifference(float distance)
|
||||||
{
|
{
|
||||||
long diff= 0;
|
long diff= 0;
|
||||||
//TODO Zeitdifferenz in Millisekunden zwischen aktuellen Uhrzeit und Vibratonszeitstempel berechnen
|
//TODO Zeitdifferenz in Millisekunden zwischen aktuellen Uhrzeit und Vibratonszeitstempel berechnen
|
||||||
|
|
||||||
|
|
||||||
|
if (distance>0)
|
||||||
|
{
|
||||||
|
diff = (long)Math.round(1/(EARTHQUAKE_VELOCITY/distance));
|
||||||
|
}
|
||||||
return diff;
|
return diff;
|
||||||
}
|
}
|
||||||
private void setVibrationTimer(long msDelay, int duration, int amplitude)
|
private void setVibrationTimer(long msDelay, int duration, int amplitude)
|
||||||
@ -286,7 +292,13 @@ public class SensorMapsActivity extends FragmentActivity implements OnMapReadyCa
|
|||||||
//####### Auslesen für ing-Werte #######:
|
//####### Auslesen für ing-Werte #######:
|
||||||
String amplitudeString = data.child("overview").child("IDG" + i).child("amplitude").getValue().toString();
|
String amplitudeString = data.child("overview").child("IDG" + i).child("amplitude").getValue().toString();
|
||||||
int amplitude = Integer.parseInt(amplitudeString);
|
int amplitude = Integer.parseInt(amplitudeString);
|
||||||
|
//TODO Workaround beseiteigen: hier wird immer davon ausgegangen, dass auslösendes Gerät die ID 1 besitzt
|
||||||
|
if(vibration == true && i == 1)
|
||||||
|
{
|
||||||
|
float distance = distance(currentLocation.getLatitude(), currentLocation.getLongitude(),breitengrad,laengengrad);
|
||||||
|
long delay = getTimeStampDifference(distance);
|
||||||
|
setVibrationTimer(delay,1000,amplitude);
|
||||||
|
}
|
||||||
//####### Optional zur Kontrolle #######:
|
//####### Optional zur Kontrolle #######:
|
||||||
/*
|
/*
|
||||||
System.out.println("IDG" + i + " - IP:" + data.child("overview").child("IDG" + i).child("ip").getValue().toString());
|
System.out.println("IDG" + i + " - IP:" + data.child("overview").child("IDG" + i).child("ip").getValue().toString());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user