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.

AccelerometerActivity.java 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.example.greenwatch;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import androidx.lifecycle.Observer;
  4. import androidx.lifecycle.ViewModelProvider;
  5. import androidx.recyclerview.widget.LinearLayoutManager;
  6. import androidx.recyclerview.widget.RecyclerView;
  7. import android.hardware.Sensor;
  8. import android.hardware.SensorEvent;
  9. import android.hardware.SensorEventListener;
  10. import android.hardware.SensorManager;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.widget.Button;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16. import com.example.greenwatch.adapters.AlarmHistoryListAdapter;
  17. import com.example.greenwatch.adapters.DeviceListAdapter;
  18. import com.example.greenwatch.models.Device;
  19. import com.example.greenwatch.viewmodels.AccelerometerViewModel;
  20. import java.util.List;
  21. public class AccelerometerActivity extends AppCompatActivity implements SensorEventListener {
  22. private SensorManager accelerometerManager;
  23. private Sensor accelerometerSensor;
  24. private TextView accelerometerStatusMessage;
  25. private TextView accelerometerDataTV;
  26. private TextView accelerometerWarningTV;
  27. private Button backToMainActivityButton;
  28. private AccelerometerViewModel mAccelerometerViewModel;
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_accelerometer);
  33. accelerometerStatusMessage = (TextView) findViewById(R.id.tvAccelerometerStatusmessage);
  34. accelerometerDataTV = (TextView) findViewById(R.id.tvAccelerometerData);
  35. accelerometerWarningTV = (TextView) findViewById(R.id.tvAccelerometerWarning);
  36. backToMainActivityButton = (Button) findViewById(R.id.accelerometerBackToMainActivity);
  37. RecyclerView recyclerView = findViewById(R.id.deviceListRecyclerView);
  38. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  39. recyclerView.setHasFixedSize(true);
  40. final DeviceListAdapter deviceListAdapter = new DeviceListAdapter();
  41. recyclerView.setAdapter(deviceListAdapter);
  42. RecyclerView alarmHistoryListRecyclerView = findViewById(R.id.alarmHistoryListRecyclerView);
  43. alarmHistoryListRecyclerView.setLayoutManager(new LinearLayoutManager(this));
  44. alarmHistoryListRecyclerView.setHasFixedSize(true);
  45. final AlarmHistoryListAdapter alarmHistoryListAdapter = new AlarmHistoryListAdapter();
  46. alarmHistoryListRecyclerView.setAdapter(alarmHistoryListAdapter);
  47. backToMainActivityButton.setOnClickListener(new View.OnClickListener() {
  48. @Override
  49. public void onClick(View v) {
  50. finish();
  51. }
  52. });
  53. mAccelerometerViewModel = new ViewModelProvider(this).get(AccelerometerViewModel.class);
  54. mAccelerometerViewModel.init();
  55. mAccelerometerViewModel.getConnectedDeviceList().observe(this, new Observer<List<Device>>() {
  56. @Override
  57. public void onChanged(List<Device> devices) {
  58. deviceListAdapter.setDevices(devices);
  59. Toast.makeText(AccelerometerActivity.this, "onChanged", Toast.LENGTH_LONG).show();
  60. }
  61. });
  62. mAccelerometerViewModel.getAlarmHistoryList().observe(this, new Observer<List<Device>>() {
  63. @Override
  64. public void onChanged(List<Device> devices) {
  65. alarmHistoryListAdapter.setAlarmHistoryList(devices);
  66. }
  67. });
  68. mAccelerometerViewModel.getMovementDetectedValue().observe(this, new Observer<Boolean>() {
  69. @Override
  70. public void onChanged(Boolean aBoolean) {
  71. if (aBoolean) {
  72. mAccelerometerViewModel.updateDevice(mAccelerometerViewModel.getLocalDeviceUUID(), mAccelerometerViewModel.getSystemTimeStamp(), true, "Accelerometer", 10);
  73. }
  74. else {
  75. mAccelerometerViewModel.updateDevice(mAccelerometerViewModel.getLocalDeviceUUID(), mAccelerometerViewModel.getSystemTimeStamp(), false, "Accelerometer", 0);
  76. }
  77. }
  78. });
  79. accelerometerManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  80. if (accelerometerManager.getSensorList(Sensor.TYPE_GYROSCOPE).size() == 0) {
  81. accelerometerSensor = null;
  82. Toast.makeText(AccelerometerActivity.this, "No accelerometer sensor available", Toast.LENGTH_LONG).show();
  83. }
  84. else {
  85. accelerometerSensor = accelerometerManager.getSensorList(Sensor.TYPE_GYROSCOPE).get(0);
  86. }
  87. }
  88. @Override
  89. public void onSensorChanged(SensorEvent event) {
  90. StringBuilder sb = new StringBuilder();
  91. sb.append("x=")
  92. .append(event.values[0])
  93. .append("\ny=")
  94. .append(event.values[1])
  95. .append("\nz=")
  96. .append(event.values[2]);
  97. accelerometerDataTV.setText(sb.toString());
  98. mAccelerometerViewModel.addValueToGesamtBE(event.values[0] + event.values[1] + event.values[2]);
  99. mAccelerometerViewModel.meanValueCalculation();
  100. mAccelerometerViewModel.calibrateAccelerometerSensor();
  101. mAccelerometerViewModel.checkAlarmCondition();
  102. }
  103. @Override
  104. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  105. }
  106. @Override
  107. protected void onResume() {
  108. super.onResume();
  109. if (accelerometerSensor != null) {
  110. if (accelerometerManager.registerListener(this, accelerometerSensor, SensorManager.SENSOR_DELAY_GAME)) {
  111. Toast.makeText(AccelerometerActivity.this, "We registered to the sensor", Toast.LENGTH_LONG).show();
  112. } else {
  113. Toast.makeText(AccelerometerActivity.this, "Registration did not work", Toast.LENGTH_LONG).show();
  114. }
  115. }
  116. }
  117. @Override
  118. protected void onPause() {
  119. super.onPause();
  120. if (accelerometerSensor != null) {
  121. accelerometerManager.unregisterListener(this, accelerometerSensor);
  122. }
  123. }
  124. }