diff --git a/Notiz.txt b/Notiz.txt new file mode 100644 index 0000000..cda991c --- /dev/null +++ b/Notiz.txt @@ -0,0 +1,3 @@ +Sensor als Service einrichten, der aus Activity heraus gestartet werden kann. +Stichwort: Intent +Siehe Skript Teil 1 \ No newline at end of file diff --git a/app/src/main/java/com/example/ueberwachungssystem/Detection/Accelerometer.java b/app/src/main/java/com/example/ueberwachungssystem/Detection/Accelerometer.java new file mode 100644 index 0000000..1eea143 --- /dev/null +++ b/app/src/main/java/com/example/ueberwachungssystem/Detection/Accelerometer.java @@ -0,0 +1,109 @@ +package com.example.ueberwachungssystem.Detection; + +import static java.lang.Math.sqrt; + +import android.content.Context; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; + + +/** + * Accelerometer inherits some methods from abstract Detector class (more info there) + * + * + * USE FROM MAIN ACTIVITY: + * + * Accelerometer beschleunigungssensor = new Accelerometer(this); + * onCreate: + * //Accelerometer Setup + * beschleunigungssensor = new Accelerometer(this, logger, textViewLog); //logger and textview only for debugging necessary + * beschleunigungssensor.getSensor(); + * + * //Starting Detection: + * beschleunigungssensor.startDetection(); + * //Stopping Detection: also recommended at onPause to avoid unnecessary battery consumption + * beschleunigungssensor.stopDetection(); + * + * */ + +public class Accelerometer extends Detector implements SensorEventListener { + + public SensorManager sensorManager; + private static final int sensorType = Sensor.TYPE_LINEAR_ACCELERATION; + private Sensor accelerometer; + private Context context; + boolean alarm = false; + //Preallocate memory for the data of each axis of the acceleration sensor + float x; + float y; + float z; + float betrag; //Betrag aller drei Achsen sqrt(x*x + y*y + z*z) + private DetectionReport detectionReport; + + // In constructor pass Activity, Context and TextView from MainActivity in Accelerometer class + public Accelerometer(Context context){ + super(context); //von Detektor + this.context = context; + } + + public void getSensor(){ + sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); + if(sensorManager.getSensorList(sensorType).size()==0) { + accelerometer = null; + } + else { + accelerometer = sensorManager.getSensorList(sensorType).get(0); + } + } + + @Override + public void onSensorChanged(SensorEvent event) { + try { + checkAlarm(event); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + public void checkAlarm (SensorEvent event) throws InterruptedException { + x = event.values[0]; + y = event.values[1]; + z = event.values[2]; + betrag = (float) sqrt(x*x + y*y + z*z); + float threshold = 1.5F; + + if (!alarm) { + if (betrag > threshold) { + alarm = true; + detectionReport = new DetectionReport("Accelerometer1", "Bewegung", betrag); + reportViolation("Accelo1", "Bewegung", betrag); + } + } else { + if (betrag < threshold) { + alarm = false; + } else { + } + } + } + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + + @Override + public void startDetection() { + // entspricht void start() + //getSensor(); + if (accelerometer != null) { + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME); + } + } + + @Override + public void stopDetection() { + // entspricht void stop() + sensorManager.unregisterListener(this, accelerometer); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index f05eacf..41532d1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false + id 'com.android.application' version '8.0.0' apply false + id 'com.android.library' version '8.0.0' apply false } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3e927b1..3a131ca 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,6 @@ android.useAndroidX=true # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +android.defaults.buildfeatures.buildconfig=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a5dbc0d..3a67f74 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu May 11 15:04:30 CEST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME