@@ -5,6 +5,8 @@ | |||
<uses-permission android:name="android.permission.INTERNET" /> | |||
<uses-permission android:name="android.permission.CAMERA"/> | |||
<uses-permission android:name="android.permission.RECORD_AUDIO" /> | |||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | |||
<uses-feature android:name="android.hardware.camera"/> | |||
@@ -32,6 +32,7 @@ public class AccelerometerActivity extends AppCompatActivity implements SensorEv | |||
private TextView accelerometerWarningTV; | |||
private Button backToMainActivityButton; | |||
private AccelerometerViewModel mAccelerometerViewModel; | |||
private Permission permission = new Permission(); | |||
@Override | |||
protected void onCreate(Bundle savedInstanceState) { | |||
@@ -84,7 +85,18 @@ public class AccelerometerActivity extends AppCompatActivity implements SensorEv | |||
@Override | |||
public void onChanged(Boolean aBoolean) { | |||
if (aBoolean) { | |||
Toast.makeText(AccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
if(permission.alarmRechtePruefen(AccelerometerActivity.this, AccelerometerActivity.this)){ | |||
Toast.makeText(AccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo AlarmHandling einfügen | |||
} else { | |||
permission.alarmRechteAnfordern(AccelerometerActivity.this); | |||
if(permission.alarmRechtePruefen(AccelerometerActivity.this, AccelerometerActivity.this)){ | |||
Toast.makeText(AccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo Alarmhandling einfügen | |||
} else { | |||
Toast.makeText(AccelerometerActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
} | |||
} | |||
} | |||
else { | |||
Toast.makeText(AccelerometerActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); |
@@ -24,6 +24,7 @@ import java.util.List; | |||
public class AudiodetectionActivity extends AppCompatActivity { | |||
private TextView microfonStatusMessage; | |||
private Button backToMainActivityButton; | |||
private Permission permission = new Permission(); | |||
private MicrofonViewModel mMicrofonViewModel; | |||
@Override | |||
@@ -75,7 +76,18 @@ public class AudiodetectionActivity extends AppCompatActivity { | |||
@Override | |||
public void onChanged(Boolean aBoolean) { | |||
if (aBoolean) { | |||
Toast.makeText(AudiodetectionActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
if(permission.alarmRechtePruefen(AudiodetectionActivity.this, AudiodetectionActivity.this)){ | |||
Toast.makeText(AudiodetectionActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo AlarmHandling einfügen | |||
} else { | |||
permission.alarmRechteAnfordern(AudiodetectionActivity.this); | |||
if(permission.alarmRechtePruefen(AudiodetectionActivity.this, AudiodetectionActivity.this)){ | |||
Toast.makeText(AudiodetectionActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo Alarmhandling einfügen | |||
} else { | |||
Toast.makeText(AudiodetectionActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
} | |||
} | |||
} | |||
else { | |||
Toast.makeText(AudiodetectionActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); |
@@ -31,6 +31,8 @@ public class AudiodetectionAndAccelerometerActivity extends AppCompatActivity im | |||
private AudiodetectionAndAccelerometerViewModel mAudiodetectionAndAccelerometerViewModel; | |||
private Button backToMainActivity; | |||
private Permission permission = new Permission(); | |||
@Override | |||
protected void onCreate(Bundle savedInstanceState) { | |||
super.onCreate(savedInstanceState); | |||
@@ -80,7 +82,18 @@ public class AudiodetectionAndAccelerometerActivity extends AppCompatActivity im | |||
@Override | |||
public void onChanged(Boolean aBoolean) { | |||
if (aBoolean) { | |||
Toast.makeText(AudiodetectionAndAccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
if(permission.alarmRechtePruefen(AudiodetectionAndAccelerometerActivity.this, AudiodetectionAndAccelerometerActivity.this)){ | |||
Toast.makeText(AudiodetectionAndAccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo AlarmHandling einfügen | |||
} else { | |||
permission.alarmRechteAnfordern(AudiodetectionAndAccelerometerActivity.this); | |||
if(permission.alarmRechtePruefen(AudiodetectionAndAccelerometerActivity.this, AudiodetectionAndAccelerometerActivity.this)){ | |||
Toast.makeText(AudiodetectionAndAccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo Alarmhandling einfügen | |||
} else { | |||
Toast.makeText(AudiodetectionAndAccelerometerActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
} | |||
} | |||
} | |||
else { | |||
Toast.makeText(AudiodetectionAndAccelerometerActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); |
@@ -6,6 +6,8 @@ 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.hardware.SensorManager; | |||
import android.os.Bundle; | |||
@@ -18,6 +20,7 @@ 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 { | |||
@@ -29,12 +32,19 @@ public class MainActivity extends AppCompatActivity { | |||
private Button videodetectionAndAccelerometerButton; | |||
private Button connectionButton; | |||
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; | |||
audiodetectionButton = (Button) findViewById(R.id.audiodetectionButton); | |||
videodetectionButton = (Button) findViewById(R.id.videodetectionButton); | |||
accelerometerButton = (Button) findViewById(R.id.accelerometerButton); | |||
@@ -56,10 +66,10 @@ public class MainActivity extends AppCompatActivity { | |||
final AlarmHistoryListAdapter alarmHistoryListAdapter = new AlarmHistoryListAdapter(); | |||
alarmHistoryListRecyclerView.setAdapter(alarmHistoryListAdapter); | |||
permission.startRechtePruefen(this, this); | |||
mMainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class); | |||
mMainActivityViewModel.init(); | |||
mMainActivityViewModel.accessRequestCamera(this); | |||
mMainActivityViewModel.accessRequestMicrofon(this); | |||
mMainActivityViewModel.getConnectedDeviceList().observe(this, new Observer<List<Device>>() { | |||
@Override | |||
public void onChanged(List<Device> devices) { | |||
@@ -78,7 +88,18 @@ public class MainActivity extends AppCompatActivity { | |||
@Override | |||
public void onChanged(Boolean aBoolean) { | |||
if (aBoolean) { | |||
Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
if(permission.alarmRechtePruefen(context, activity)){ | |||
Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo AlarmHandling einfügen | |||
} else { | |||
permission.alarmRechteAnfordern(activity); | |||
if(permission.alarmRechtePruefen(context, activity)){ | |||
Toast.makeText(MainActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo Alarmhandling einfügen | |||
} else { | |||
Toast.makeText(MainActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
} | |||
} | |||
} | |||
else { | |||
Toast.makeText(MainActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
@@ -89,22 +110,23 @@ public class MainActivity extends AppCompatActivity { | |||
audiodetectionButton.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
if (mMainActivityViewModel.isMicrofonAccessAllowed(MainActivity.this)) { | |||
if (permission.microRechtePruefen(context, activity)) { | |||
openAudiodetectionActivity(); | |||
} | |||
else { | |||
mMainActivityViewModel.accessRequestMicrofon(MainActivity.this); | |||
permission.microRechteAnfordern(activity); | |||
} | |||
} | |||
}); | |||
videodetectionButton.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
if (mMainActivityViewModel.isCameraAccessAllowed(MainActivity.this)) { | |||
if (permission.kameraRechtePruefen(context, activity)) { | |||
openVideodetectionActivity(); | |||
} | |||
else { | |||
mMainActivityViewModel.accessRequestCamera(MainActivity.this); | |||
permission.kameraRechteAnfordern(activity); | |||
} | |||
} | |||
}); | |||
@@ -118,18 +140,23 @@ public class MainActivity extends AppCompatActivity { | |||
audiodetectionAndAccelerometerButton.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
if (mMainActivityViewModel.isMicrofonAccessAllowed(MainActivity.this)) { | |||
if (permission.microRechtePruefen(context, activity)) { | |||
openAudiodetectionAndAccelerometerActivity(); | |||
} | |||
else { | |||
mMainActivityViewModel.accessRequestMicrofon(MainActivity.this); | |||
permission.microRechteAnfordern(activity); | |||
} | |||
} | |||
}); | |||
videodetectionAndAccelerometerButton.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
openVideodetectionAndAccelerometerActivity(); | |||
if (permission.kameraRechtePruefen(context, activity)) { | |||
openVideodetectionAndAccelerometerActivity(); | |||
} | |||
else { | |||
permission.kameraRechteAnfordern(activity); | |||
} | |||
} | |||
}); | |||
connectionButton.setOnClickListener(new View.OnClickListener() { |
@@ -0,0 +1,128 @@ | |||
package com.example.greenwatch; | |||
import static android.Manifest.permission.CAMERA; | |||
import static android.Manifest.permission.RECORD_AUDIO; | |||
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; | |||
import static android.Manifest.permission.READ_EXTERNAL_STORAGE; | |||
import static androidx.core.app.ActivityCompat.requestPermissions; | |||
import static androidx.core.content.ContextCompat.checkSelfPermission; | |||
import android.Manifest; | |||
import android.app.Activity; | |||
import android.content.Context; | |||
import android.content.DialogInterface; | |||
import android.content.pm.PackageManager; | |||
import android.os.Bundle; | |||
import android.util.Log; | |||
import android.view.View; | |||
import androidx.appcompat.app.AlertDialog; | |||
import androidx.appcompat.app.AppCompatActivity; | |||
import androidx.core.app.ActivityCompat; | |||
import androidx.core.content.ContextCompat; | |||
public class Permission { | |||
private static final int PERMISSION_REQUEST_MICRO = 1; | |||
private static final int PERMISSION_REQUEST_CAMERA = 2; | |||
private static final int PERMISSION_REQUEST_ALARM = 1234; | |||
private static final int PERMISSION_REQUEST_START = 1235; | |||
public void startRechtePruefen(Context context, Activity activity){ | |||
boolean rechtKamera = checkSelfPermission(context, CAMERA) == PackageManager.PERMISSION_GRANTED; | |||
boolean rechtAudio = checkSelfPermission(context, RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED; | |||
boolean rechtSchreiben = checkSelfPermission(context, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; | |||
boolean rechtLesen = checkSelfPermission(context, READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; | |||
Log.d("Kamera Rechte", String.valueOf(rechtKamera)); | |||
Log.d("Audio Rechte", String.valueOf(rechtAudio)); | |||
Log.d("Schreib Rechte", String.valueOf(rechtSchreiben)); | |||
Log.d("Lese Rechte", String.valueOf(rechtLesen)); | |||
if(rechtKamera && rechtAudio && rechtSchreiben && rechtLesen){ | |||
Log.d("Rechte", "erteilt"); | |||
} else { | |||
startRechteAnfordern(activity); | |||
} | |||
} | |||
public boolean kameraRechtePruefen(Context context, Activity activity){ | |||
boolean rechtKamera = checkSelfPermission(context, CAMERA) == PackageManager.PERMISSION_GRANTED; | |||
Log.d("Kamera Rechte", String.valueOf(rechtKamera)); | |||
if(rechtKamera){ | |||
Log.d("Kamerarechte", "erteilt"); | |||
return true; | |||
} else { | |||
kameraRechteAnfordern(activity); | |||
if(checkSelfPermission(context, CAMERA) == PackageManager.PERMISSION_GRANTED){ | |||
return true; | |||
} else { | |||
return false; | |||
} | |||
} | |||
} | |||
public boolean microRechtePruefen(Context context, Activity activity){ | |||
boolean rechtAudio = checkSelfPermission(context, RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED; | |||
Log.d("Audio Rechte", String.valueOf(rechtAudio)); | |||
if(rechtAudio){ | |||
Log.d("Rechte", "erteilt"); | |||
return true; | |||
} else { | |||
microRechteAnfordern(activity); | |||
if(checkSelfPermission(context, RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED){ | |||
return true; | |||
} else { | |||
return false; | |||
} | |||
} | |||
} | |||
public boolean alarmRechtePruefen(Context context, Activity activity){ | |||
boolean rechtKamera = checkSelfPermission(context, CAMERA) == PackageManager.PERMISSION_GRANTED; | |||
boolean rechtAudio = checkSelfPermission(context, RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED; | |||
boolean rechtSchreiben = checkSelfPermission(context, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; | |||
boolean rechtLesen = checkSelfPermission(context, READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; | |||
Log.d("Kamera Rechte", String.valueOf(rechtKamera)); | |||
Log.d("Audio Rechte", String.valueOf(rechtAudio)); | |||
Log.d("Schreib Rechte", String.valueOf(rechtSchreiben)); | |||
Log.d("Lese Rechte", String.valueOf(rechtLesen)); | |||
if(rechtKamera && rechtAudio && rechtSchreiben && rechtLesen){ | |||
Log.d("Rechte", "erteilt"); | |||
return true; | |||
} else { | |||
alarmRechteAnfordern(activity); | |||
if(checkSelfPermission(context, CAMERA) == PackageManager.PERMISSION_GRANTED | |||
&& checkSelfPermission(context, RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED | |||
&& checkSelfPermission(context, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED | |||
&& checkSelfPermission(context, READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){ | |||
return true; | |||
} else { | |||
return false; | |||
} | |||
} | |||
} | |||
public void startRechteAnfordern(Activity activity){ | |||
ActivityCompat.requestPermissions(activity, new String[]{CAMERA, RECORD_AUDIO, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_START); | |||
} | |||
public void kameraRechteAnfordern(Activity activity){ | |||
ActivityCompat.requestPermissions(activity, new String[]{CAMERA}, PERMISSION_REQUEST_CAMERA); | |||
} | |||
public void microRechteAnfordern(Activity activity){ | |||
ActivityCompat.requestPermissions(activity, new String[]{RECORD_AUDIO}, PERMISSION_REQUEST_MICRO); | |||
} | |||
public void alarmRechteAnfordern(Activity activity){ | |||
ActivityCompat.requestPermissions(activity, new String[]{CAMERA, RECORD_AUDIO, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_ALARM); | |||
} | |||
} |
@@ -27,6 +27,7 @@ public class VideodetectionActivity extends AppCompatActivity { | |||
private Button backToMainActivity; | |||
private VideodetectionViewModel mVideoDetectionViewModel; | |||
private Permission permission = new Permission(); | |||
@Override | |||
protected void onCreate(Bundle savedInstanceState) { | |||
@@ -76,7 +77,18 @@ public class VideodetectionActivity extends AppCompatActivity { | |||
@Override | |||
public void onChanged(Boolean aBoolean) { | |||
if (aBoolean) { | |||
Toast.makeText(VideodetectionActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
if(permission.alarmRechtePruefen(VideodetectionActivity.this, VideodetectionActivity.this)){ | |||
Toast.makeText(VideodetectionActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo AlarmHandling einfügen | |||
} else { | |||
permission.alarmRechteAnfordern(VideodetectionActivity.this); | |||
if(permission.alarmRechtePruefen(VideodetectionActivity.this, VideodetectionActivity.this)){ | |||
Toast.makeText(VideodetectionActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo Alarmhandling einfügen | |||
} else { | |||
Toast.makeText(VideodetectionActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
} | |||
} | |||
} | |||
else { | |||
Toast.makeText(VideodetectionActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); |
@@ -37,6 +37,7 @@ public class VideodetectionAndAccelerometerActivity extends AppCompatActivity im | |||
private TextView videodetectionAndAccelerometerWarningTV; | |||
private Button backToMainActivity; | |||
private VideodetectionAndAccelerometerViewModel mVideodetectionAndAccelerometerViewModel; | |||
private Permission permission = new Permission(); | |||
@Override | |||
protected void onCreate(Bundle savedInstanceState) { | |||
@@ -89,7 +90,18 @@ public class VideodetectionAndAccelerometerActivity extends AppCompatActivity im | |||
@Override | |||
public void onChanged(Boolean aBoolean) { | |||
if (aBoolean) { | |||
Toast.makeText(VideodetectionAndAccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
if(permission.alarmRechtePruefen(VideodetectionAndAccelerometerActivity.this, VideodetectionAndAccelerometerActivity.this)){ | |||
Toast.makeText(VideodetectionAndAccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo AlarmHandling einfügen | |||
} else { | |||
permission.alarmRechteAnfordern(VideodetectionAndAccelerometerActivity.this); | |||
if(permission.alarmRechtePruefen(VideodetectionAndAccelerometerActivity.this, VideodetectionAndAccelerometerActivity.this)){ | |||
Toast.makeText(VideodetectionAndAccelerometerActivity.this, "Start Alarm Recording", Toast.LENGTH_LONG).show(); | |||
//todo Alarmhandling einfügen | |||
} else { | |||
Toast.makeText(VideodetectionAndAccelerometerActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); | |||
} | |||
} | |||
} | |||
else { | |||
Toast.makeText(VideodetectionAndAccelerometerActivity.this, "Stop Alarm Recording", Toast.LENGTH_LONG).show(); |
@@ -23,8 +23,6 @@ public class MainActivityViewModel extends ViewModel implements ViewModelInterfa | |||
private MutableLiveData<List<Device>> mAlarmHistoryList; | |||
private MutableLiveData<Boolean> mStartAlarmRecording; | |||
private DeviceRepository mDeviceRepository; | |||
private static final int RIGHTS_REQUEST_CAMERA = 10; | |||
private static final int RIGHTS_REQUEST_CAMERA_MICROFON = 1; | |||
@Override | |||
public void init() { | |||
@@ -43,22 +41,6 @@ public class MainActivityViewModel extends ViewModel implements ViewModelInterfa | |||
mStartAlarmRecording = mDeviceRepository.getStartAlarmRecording(); | |||
} | |||
public boolean isMicrofonAccessAllowed(Context context) { | |||
return ContextCompat.checkSelfPermission(context, android.Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED; | |||
} | |||
public void accessRequestMicrofon(Activity activity) { | |||
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.RECORD_AUDIO}, RIGHTS_REQUEST_CAMERA_MICROFON); | |||
} | |||
public boolean isCameraAccessAllowed(Context context) { | |||
return ContextCompat.checkSelfPermission(context, android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; | |||
} | |||
public void accessRequestCamera(Activity activity) { | |||
ActivityCompat.requestPermissions(activity, new String[]{android.Manifest.permission.CAMERA}, RIGHTS_REQUEST_CAMERA); | |||
} | |||
@Override | |||
public LiveData<List<Device>> getConnectedDeviceList() { | |||
return mDeviceList; |