Changde Detector class
This commit is contained in:
parent
bbd333426d
commit
8551abfc5d
@ -10,7 +10,6 @@ public class DetectionReport {
|
||||
public String detectionType;
|
||||
public float detectedValue;
|
||||
public boolean detectionState;
|
||||
//public String detectorID;
|
||||
|
||||
public DetectionReport(boolean detectionState, String detectionType, float detectedAmplitude) {
|
||||
this.timeStamp = String.valueOf(Calendar.getInstance().getTime());
|
||||
@ -24,12 +23,12 @@ public class DetectionReport {
|
||||
|
||||
/** Get Detection Report in String format */
|
||||
public String toString() {
|
||||
String state = "State: " + "[" + this.detectionState + "]";
|
||||
String time = "Time: " + "[" + this.timeStamp + "]";
|
||||
String type = "Type: " + "[" + this.detectionType + "]";
|
||||
String value = "Value: " + "[" + this.detectedValue + "]";
|
||||
//String id = "ID: " + "[" + this.detectorID + "]";
|
||||
|
||||
return String.join("\t", time, type, value);
|
||||
return String.join("\t", state, time, type, value);
|
||||
}
|
||||
|
||||
/** Debug Report */
|
||||
|
@ -1,10 +1,18 @@
|
||||
package com.example.ueberwachungssystem.Detection;
|
||||
|
||||
import android.os.CountDownTimer;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
|
||||
abstract public class Detector {
|
||||
private OnDetectionListener listener;
|
||||
private boolean isDetecting = false;
|
||||
private boolean extendDetection = false;
|
||||
|
||||
// Countdown parameters
|
||||
private int COUNTDOWN_TIME = 1000; // milliseconds
|
||||
private int COUNTDOWN_POLLING_TIME = 100; // milliseconds
|
||||
|
||||
/** Constructor - takes context of current activity */
|
||||
public Detector() {}
|
||||
@ -18,17 +26,44 @@ abstract public class Detector {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
|
||||
/** Triggers onDetectionListener - call this to trigger violation/alarm */
|
||||
public void reportViolation(String detectionType, float amplitude) {
|
||||
if (listener != null) {
|
||||
DetectionReport detectionReport = new DetectionReport(true, detectionType, amplitude);
|
||||
listener.onDetection(detectionReport);
|
||||
if (!isDetecting) {
|
||||
isDetecting = true;
|
||||
DetectionReport detectionReport = new DetectionReport(true, detectionType, amplitude);
|
||||
listener.onDetection(detectionReport);
|
||||
startDetectionTimer(detectionType, amplitude);
|
||||
} else {
|
||||
extendDetection = true;
|
||||
}
|
||||
} else {
|
||||
isDetecting = false;
|
||||
extendDetection = false;
|
||||
throw new IllegalStateException("No listener set for violation reporting");
|
||||
}
|
||||
}
|
||||
|
||||
private void startDetectionTimer(String detectionType, float amplitude) {
|
||||
isDetecting = true;
|
||||
new CountDownTimer((long) COUNTDOWN_TIME, COUNTDOWN_POLLING_TIME) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
if (extendDetection) {
|
||||
extendDetection = false;
|
||||
startDetectionTimer(detectionType, amplitude);
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onFinish() {
|
||||
isDetecting = false;
|
||||
DetectionReport detectionReport = new DetectionReport(false, detectionType, amplitude);
|
||||
listener.onDetection(detectionReport);
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
|
||||
/** Starts Detection (abstract method: needs to be overridden in child class) */
|
||||
public abstract void startDetection();
|
||||
|
||||
|
@ -72,7 +72,7 @@ public class VideoDetector extends Detector {
|
||||
private static final int DILATE_KERNEL_SIZE = 5;
|
||||
private static final float CONTOUR_THRESHOLD = 100;
|
||||
private static final float ALARM_THRESHOLD = 0.2f; // Percent of pixels changed
|
||||
private static final long START_DELAY = 1; // milliseconds
|
||||
private static final long START_DELAY = 1000; // milliseconds
|
||||
private static final android.util.Size IMAGE_RES = new android.util.Size(640, 480);
|
||||
|
||||
|
||||
@ -155,15 +155,22 @@ public class VideoDetector extends Detector {
|
||||
//mat = alternativeProcessImage(mat);
|
||||
mat = processImage(mat);
|
||||
debugMat(mat, imageView1);
|
||||
|
||||
if (frameCnt <= 5) {
|
||||
reportViolation("Video", 0);
|
||||
frameCnt++;
|
||||
}
|
||||
}
|
||||
imageProxy.close();
|
||||
});
|
||||
|
||||
|
||||
// Create Preview
|
||||
Preview preview = new Preview.Builder().build();
|
||||
// Specify which Camera to use
|
||||
CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build();
|
||||
// Delay till start
|
||||
new CountDownTimer((long)(START_DELAY * 1000), 1000){
|
||||
new CountDownTimer((long)(START_DELAY), 1000){
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {}
|
||||
@Override
|
||||
|
@ -31,6 +31,8 @@ public class MainActivity extends AppCompatActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
getCameraAccess();
|
||||
|
||||
ImageView imageView = findViewById(R.id.imageView);
|
||||
ImageView ogiv = findViewById(R.id.ogiv);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user