In der API gibt es eine Tracker-Klasse, die Sie für Callbacks erweitern, wenn das Gesicht zum ersten Mal erkannt, aktualisiert und der Rahmen verlassen wird. Zum Beispiel hat Facetracker den folgenden Code:
private class GraphicFaceTracker extends Tracker<Face> {
...
@Override
public void onNewItem(int faceId, Face item) {
mFaceGraphic.setId(faceId);
}
@Override
public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
mOverlay.add(mFaceGraphic);
mFaceGraphic.updateFace(face);
}
https://github.com/googlesamples/android-vision/blob/master/visionSamples/FaceTracker/app/src/main/java/com/google/android/gms/samples/vision/face/facetracker/FaceTrackerActivity.java#L280
Ich denke, was man sich wünschen kann, ist der Code für die Audio-Anweisungen in der onUpdate Methode zu tun, auf den übergebenen Werten basiert anrufen für das zugehörige Gesicht.
Dieses Tutorial beschreibt die Steuerungsablauf der Pipeline für das Gesicht Tracker App:
https://developers.google.com/vision/face-tracker-tutorial#creating_the_face_detector_pipeline
In Ihrem Fall, wenn Sie nur einen einzigen Benutzer-Tracking, Sie wollen wahrscheinlich LargestFaceFocusingProcessor anstatt das verwenden, MultiProcessor, der im Face-Tracker-Beispiel verwendet wird. Der Unterschied besteht darin, dass LargestFaceFocusingProcessor darauf spezialisiert ist, nur ein Gesicht (d. H. Den Benutzer) und nicht mehrere Gesichter zu verfolgen. Setup würde so etwas wie gehen:
Tracker<Face> myTracker = new Tracker<Face>() {
@Override
public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
// issue audio instructions
}
};
detector.setProcessor(
new LargestFaceFocusingProcessor.Builder(detector, myTracker).build());
Vielen Dank für die rechtzeitige Antwort, @ pm0733464. Ich war wirklich an diesem Punkt fest. Ja .. Sie haben Recht, ich muss nicht mehrere Gesichter erfassen, LargestFaceFocusingProcessor sollte für meinen Zweck tun. Lass mich es ausprobieren. – jaymj
Als ich ein TTS-Objekt hinzufügte, um etwas Text (Audio) auszusprechen, hörte es bei OnUpdate auf, Gesichter zu verfolgen !! Ich habe sogar OnNewItem versucht. Weiß nicht warum !! – jaymj
Wahrscheinlich müssen Sie TTS in einem separaten Thread starten. Ich vermute, dass der Anruf, den Sie gerade machen, blockiert, was bedeutet, dass die Gesichtserkennungspipeline nicht fortgesetzt wird, bis sie zurückkehrt. – pm0733464