package com.basic.security.fragment.helper;
|
|
import com.basic.security.manager.DetectResultManager;
|
import com.basic.security.manager.FacePositionManager;
|
import com.basic.security.manager.RecognizeManager;
|
import com.basic.security.utils.DetectedResult;
|
import com.basic.security.utils.FacePosition;
|
import com.basic.security.utils.ThreadUtil;
|
|
import org.androidannotations.annotations.Background;
|
import org.androidannotations.annotations.EFragment;
|
|
import java.util.ArrayList;
|
import java.util.LinkedList;
|
import java.util.List;
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
|
@EFragment
|
public class CfCompareFeature extends CfDetectFace {
|
|
public final LinkedList<DetectedResult> detectedResultQueue = new LinkedList();
|
|
public void addDetectedResult(DetectedResult detectedResult) {
|
synchronized (detectedResultQueue) {
|
if (detectedResult == null || detectedResult.facePositions.size() == 0 ) {
|
return;
|
}
|
while (detectedResultQueue.size() >= 1) {
|
detectedResultQueue.poll();
|
}
|
detectedResultQueue.add(detectedResult);
|
}
|
}
|
|
@Background
|
public void compareFeature() {
|
while (true) {
|
try {
|
DetectedResult detectedResult = null;
|
synchronized (detectedResultQueue) {
|
if (detectedResultQueue.size() > 0) {
|
detectedResult = detectedResultQueue.pollLast();
|
}
|
}
|
if (detectedResult == null) {
|
Thread.sleep(100);
|
continue;
|
}
|
if (detectedResult.shouldExtractFeature) {
|
for (FacePosition facePosition : detectedResult.facePositions) {
|
facePosition.readFaceFeature();
|
FacePositionManager.processFaceFeature(facePosition);
|
}
|
DetectResultManager.setDetectResult(detectedResult);
|
} else if (drawFaceRectFinished) {
|
drawFaceRect(detectedResult);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
}
|