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.

MicrofonViewModel.java 4.9KB

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