Browse Source

Merge branch 'bk_video_service' into bk_video

# Conflicts:
#	app/src/main/java/com/example/ueberwachungssystem/MainActivity.java
bk_video
Bastian Kohler 1 year ago
parent
commit
0ee1446cbc

+ 2
- 0
app/build.gradle View File

@@ -42,6 +42,8 @@ dependencies {
def opencv_version = "4.5.3.0"
implementation "com.quickbirdstudios:opencv:${opencv_version}"

implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"


// Required for CameraX
def camerax_version = "1.2.2"

+ 1
- 0
app/src/main/AndroidManifest.xml View File

@@ -24,6 +24,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".Detection.DetectorService"/>
</application>

</manifest>

+ 164
- 0
app/src/main/java/com/example/ueberwachungssystem/Detection/DetectorService.java View File

@@ -0,0 +1,164 @@
package com.example.ueberwachungssystem.Detection;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.camera.core.ExperimentalGetImage;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleService;

import java.io.File;

@ExperimentalGetImage
public class DetectorService extends LifecycleService {

public TestBinder testBinder = new TestBinder();
private DetectorService.OnDetectionListener listener;
private boolean isServiceRunning = false;

VideoDetector videoDetector = null;
AudioRecorder audioRecorder = null;


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (isServiceRunning)
return START_NOT_STICKY;
videoDetector = new VideoDetector(this);
videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() {
@Override
public void onDetection(@NonNull DetectionReport detectionReport) {
passToServiceListener(detectionReport);
}
});

audioRecorder = new AudioRecorder(this);


isServiceRunning = true;

return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
super.onDestroy();
isServiceRunning = false;
}

/** Service methods */
public class TestBinder extends Binder {
public DetectorService getBoundService() {
// Return an instance of the TestService
return DetectorService.this;
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
super.onBind(intent);
return testBinder;
}


/** Video Detection */
public void startVideoDetection() {
if(videoDetector != null)
videoDetector.startDetection();
}
public void stopVideoDetection() {
if(videoDetector != null)
videoDetector.stopDetection();
}
public boolean isVideoDetectionRunning() {
if(videoDetector != null)
return videoDetector.isDetecting();
return false;
}
public void debugVideoProcessing(ImageView input, ImageView output) {
if(videoDetector != null)
videoDetector.debugProcessing(input, output);
}

/** Audio Detection */
public void startAudioDetection() {

}
public void stopAudioDetection() {

}

/** Motion Detection */
public void startMotionDetection() {

}
public void stopMotionDetection() {

}

/** Video Recording */
public void startVideoRecording() {
if(videoDetector != null)
videoDetector.startRecording();
}
public void stopVideoRecording() {
if(videoDetector != null)
videoDetector.stopRecording();
}
public boolean isVideoRecordingRunning() {
if(videoDetector != null)
return videoDetector.isRecording();
return false;
}
public void setVideoRecordingDir(File outputDir) {
if (videoDetector != null)
videoDetector.setOutputDir(outputDir);
}

/** Audio Recording */
public void startAudioRecording() {
if(audioRecorder != null)
audioRecorder.startRecording();
}
public void stopAudioRecording() {
if(audioRecorder != null)
audioRecorder.stopRecording();
}
public boolean isAudioRecordingRunning() {
if(videoDetector != null)
return audioRecorder.isRecording();
return false;
}
public void setAudioRecordingDir(File outputDir) {
if (audioRecorder != null)
audioRecorder.setOutputDir(outputDir);
}




/** pass Detection Report to Service Detection Listener and trigger it */
public void passToServiceListener(DetectionReport detectionReport) {
if (listener != null) {
listener.onDetection(detectionReport);
}
}


/** On Detection Listener - runs when violation is reported */
public interface OnDetectionListener {
void onDetection(@NonNull DetectionReport detectionReport);
}
public void setOnDetectionListener(@NonNull DetectorService.OnDetectionListener listener) {
this.listener = listener;
}
}

+ 1
- 1
app/src/main/java/com/example/ueberwachungssystem/Detection/VideoDetector.java View File

@@ -81,7 +81,7 @@ public class VideoDetector extends Detector {
// Parameters
private static final float ALARM_THRESHOLD = 0.5f; // Percent of pixels changed
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);




Loading…
Cancel
Save