ImageLabelingProcessor.java
/** Custom Image Classifier Demo. */
public class ImageLabelingProcessor extends VisionProcessorBase> {

  private static final String TAG = "ImageLabelingProcessor";

  private final FirebaseVisionLabelDetector detector;

  public ImageLabelingProcessor() {
    detector = FirebaseVision.getInstance().getVisionLabelDetector();
  }

  @Override
  public void stop() {
    try {
      detector.close();
    } catch (IOException e) {
      Log.e(TAG, "Exception thrown while trying to close Text Detector: " + e);
    }
  }

  @Override
  protected Task> detectInImage(FirebaseVisionImage image) {
    return detector.detectInImage(image);
  }

  @Override
  protected void onSuccess(
      @NonNull List labels,
      @NonNull FrameMetadata frameMetadata,
      @NonNull GraphicOverlay graphicOverlay) {
    graphicOverlay.clear();
    LabelGraphic labelGraphic = new LabelGraphic(graphicOverlay, labels);
    graphicOverlay.add(labelGraphic);
  }

  @Override
  protected void onFailure(@NonNull Exception e) {
    Log.w(TAG, "Label detection failed." + e);
  }
}