Browse Source

Added DetectionService

bk_video
Bastian Kohler 1 year ago
parent
commit
ab41217f0e

+ 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>

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

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

import android.content.Intent;
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.lifecycle.LifecycleService;

@ExperimentalGetImage
public class DetectorService extends LifecycleService {

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

VideoDetector videoDetector = null;
AudioRecorder audioRecorder = null;


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

audioRecorder = new AudioRecorder(this);
return super.onStartCommand(intent, flags, startId);
}

/** 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;
}

/** 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;
}


/** 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;
}
}

+ 38
- 27
app/src/main/java/com/example/ueberwachungssystem/MainActivity.java View File

@@ -5,48 +5,43 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.camera.core.ExperimentalGetImage;
import androidx.camera.view.PreviewView;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ToggleButton;

import com.example.ueberwachungssystem.Detection.AudioRecorder;
import com.example.ueberwachungssystem.Detection.DetectionReport;
import com.example.ueberwachungssystem.Detection.Detector;
import com.example.ueberwachungssystem.Detection.VideoDetector;
import com.example.ueberwachungssystem.Detection.DetectorService;

@ExperimentalGetImage
public class MainActivity extends AppCompatActivity {

private DetectorService detectorService = new DetectorService();
private ImageView inputImageView;
private ImageView outputImageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


ImageView inputImageView = findViewById(R.id.inputImageView);
ImageView outputImageView = findViewById(R.id.outputImageView);
inputImageView = findViewById(R.id.inputImageView);
outputImageView = findViewById(R.id.outputImageView);
PreviewView previewView = findViewById(R.id.previewView);


VideoDetector vd = new VideoDetector(this);
//vd.setPreviewView(previewView);
vd.debugProcessing(inputImageView, outputImageView);
vd.setOnDetectionListener(new Detector.OnDetectionListener() {
@Override
public void onDetection(@NonNull DetectionReport detectionReport) {
Log.d("onDetection", detectionReport.toString());
if (detectionReport.detectionState)
vd.startRecording();
else
vd.stopRecording();
}
});
vd.startDetection();

Intent serviceIntent = new Intent(this, DetectorService.class);
bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);
startService(serviceIntent);

AudioRecorder audioRecorder = new AudioRecorder(this);



@@ -56,17 +51,33 @@ public class MainActivity extends AppCompatActivity {
public void onClick(View v) {
if (toggleButton.isChecked())
{
//vd.startDetection();
vd.stopDetection();
//vd.startRecording();
audioRecorder.startRecording();
detectorService.startVideoRecording();
//detectorService.startAudioRecording();
}
else {
//vd.stopDetection();
vd.stopRecording();
audioRecorder.stopRecording();
//detectorService.stopAudioRecording();
detectorService.stopVideoRecording();
}
}
});
}

private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
DetectorService.TestBinder binder = (DetectorService.TestBinder) service;
detectorService = binder.getBoundService();

detectorService.startVideoDetection();
detectorService.debugVideoProcessing(inputImageView, outputImageView);
detectorService.setOnDetectionListener(new DetectorService.OnDetectionListener() {
@Override
public void onDetection(@NonNull DetectionReport detectionReport) {
Log.d("onDetection", detectionReport.toString());
}
});
}
@Override
public void onServiceDisconnected(ComponentName name) {}
};
}

Loading…
Cancel
Save