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.

MainActivity.java 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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.app.Activity;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.hardware.SensorManager;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.widget.Button;
  14. import android.widget.Toast;
  15. import com.example.greenwatch.adapters.AlarmHistoryListAdapter;
  16. import com.example.greenwatch.adapters.DeviceListAdapter;
  17. import com.example.greenwatch.models.Device;
  18. import com.example.greenwatch.viewmodels.MainActivityViewModel;
  19. import java.util.List;
  20. public class MainActivity extends AppCompatActivity {
  21. private Button audiodetectionButton;
  22. private Button videodetectionButton;
  23. private Button accelerometerButton;
  24. private Button audiodetectionAndAccelerometerButton;
  25. private Button videodetectionAndAccelerometerButton;
  26. private MainActivityViewModel mMainActivityViewModel;
  27. private Permission permission = new Permission();
  28. private Activity activity = new Activity();
  29. private Context context;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_main);
  34. activity = MainActivity.this;
  35. context = MainActivity.this;
  36. audiodetectionButton = (Button) findViewById(R.id.audiodetectionButton);
  37. videodetectionButton = (Button) findViewById(R.id.videodetectionButton);
  38. accelerometerButton = (Button) findViewById(R.id.accelerometerButton);
  39. audiodetectionAndAccelerometerButton = (Button) findViewById(R.id.audiodetectionAndAccelerometerButton);
  40. videodetectionAndAccelerometerButton = (Button) findViewById(R.id.videodetectionAndAccelerometerButton);
  41. RecyclerView deviceListRecyclerView = findViewById(R.id.deviceListRecyclerView);
  42. deviceListRecyclerView.setLayoutManager(new LinearLayoutManager(this));
  43. deviceListRecyclerView.setHasFixedSize(true);
  44. final DeviceListAdapter deviceListAdapter = new DeviceListAdapter();
  45. deviceListRecyclerView.setAdapter(deviceListAdapter);
  46. RecyclerView alarmHistoryListRecyclerView = findViewById(R.id.alarmHistoryListRecyclerView);
  47. alarmHistoryListRecyclerView.setLayoutManager(new LinearLayoutManager(this));
  48. alarmHistoryListRecyclerView.setHasFixedSize(true);
  49. final AlarmHistoryListAdapter alarmHistoryListAdapter = new AlarmHistoryListAdapter();
  50. alarmHistoryListRecyclerView.setAdapter(alarmHistoryListAdapter);
  51. permission.startRechtePruefen(this, this);
  52. mMainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);
  53. mMainActivityViewModel.init();
  54. mMainActivityViewModel.getConnectedDeviceList().observe(this, new Observer<List<Device>>() {
  55. @Override
  56. public void onChanged(List<Device> devices) {
  57. deviceListAdapter.setDevices(devices);
  58. }
  59. });
  60. mMainActivityViewModel.getAlarmHistoryList().observe(this, new Observer<List<Device>>() {
  61. @Override
  62. public void onChanged(List<Device> devices) {
  63. alarmHistoryListAdapter.setAlarmHistoryList(devices);
  64. }
  65. });
  66. mMainActivityViewModel.getStartAlarmRecording().observe(this, new Observer<Boolean>() {
  67. @Override
  68. public void onChanged(Boolean aBoolean) {
  69. if (aBoolean) {
  70. if(permission.alarmRechtePruefen(context, activity)){
  71. Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show();
  72. //todo AlarmHandling einfügen
  73. } else {
  74. permission.alarmRechteAnfordern(activity);
  75. if(permission.alarmRechtePruefen(context, activity)){
  76. Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show();
  77. //todo Alarmhandling einfügen
  78. } else {
  79. Toast.makeText(MainActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show();
  80. }
  81. }
  82. }
  83. else {
  84. Toast.makeText(MainActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show();
  85. }
  86. }
  87. });
  88. audiodetectionButton.setOnClickListener(new View.OnClickListener() {
  89. @Override
  90. public void onClick(View v) {
  91. if (permission.microRechtePruefen(context, activity)) {
  92. openAudiodetectionActivity();
  93. }
  94. else {
  95. permission.microRechteAnfordern(activity);
  96. }
  97. }
  98. });
  99. videodetectionButton.setOnClickListener(new View.OnClickListener() {
  100. @Override
  101. public void onClick(View v) {
  102. if (permission.kameraRechtePruefen(context, activity)) {
  103. openVideodetectionActivity();
  104. }
  105. else {
  106. permission.kameraRechteAnfordern(activity);
  107. }
  108. }
  109. });
  110. accelerometerButton.setOnClickListener(new View.OnClickListener() {
  111. @Override
  112. public void onClick(View v) {
  113. openAccelerometerActivity();
  114. mMainActivityViewModel.setSensorType(mMainActivityViewModel.getLocalDeviceUUID(), "Accelerometer");
  115. }
  116. });
  117. audiodetectionAndAccelerometerButton.setOnClickListener(new View.OnClickListener() {
  118. @Override
  119. public void onClick(View v) {
  120. if (permission.microRechtePruefen(context, activity)) {
  121. openAudiodetectionAndAccelerometerActivity();
  122. }
  123. else {
  124. permission.microRechteAnfordern(activity);
  125. }
  126. }
  127. });
  128. videodetectionAndAccelerometerButton.setOnClickListener(new View.OnClickListener() {
  129. @Override
  130. public void onClick(View v) {
  131. if (permission.kameraRechtePruefen(context, activity)) {
  132. openVideodetectionAndAccelerometerActivity();
  133. }
  134. else {
  135. permission.kameraRechteAnfordern(activity);
  136. }
  137. }
  138. });
  139. }
  140. @Override
  141. protected void onResume() {
  142. super.onResume();
  143. mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "No Sensor selected", 0.0f);
  144. }
  145. public void openAudiodetectionActivity() {
  146. mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "Audio", 0.0f);
  147. Intent intent = new Intent(this, AudiodetectionActivity.class);
  148. startActivity(intent);
  149. }
  150. public void openVideodetectionActivity() {
  151. mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "Video", 0.0f);
  152. Intent intent = new Intent(this, VideodetectionActivity.class);
  153. startActivity(intent);
  154. }
  155. public void openAccelerometerActivity() {
  156. mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "Accelerometer", 0.0f);
  157. Intent intent = new Intent(this, AccelerometerActivity.class);
  158. startActivity(intent);
  159. }
  160. public void openAudiodetectionAndAccelerometerActivity() {
  161. mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "AudioAndAccelerometer", 0.0f);
  162. Intent intent = new Intent(this, AudiodetectionAndAccelerometerActivity.class);
  163. startActivity(intent);
  164. }
  165. public void openVideodetectionAndAccelerometerActivity() {
  166. mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "VideoAndAccelerometer", 0.0f);
  167. Intent intent = new Intent(this, VideodetectionAndAccelerometerActivity.class);
  168. startActivity(intent);
  169. }
  170. }