This commit is contained in:
Bastian Kohler 2023-06-19 14:27:04 +02:00
parent ab41217f0e
commit 0a3600d0d6
3 changed files with 34 additions and 2 deletions

View File

@ -1,6 +1,9 @@
package com.example.ueberwachungssystem.Detection; package com.example.ueberwachungssystem.Detection;
import android.Manifest;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Binder; import android.os.Binder;
import android.os.IBinder; import android.os.IBinder;
import android.util.Log; import android.util.Log;
@ -9,6 +12,8 @@ import android.widget.ImageView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.camera.core.ExperimentalGetImage; import androidx.camera.core.ExperimentalGetImage;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleService; import androidx.lifecycle.LifecycleService;
@ExperimentalGetImage @ExperimentalGetImage
@ -16,6 +21,7 @@ public class DetectorService extends LifecycleService {
public TestBinder testBinder = new TestBinder(); public TestBinder testBinder = new TestBinder();
private DetectorService.OnDetectionListener listener; private DetectorService.OnDetectionListener listener;
private boolean isServiceRunning = false;
VideoDetector videoDetector = null; VideoDetector videoDetector = null;
AudioRecorder audioRecorder = null; AudioRecorder audioRecorder = null;
@ -23,6 +29,8 @@ public class DetectorService extends LifecycleService {
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
if (isServiceRunning)
return START_NOT_STICKY;
videoDetector = new VideoDetector(this); videoDetector = new VideoDetector(this);
videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() { videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() {
@Override @Override
@ -32,9 +40,19 @@ public class DetectorService extends LifecycleService {
}); });
audioRecorder = new AudioRecorder(this); audioRecorder = new AudioRecorder(this);
isServiceRunning = true;
return super.onStartCommand(intent, flags, startId); return super.onStartCommand(intent, flags, startId);
} }
@Override
public void onDestroy() {
super.onDestroy();
isServiceRunning = false;
}
/** Service methods */ /** Service methods */
public class TestBinder extends Binder { public class TestBinder extends Binder {
public DetectorService getBoundService() { public DetectorService getBoundService() {

View File

@ -76,13 +76,12 @@ public class VideoDetector extends Detector {
// Recorder // Recorder
private File outputDir; // Default: in app files directory private File outputDir; // Default: in app files directory
private int rotation = 0;
// Parameters // Parameters
private static final float ALARM_THRESHOLD = 0.5f; // Percent of pixels changed private static final float ALARM_THRESHOLD = 0.5f; // Percent of pixels changed
private static final float START_DELAY = 20000; // milliseconds private static final float START_DELAY = 20000; // milliseconds
private static final android.util.Size IMAGE_RES = new android.util.Size(640, 480); private static final android.util.Size IMAGE_RES = new android.util.Size(480, 360);

View File

@ -4,11 +4,16 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.camera.core.ExperimentalGetImage; import androidx.camera.core.ExperimentalGetImage;
import androidx.camera.view.PreviewView; import androidx.camera.view.PreviewView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.Activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.util.Log; import android.util.Log;
@ -80,4 +85,14 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
public void onServiceDisconnected(ComponentName name) {} public void onServiceDisconnected(ComponentName name) {}
}; };
private boolean hasPermissions() {
return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
}
private void getPermissions() {
if (!hasPermissions())
ActivityCompat.requestPermissions((Activity) this, new String[]{android.Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, 12345);
}
} }