CloudLandmarkRecognitionProcessor.java
/** Cloud Landmark Detector Demo. */
public class CloudLandmarkRecognitionProcessor
    extends VisionProcessorBase> {
  private static final String TAG = "CloudLmkRecProc";

  private final FirebaseVisionCloudLandmarkDetector detector;

  public CloudLandmarkRecognitionProcessor() {
    super();
    FirebaseVisionCloudDetectorOptions options =
        new FirebaseVisionCloudDetectorOptions.Builder()
            .setMaxResults(10)
            .setModelType(FirebaseVisionCloudDetectorOptions.STABLE_MODEL)
            .build();

    detector = FirebaseVision.getInstance().getVisionCloudLandmarkDetector(options);
  }

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

  @Override
  protected void onSuccess(
      @NonNull List landmarks,
      @NonNull FrameMetadata frameMetadata,
      @NonNull GraphicOverlay graphicOverlay) {
    graphicOverlay.clear();
    Log.d(TAG, "cloud landmark size: " + landmarks.size());
    for (int i = 0; i < landmarks.size(); ++i) {
      FirebaseVisionCloudLandmark landmark = landmarks.get(i);
      Log.d(TAG, "cloud landmark: " + landmark);
      CloudLandmarkGraphic cloudLandmarkGraphic = new CloudLandmarkGraphic(graphicOverlay);
      graphicOverlay.add(cloudLandmarkGraphic);
      cloudLandmarkGraphic.updateLandmark(landmark);
    }
  }

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