package com.example.greenwatch; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.SurfaceView; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.example.greenwatch.adapters.AlarmHistoryListAdapter; import com.example.greenwatch.adapters.DeviceListAdapter; import com.example.greenwatch.models.Device; import com.example.greenwatch.viewmodels.MainActivityViewModel; import java.util.List; public class MainActivity extends AppCompatActivity { private Button audiodetectionButton; private Button videodetectionButton; private Button accelerometerButton; private Button audiodetectionAndAccelerometerButton; private Button videodetectionAndAccelerometerButton; private TextView tvMainActivityDeviceListRecyclerView; private TextView tvMainActivityAlarmHistoryListRecyclerView; private SurfaceView surfaceView; private MainActivityViewModel mMainActivityViewModel; private Permission permission = new Permission(); private Activity activity = new Activity(); private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); activity = MainActivity.this; context = MainActivity.this; surfaceView = (SurfaceView) findViewById(R.id.surfaceViewMainActivity); tvMainActivityDeviceListRecyclerView = (TextView) findViewById(R.id.tvMainActivityDeviceListRecyclerView); tvMainActivityAlarmHistoryListRecyclerView = (TextView) findViewById(R.id.tvMainActivityAlarmHistoryListRecyclerView); audiodetectionButton = (Button) findViewById(R.id.audiodetectionButton); videodetectionButton = (Button) findViewById(R.id.videodetectionButton); accelerometerButton = (Button) findViewById(R.id.accelerometerButton); audiodetectionAndAccelerometerButton = (Button) findViewById(R.id.audiodetectionAndAccelerometerButton); videodetectionAndAccelerometerButton = (Button) findViewById(R.id.videodetectionAndAccelerometerButton); RecyclerView deviceListRecyclerView = findViewById(R.id.deviceListRecyclerView); deviceListRecyclerView.setLayoutManager(new LinearLayoutManager(this)); deviceListRecyclerView.setHasFixedSize(true); final DeviceListAdapter deviceListAdapter = new DeviceListAdapter(); deviceListRecyclerView.setAdapter(deviceListAdapter); RecyclerView alarmHistoryListRecyclerView = findViewById(R.id.alarmHistoryListRecyclerView); alarmHistoryListRecyclerView.setLayoutManager(new LinearLayoutManager(this)); alarmHistoryListRecyclerView.setHasFixedSize(true); final AlarmHistoryListAdapter alarmHistoryListAdapter = new AlarmHistoryListAdapter(); alarmHistoryListRecyclerView.setAdapter(alarmHistoryListAdapter); permission.startRechtePruefen(this, this); mMainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class); mMainActivityViewModel.init(surfaceView.getHolder()); mMainActivityViewModel.getConnectedDeviceList().observe(this, new Observer>() { @Override public void onChanged(List devices) { deviceListAdapter.setDevices(devices); } }); mMainActivityViewModel.getAlarmHistoryList().observe(this, new Observer>() { @Override public void onChanged(List devices) { alarmHistoryListAdapter.setAlarmHistoryList(devices); } }); mMainActivityViewModel.getStartAlarmRecording().observe(this, new Observer() { @Override public void onChanged(Boolean aBoolean) { if (aBoolean) { if(permission.alarmRechtePruefen(context, activity)){ Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); mMainActivityViewModel.startAlarmRecording(); //todo AlarmHandling einfügen } else { permission.alarmRechteAnfordern(activity); if(permission.alarmRechtePruefen(context, activity)){ Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); mMainActivityViewModel.startAlarmRecording(); //todo Alarmhandling einfügen } else { Toast.makeText(MainActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); mMainActivityViewModel.stopAlarmRecording(MainActivity.this); } } } else { Toast.makeText(MainActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); } } }); audiodetectionButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (permission.microRechtePruefen(context, activity)) { openAudiodetectionActivity(); } else { permission.microRechteAnfordern(activity); } } }); videodetectionButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (permission.kameraRechtePruefen(context, activity)) { openVideodetectionActivity(); } else { permission.kameraRechteAnfordern(activity); } } }); accelerometerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openAccelerometerActivity(); mMainActivityViewModel.setSensorType(mMainActivityViewModel.getLocalDeviceUUID(), "Accelerometer"); } }); audiodetectionAndAccelerometerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (permission.microRechtePruefen(context, activity)) { openAudiodetectionAndAccelerometerActivity(); } else { permission.microRechteAnfordern(activity); } } }); videodetectionAndAccelerometerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (permission.kameraRechtePruefen(context, activity)) { openVideodetectionAndAccelerometerActivity(); } else { permission.kameraRechteAnfordern(activity); } } }); } @Override protected void onResume() { super.onResume(); mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "No Sensor selected", 0.0f); } public void openAudiodetectionActivity() { mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "Audio", 0.0f); Intent intent = new Intent(this, AudiodetectionActivity.class); startActivity(intent); } public void openVideodetectionActivity() { mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "Video", 0.0f); Intent intent = new Intent(this, VideodetectionActivity.class); startActivity(intent); } public void openAccelerometerActivity() { mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "Accelerometer", 0.0f); Intent intent = new Intent(this, AccelerometerActivity.class); startActivity(intent); } public void openAudiodetectionAndAccelerometerActivity() { mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "AudioAndAccelerometer", 0.0f); Intent intent = new Intent(this, AudiodetectionAndAccelerometerActivity.class); startActivity(intent); } public void openVideodetectionAndAccelerometerActivity() { mMainActivityViewModel.updateDevice(mMainActivityViewModel.getLocalDeviceUUID(), mMainActivityViewModel.getSystemTimeStamp(), false, "VideoAndAccelerometer", 0.0f); Intent intent = new Intent(this, VideodetectionAndAccelerometerActivity.class); startActivity(intent); } @Override protected void onPause() { super.onPause(); } }