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 9.2KB

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