123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- package com.example.greenwatch.viewmodels;
-
- import android.content.Context;
- import android.view.SurfaceHolder;
-
- import androidx.camera.lifecycle.ProcessCameraProvider;
- import androidx.lifecycle.LifecycleOwner;
- import androidx.lifecycle.LiveData;
- import androidx.lifecycle.MutableLiveData;
- import androidx.lifecycle.Observer;
- import androidx.lifecycle.ViewModel;
-
- import com.example.greenwatch.alarmrecorder.AlarmRecorder;
- import com.example.greenwatch.models.Device;
- import com.example.greenwatch.repositories.DeviceRepository;
- import com.example.greenwatch.sensors.AccelerometerSensor;
- import com.example.greenwatch.sensors.CameraSensor;
-
- import java.util.List;
-
- public class VideodetectionAndAccelerometerViewModel extends ViewModel implements ViewModelInterface{
- private MutableLiveData<List<Device>> mDeviceList;
- private MutableLiveData<Boolean> mAccelerometerAlarmDetected;
- private MutableLiveData<Boolean> mVideoAlarmDetected;
- private MutableLiveData<Boolean> mVideodetectionAndAccelerometerAlarmDetected = new MutableLiveData<>();
- private MutableLiveData<List<Device>> mAlarmHistoryList;
- private MutableLiveData<Boolean> mStartAlarmRecording;
- private AccelerometerSensor mAccelerometerSensor;
- private CameraSensor mCameraSensor;
- private DeviceRepository mDeviceRepository;
- private AlarmRecorder mAlarmRecorder;
- private boolean videoAlarmDetected;
- private boolean accelerometerAlarmDetected;
- private boolean videodetectionAndAccelerometerAlarmDetected;
-
- public void addValueToGesamtBE(float newValue) {
- mAccelerometerSensor.addValueToGesamtBE(newValue);
- }
-
- public void meanValueCalculation() {
- mAccelerometerSensor.meanValueCalculation();
- }
-
- public void calibrateAccelerometerSensor() {
- mAccelerometerSensor.calibrateAccelerometerSensor();
- }
-
- public void checkAlarmCondition() {
- mAccelerometerSensor.checkAlarmCondition();
- }
-
- public float getAccelerometerSensorMeanValue() {
- return mAccelerometerSensor.getAccelerometerSensorMeanValue();
- }
-
- public void bindImageAnalysis(ProcessCameraProvider cameraProvider, LifecycleOwner lifecycleOwner, Context context) {
- mCameraSensor.bindImageAnalysis(cameraProvider, lifecycleOwner, context);
- }
-
- public LiveData<Boolean> getVideodetectionAndAccelerometerAlarmDetected() {
- setMutableLiveDataVideodetectionAndAccelerometerAlarmDetected();
- return mVideodetectionAndAccelerometerAlarmDetected;
- }
-
- private void setMutableLiveDataVideodetectionAndAccelerometerAlarmDetected() {
- mVideodetectionAndAccelerometerAlarmDetected.setValue(videodetectionAndAccelerometerAlarmDetected);
- }
-
- private void setAccelerometerAlarmDetected(boolean accelerometerAlarmDetected) {
- this.accelerometerAlarmDetected = accelerometerAlarmDetected;
- }
-
- public boolean getAccelerometerAlarmDetected() {
- return accelerometerAlarmDetected;
- }
-
- private void setVideoAlarmDetected(boolean videoAlarmDetected) {
- this.videoAlarmDetected = videoAlarmDetected;
- }
-
- public boolean getVideoAlarmDetected() {
- return videoAlarmDetected;
- }
-
- Observer<Boolean> observer = new Observer<Boolean>() {
- @Override
- public void onChanged(Boolean aBoolean) {
- setAccelerometerAlarmDetected(mAccelerometerAlarmDetected.getValue());
- setVideoAlarmDetected(mVideoAlarmDetected.getValue());
- if (videoAlarmDetected || accelerometerAlarmDetected && !videodetectionAndAccelerometerAlarmDetected) {
- videodetectionAndAccelerometerAlarmDetected = true;
- setMutableLiveDataVideodetectionAndAccelerometerAlarmDetected();
-
- }
- else if (!videoAlarmDetected && !accelerometerAlarmDetected && videodetectionAndAccelerometerAlarmDetected) {
- videodetectionAndAccelerometerAlarmDetected = false;
- setMutableLiveDataVideodetectionAndAccelerometerAlarmDetected();
- }
- }
- };
-
- private void registerAlarmObserver() {
- mVideoAlarmDetected.observeForever(observer);
- mAccelerometerAlarmDetected.observeForever(observer);
- }
-
- @Override
- protected void onCleared() {
- super.onCleared();
- mVideoAlarmDetected.removeObserver(observer);
- mAccelerometerAlarmDetected.removeObserver(observer);
- }
-
- @Override
- public void init(SurfaceHolder previewHolder) {
- if (mDeviceRepository == null) {
- mDeviceRepository = DeviceRepository.getInstance();
- }
- if (mAccelerometerSensor == null) {
- mAccelerometerSensor = AccelerometerSensor.getInstance();
- }
- if (mCameraSensor == null) {
- mCameraSensor = CameraSensor.getInstance();
- }
- if (mAlarmRecorder == null) {
- mAlarmRecorder = AlarmRecorder.getInstance();
- }
- if (mDeviceList == null) {
- mDeviceList = mDeviceRepository.getConnectedDeviceList();
- }
- if (mAlarmHistoryList == null) {
- mAlarmHistoryList = mDeviceRepository.getAlarmHistoryDeviceList();
- }
- if (mStartAlarmRecording == null) {
- mStartAlarmRecording = mDeviceRepository.getStartAlarmRecording();
- }
- if (mAccelerometerAlarmDetected == null) {
- mAccelerometerAlarmDetected = mAccelerometerSensor.getAccelerometerAlarmDetected();
- }
- if (mVideoAlarmDetected == null) {
- mVideoAlarmDetected = mCameraSensor.getVideoAlarmDetectedValue();
- }
- videodetectionAndAccelerometerAlarmDetected = false;
- videoAlarmDetected = false;
- accelerometerAlarmDetected = false;
- registerAlarmObserver();
- setAlarmRecordingPreviewHolder(previewHolder);
- }
-
- @Override
- public LiveData<List<Device>> getConnectedDeviceList() {
- return mDeviceList;
- }
-
- @Override
- public LiveData<List<Device>> getAlarmHistoryList() {
- return mAlarmHistoryList;
- }
-
- @Override
- public LiveData<Boolean> getStartAlarmRecording() {
- return mStartAlarmRecording;
- }
-
- @Override
- public void updateDevice(String deviceID, String timeStamp, boolean sensorStatus, String sensorType, float sensorMassage) {
- mDeviceRepository.updateDevice(deviceID, timeStamp, sensorStatus, sensorType, sensorMassage);
- }
-
- @Override
- public void setTimeStamp(String deviceID, String timeStamp) {
- mDeviceRepository.setTimeStamp(deviceID, timeStamp);
- }
-
- @Override
- public String getTimeStamp(String deviceID) {
- return mDeviceRepository.getTimeStamp(deviceID);
- }
-
- @Override
- public void setDeviceID(String deviceID, String newDeviceID) {
- mDeviceRepository.setDeviceID(deviceID, newDeviceID);
- }
-
- @Override
- public String getDeviceID(String deviceID) {
- return mDeviceRepository.getDeviceID(deviceID);
- }
-
- @Override
- public void setSensorStatus(String deviceID, boolean sensorStatus) {
- mDeviceRepository.setSensorStatus(deviceID, sensorStatus);
- }
-
- @Override
- public boolean getSensorStatus(String deviceID) {
- return mDeviceRepository.getSensorStatus(deviceID);
- }
-
- @Override
- public void setSensorType(String deviceID, String sensorType) {
- mDeviceRepository.setSensorType(deviceID, sensorType);
- }
-
- @Override
- public String getSensorType(String deviceID) {
- return mDeviceRepository.getSensorType(deviceID);
- }
-
- @Override
- public void setSensorMassage(String deviceID, float sensorMessage) {
- mDeviceRepository.setSensorMassage(deviceID, sensorMessage);
- }
-
- @Override
- public float getSensorMassage(String deviceID) {
- return mDeviceRepository.getSensorMassage(deviceID);
- }
-
- @Override
- public String getLocalDeviceUUID() {
- return mDeviceRepository.getLocalDeviceUUID();
- }
-
- @Override
- public String getSystemTimeStamp() {
- return mDeviceRepository.getSystemTimeStamp();
- }
-
- @Override
- public void startAlarmRecording() {
- mAlarmRecorder.startRecording();
- }
-
- @Override
- public void stopAlarmRecording(Context context) {
- mAlarmRecorder.stopRecording(context);
- }
-
- @Override
- public void setAlarmRecordingPreviewHolder(SurfaceHolder previewHolder) {
- mAlarmRecorder.setPreviewHolder(previewHolder);
- }
- }
|