Fixed a bug in the video decoder
This commit is contained in:
parent
d04d166e14
commit
2501662737
@ -54,7 +54,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
vd.setOnDetectionListener(new VideoDetector.OnDetectionListener() {
|
vd.setOnDetectionListener(new VideoDetector.OnDetectionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onDetection(DetectionReport detectionReport) {
|
public void onDetection(DetectionReport detectionReport) {
|
||||||
Log.d("Listener", detectionReport.detectionType);
|
detectionReport.log("OnDetection");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
vd.startDetection();
|
vd.startDetection();
|
||||||
@ -99,39 +99,4 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void previewCamera() {
|
|
||||||
// Request Camera Access
|
|
||||||
getCameraAccess();
|
|
||||||
// Return when Camera Access not allowed or Camera Preview is running
|
|
||||||
if (!isCameraAccessAllowed() || cameraPreviewIsRunning)
|
|
||||||
return;
|
|
||||||
// Camera Preview is running
|
|
||||||
cameraPreviewIsRunning = true;
|
|
||||||
// Request Camera Provider
|
|
||||||
final ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
|
||||||
//Check for Camera availability
|
|
||||||
cameraProviderFuture.addListener(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
|
|
||||||
bindPreview(cameraProvider);
|
|
||||||
} catch (ExecutionException | InterruptedException e) {
|
|
||||||
// No errors need to be handled for this Future. This should never be reached.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},ContextCompat.getMainExecutor(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void bindPreview(@NonNull ProcessCameraProvider cameraProvider) {
|
|
||||||
// Create Preview
|
|
||||||
Preview preview = new Preview.Builder().build();
|
|
||||||
// Specify which Camera to use
|
|
||||||
CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build();
|
|
||||||
// Connect Preview to PreviewView
|
|
||||||
preview.setSurfaceProvider(previewView.getSurfaceProvider());
|
|
||||||
Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner)this, cameraSelector, preview);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -25,6 +25,7 @@ import java.util.concurrent.ExecutionException;
|
|||||||
|
|
||||||
@ExperimentalGetImage
|
@ExperimentalGetImage
|
||||||
public class VideoDetector {
|
public class VideoDetector {
|
||||||
|
|
||||||
// Calling Activity
|
// Calling Activity
|
||||||
private final Context context;
|
private final Context context;
|
||||||
// Camera Provider
|
// Camera Provider
|
||||||
@ -41,20 +42,23 @@ public class VideoDetector {
|
|||||||
|
|
||||||
|
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
public VideoDetector(Context context) { this.context = context; }
|
public VideoDetector(Context context) {
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** On Detection Listener - runs when a violation is reported */
|
/** On Detection Listener - runs when a violation is reported */
|
||||||
public interface OnDetectionListener {
|
public interface OnDetectionListener {
|
||||||
public void onDetection(DetectionReport detectionReport);
|
void onDetection(DetectionReport detectionReport);
|
||||||
}
|
}
|
||||||
public void setOnDetectionListener(OnDetectionListener listener) {
|
public void setOnDetectionListener(OnDetectionListener listener) {
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
public void reportViolation(float amplitude) {
|
public void reportViolation(float amplitude) {
|
||||||
DetectionReport detectionReport = new DetectionReport("123", "Video", amplitude);
|
if (listener != null) {
|
||||||
if (listener != null)
|
DetectionReport detectionReport = new DetectionReport("123", "Video", amplitude);
|
||||||
listener.onDetection(detectionReport);
|
listener.onDetection(detectionReport);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -66,7 +70,8 @@ public class VideoDetector {
|
|||||||
|
|
||||||
/** Starts Video Detection */
|
/** Starts Video Detection */
|
||||||
public void startDetection() {
|
public void startDetection() {
|
||||||
isDetectionRunning = true;
|
if (isDetectionRunning)
|
||||||
|
return;
|
||||||
// Request Camera Provider
|
// Request Camera Provider
|
||||||
final ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(context);
|
final ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(context);
|
||||||
//Check for Camera availability
|
//Check for Camera availability
|
||||||
@ -76,6 +81,7 @@ public class VideoDetector {
|
|||||||
try {
|
try {
|
||||||
cameraProvider = cameraProviderFuture.get();
|
cameraProvider = cameraProviderFuture.get();
|
||||||
bindLuminosityAnalysis(cameraProvider);
|
bindLuminosityAnalysis(cameraProvider);
|
||||||
|
isDetectionRunning = true;
|
||||||
} catch (ExecutionException | InterruptedException e) {
|
} catch (ExecutionException | InterruptedException e) {
|
||||||
// No errors need to be handled for this Future. This should never be reached.
|
// No errors need to be handled for this Future. This should never be reached.
|
||||||
}
|
}
|
||||||
@ -86,6 +92,8 @@ public class VideoDetector {
|
|||||||
|
|
||||||
/** Stops Video Detection */
|
/** Stops Video Detection */
|
||||||
public void stopDetection() {
|
public void stopDetection() {
|
||||||
|
if (!isDetectionRunning)
|
||||||
|
return;
|
||||||
cameraProvider.unbindAll();
|
cameraProvider.unbindAll();
|
||||||
isDetectionRunning = false;
|
isDetectionRunning = false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user