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.

VideodetectionActivity.java 4.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package com.example.greenwatch;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import androidx.camera.lifecycle.ProcessCameraProvider;
  4. import androidx.core.content.ContextCompat;
  5. import androidx.lifecycle.Observer;
  6. import androidx.lifecycle.ViewModelProvider;
  7. import androidx.recyclerview.widget.LinearLayoutManager;
  8. import androidx.recyclerview.widget.RecyclerView;
  9. import android.os.Bundle;
  10. import android.view.View;
  11. import android.widget.Button;
  12. import android.widget.Toast;
  13. import com.example.greenwatch.adapters.AlarmHistoryListAdapter;
  14. import com.example.greenwatch.adapters.DeviceListAdapter;
  15. import com.example.greenwatch.models.Device;
  16. import com.example.greenwatch.viewmodels.AccelerometerViewModel;
  17. import com.example.greenwatch.viewmodels.VideodetectionViewModel;
  18. import com.google.common.util.concurrent.ListenableFuture;
  19. import java.util.List;
  20. import java.util.concurrent.ExecutionException;
  21. public class VideodetectionActivity extends AppCompatActivity {
  22. private Button backToMainActivity;
  23. private VideodetectionViewModel mVideoDetectionViewModel;
  24. @Override
  25. protected void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.activity_videodetection);
  28. backToMainActivity = (Button) findViewById(R.id.videodetectorBackToMainActivity);
  29. RecyclerView recyclerView = findViewById(R.id.deviceListRecyclerView);
  30. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  31. recyclerView.setHasFixedSize(true);
  32. final DeviceListAdapter deviceListAdapter = new DeviceListAdapter();
  33. recyclerView.setAdapter(deviceListAdapter);
  34. RecyclerView alarmHistoryListRecyclerView = findViewById(R.id.alarmHistoryListRecyclerView);
  35. alarmHistoryListRecyclerView.setLayoutManager(new LinearLayoutManager(this));
  36. alarmHistoryListRecyclerView.setHasFixedSize(true);
  37. final AlarmHistoryListAdapter alarmHistoryListAdapter = new AlarmHistoryListAdapter();
  38. alarmHistoryListRecyclerView.setAdapter(alarmHistoryListAdapter);
  39. backToMainActivity.setOnClickListener(new View.OnClickListener() {
  40. @Override
  41. public void onClick(View v) {
  42. finish();
  43. }
  44. });
  45. mVideoDetectionViewModel = new ViewModelProvider(this).get(VideodetectionViewModel.class);
  46. mVideoDetectionViewModel.init();
  47. mVideoDetectionViewModel.getConnectedDeviceList().observe(this, new Observer<List<Device>>() {
  48. @Override
  49. public void onChanged(List<Device> devices) {
  50. deviceListAdapter.setDevices(devices);
  51. Toast.makeText(VideodetectionActivity.this, "onChanged", Toast.LENGTH_LONG).show();
  52. }
  53. });
  54. mVideoDetectionViewModel.getAlarmHistoryList().observe(this, new Observer<List<Device>>() {
  55. @Override
  56. public void onChanged(List<Device> devices) {
  57. alarmHistoryListAdapter.setAlarmHistoryList(devices);
  58. }
  59. });
  60. mVideoDetectionViewModel.getVideoAlarmDetectedValue().observe(this, new Observer<Boolean>() {
  61. @Override
  62. public void onChanged(Boolean aBoolean) {
  63. if (aBoolean) {
  64. mVideoDetectionViewModel.updateDevice(mVideoDetectionViewModel.getLocalDeviceUUID(), mVideoDetectionViewModel.getSystemTimeStamp(), true, "Video", 10);
  65. }
  66. else {
  67. mVideoDetectionViewModel.updateDevice(mVideoDetectionViewModel.getLocalDeviceUUID(), mVideoDetectionViewModel.getSystemTimeStamp(), false, "Video", 0);
  68. }
  69. }
  70. });
  71. final ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(this);
  72. cameraProviderFuture.addListener(() -> {
  73. try {
  74. mVideoDetectionViewModel.bindImageAnalysis(cameraProviderFuture.get(), this, this);
  75. } catch (ExecutionException | InterruptedException e) {
  76. e.printStackTrace();
  77. }
  78. }, ContextCompat.getMainExecutor(this));
  79. }
  80. }