You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

VideodetectionViewModel.java 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package com.example.greenwatch.viewmodels;
  2. import android.content.Context;
  3. import android.view.SurfaceHolder;
  4. import androidx.camera.lifecycle.ProcessCameraProvider;
  5. import androidx.lifecycle.LifecycleOwner;
  6. import androidx.lifecycle.LiveData;
  7. import androidx.lifecycle.MutableLiveData;
  8. import androidx.lifecycle.ViewModel;
  9. import com.example.greenwatch.alarmrecorder.AlarmRecorder;
  10. import com.example.greenwatch.models.Device;
  11. import com.example.greenwatch.repositories.DeviceRepository;
  12. import com.example.greenwatch.sensors.CameraSensor;
  13. import java.util.List;
  14. public class VideodetectionViewModel extends ViewModel implements ViewModelInterface {
  15. private MutableLiveData<List<Device>> mDeviceList;
  16. private MutableLiveData<Boolean> mVideoAlarmDetected;
  17. private MutableLiveData<List<Device>> mAlarmHistoryList;
  18. private MutableLiveData<Boolean> mStartAlarmRecording;
  19. private DeviceRepository mDeviceRepository;
  20. private AlarmRecorder mAlarmRecorder;
  21. private CameraSensor mCameraSensor;
  22. public LiveData<Boolean> getVideoMovementDetectedValue() {
  23. return mVideoAlarmDetected;
  24. }
  25. @Override
  26. public void init(SurfaceHolder previewHolder) {
  27. if (mDeviceRepository == null) {
  28. mDeviceRepository = DeviceRepository.getInstance();
  29. }
  30. if (mCameraSensor == null) {
  31. mCameraSensor = CameraSensor.getInstance();
  32. }
  33. if (mAlarmRecorder == null) {
  34. mAlarmRecorder = AlarmRecorder.getInstance();
  35. }
  36. if (mDeviceList == null) {
  37. mDeviceList = mDeviceRepository.getConnectedDeviceList();
  38. }
  39. if (mAlarmHistoryList == null) {
  40. mAlarmHistoryList = mDeviceRepository.getAlarmHistoryDeviceList();
  41. }
  42. if (mStartAlarmRecording == null) {
  43. mStartAlarmRecording = mDeviceRepository.getStartAlarmRecording();
  44. }
  45. if (mVideoAlarmDetected == null) {
  46. mVideoAlarmDetected = mCameraSensor.getVideoAlarmDetectedValue();
  47. }
  48. setAlarmRecordingPreviewHolder(previewHolder);
  49. }
  50. public void bindImageAnalysis(ProcessCameraProvider cameraProvider, LifecycleOwner lifecycleOwner, Context context) {
  51. mCameraSensor.bindImageAnalysis(cameraProvider, lifecycleOwner, context);
  52. }
  53. public LiveData<Boolean> getVideoAlarmDetectedValue() {
  54. return mVideoAlarmDetected;
  55. }
  56. @Override
  57. public LiveData<List<Device>> getConnectedDeviceList() {
  58. return mDeviceList;
  59. }
  60. @Override
  61. public LiveData<List<Device>> getAlarmHistoryList() {
  62. return mAlarmHistoryList;
  63. }
  64. @Override
  65. public LiveData<Boolean> getStartAlarmRecording() {
  66. return mStartAlarmRecording;
  67. }
  68. @Override
  69. public void updateDevice(String deviceID, String timeStamp, boolean sensorStatus, String sensorType, float sensorMassage) {
  70. mDeviceRepository.updateDevice(deviceID, timeStamp, sensorStatus, sensorType, sensorMassage);
  71. }
  72. @Override
  73. public void setTimeStamp(String deviceID, String timeStamp) {
  74. mDeviceRepository.setTimeStamp(deviceID, timeStamp);
  75. }
  76. @Override
  77. public String getTimeStamp(String deviceID) {
  78. return mDeviceRepository.getTimeStamp(deviceID);
  79. }
  80. @Override
  81. public void setDeviceID(String deviceID, String newDeviceID) {
  82. mDeviceRepository.setDeviceID(deviceID, newDeviceID);
  83. }
  84. @Override
  85. public String getDeviceID(String deviceID) {
  86. return mDeviceRepository.getDeviceID(deviceID);
  87. }
  88. @Override
  89. public void setSensorStatus(String deviceID, boolean sensorStatus) {
  90. mDeviceRepository.setSensorStatus(deviceID, sensorStatus);
  91. }
  92. @Override
  93. public boolean getSensorStatus(String deviceID) {
  94. return mDeviceRepository.getSensorStatus(deviceID);
  95. }
  96. @Override
  97. public void setSensorType(String deviceID, String sensorType) {
  98. mDeviceRepository.setSensorType(deviceID, sensorType);
  99. }
  100. @Override
  101. public String getSensorType(String deviceID) {
  102. return mDeviceRepository.getSensorType(deviceID);
  103. }
  104. @Override
  105. public void setSensorMassage(String deviceID, float sensorMessage) {
  106. mDeviceRepository.setSensorMassage(deviceID, sensorMessage);
  107. }
  108. @Override
  109. public float getSensorMassage(String deviceID) {
  110. return mDeviceRepository.getSensorMassage(deviceID);
  111. }
  112. @Override
  113. public String getLocalDeviceUUID() {
  114. return mDeviceRepository.getLocalDeviceUUID();
  115. }
  116. @Override
  117. public String getSystemTimeStamp() {
  118. return mDeviceRepository.getSystemTimeStamp();
  119. }
  120. @Override
  121. public void startAlarmRecording() {
  122. mAlarmRecorder.startRecording();
  123. }
  124. @Override
  125. public void stopAlarmRecording(Context context) {
  126. mAlarmRecorder.stopRecording(context);
  127. }
  128. @Override
  129. public void setAlarmRecordingPreviewHolder(SurfaceHolder previewHolder) {
  130. mAlarmRecorder.setPreviewHolder(previewHolder);
  131. }
  132. }