1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package com.example.greenwatch.sensors;
-
- import androidx.lifecycle.MutableLiveData;
-
- import java.util.ArrayList;
-
- public class AccelerometerSensor {
- private MutableLiveData<Boolean> mAccelerometerAlarmDetected = new MutableLiveData<>();
- private static AccelerometerSensor accelerometerSensorInstance;
- private boolean accelerometerAlarmDetected;
- private ArrayList<Float> Gesamt_be;
- int arraySize = 500;
- int functionCallCount;
- float meanValue;
- float offsetValue;
- float thresholdValue;
- boolean startMeasuring;
-
- private AccelerometerSensor() {
- initGesamtBE();
- accelerometerAlarmDetected = false;
- setMutableLiveDataAccelerometerAlarmDetected();
- functionCallCount = 0;
- meanValue = 0.0f;
- offsetValue = 0.1f;
- thresholdValue = 0.15f;
- startMeasuring = false;
- }
-
- public static synchronized AccelerometerSensor getInstance() {
- if (accelerometerSensorInstance == null){
- accelerometerSensorInstance = new AccelerometerSensor();
- }
- return accelerometerSensorInstance;
- }
-
- public MutableLiveData<Boolean> getAccelerometerAlarmDetected() {
- setMutableLiveDataAccelerometerAlarmDetected();
- return mAccelerometerAlarmDetected;
- }
-
- private void setMutableLiveDataAccelerometerAlarmDetected() {
- mAccelerometerAlarmDetected.setValue(accelerometerAlarmDetected);
- }
-
- private void initGesamtBE() {
- Gesamt_be = new ArrayList<>(arraySize);
- for (int i = 0; i < arraySize; i++) {
- Gesamt_be.add(0.0f);
- }
- }
-
- public void addValueToGesamtBE(float newValue) {
- if (Gesamt_be.size() == arraySize) {
- Gesamt_be.remove(Gesamt_be.size() -1);
- }
- Gesamt_be.add(0, newValue);
- functionCallCount++;
- }
-
- public void meanValueCalculation() {
- for (float element : Gesamt_be) {
- meanValue += Math.abs(element);
- }
- meanValue = meanValue/arraySize;
- }
-
- public void calibrateAccelerometerSensor() {
- if (functionCallCount <= arraySize) {
- offsetValue = meanValue;
- }
- else {
- startMeasuring = true;
- }
- }
-
- public void checkAlarmCondition() {
- if (meanValue > (thresholdValue + offsetValue) && startMeasuring && !mAccelerometerAlarmDetected.getValue()) {
- mAccelerometerAlarmDetected.setValue(true);
- }
- else if (meanValue < (thresholdValue + offsetValue) && mAccelerometerAlarmDetected.getValue()){
- mAccelerometerAlarmDetected.setValue(false);
- }
- }
-
- public float getAccelerometerSensorMeanValue() {
- return meanValue;
- }
- }
|