Von Mobile Vision zu ML Kit auf Android migrieren

In diesem Dokument werden die Schritte beschrieben, die Sie ausführen müssen, um Ihre Projekte von Google Mobile Vision (GMV) zu ML Kit für Android zu migrieren.

Allgemeine API-Änderungen

Diese Änderungen gelten für alle APIs:

  • GMV APIs geben ein SparseArray<T>-Ergebnis synchron zurück. ML Kit APIs verwenden die Task API der Google Play-Dienste, um Ergebnisse asynchron zurückzugeben.
  • GMV verwendet den Aufruf isOperational() in der API-Oberfläche, um anzugeben, ob ein Modul erfolgreich heruntergeladen wurde und einsatzbereit ist. ML Kit hat keine solche Methode. ML Kit löst eine MlKitException.UNAVAILABLE-Ausnahme aus, wenn ein Modul nicht heruntergeladen wurde. Sie können diese Ausnahme abfangen und den nächsten Frame verarbeiten oder ein Zeitlimit festlegen und es mit dem aktuellen Frame noch einmal versuchen.
  • GMV-Methoden verwenden Frame als Eingabe. ML Kit verwendet InputImage.
  • GMV bietet die Frameworks MultiDetector, MultiProcessor und FocusingProcessor, um mehrere Erkennungen durchzuführen und Ergebnisse zu filtern. ML Kit bietet solche Mechanismen nicht, aber die gleiche Funktionalität kann vom Entwickler bei Bedarf implementiert werden.

Gradle-Importe aktualisieren

Aktualisieren Sie die Abhängigkeiten für die ML Kit Android-Bibliotheken in der Gradle-Datei Ihres Moduls (auf App-Ebene, in der Regel app/build.gradle) gemäß der folgenden Tabelle:

API GMV-Artefakt ML Kit-Artefakt
FaceDetector com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-face-detection:17.1.0
BarcodeDetector com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
TextRecognition com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.2
CameraSource com.google.android.gms:play-services-vision:x.x.x com.google.mlkit:camera:16.0.0-beta3

API-Änderungen

In diesem Abschnitt werden die entsprechenden GMV- und ML Kit-Klassen und -Methoden für jede Vision API beschrieben und es wird gezeigt, wie die API initialisiert wird.

FaceDetector

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMV

detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();

ML Kit

FaceDetectorOptions options = new FaceDetectorOptions.Builder()
    .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE)
    .setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL)
    .setClassificationMode(FaceDetectorOptions.CLASSIFICATION_MODE_ALL)
    .build();

detector = FaceDetection.getClient(options);

Ändern Sie die folgenden Klassen- und Methodennamen:

android.gms.vision.face mlkit.vision.face
FaceDetector FaceDetector
SparseArray<Face> detect(Frame frame) Task<List<Face>> process(@NonNull InputImage image)
FaceDetector.Builder.setClassificationType(int classificationType) FaceDetectorOptions.Builder.setClassificationMode(int classificationMode)
NO_CLASSIFICATIONS, ALL_CLASSIFICATIONS CLASSIFICATION_MODE_NONE, CLASSIFICATION_MODE_ALL
FaceDetector.Builder.setLandmarkType(int landmarkType) FaceDetectorOptions.Builder.setLandmarkMode(int landmarkMode)
NO_LANDMARKS, ALL_LANDMARKS, CONTOUR_LANDMARKS LANDMARK_MODE_NONE, LANDMARK_MODE_ALL

#setContourMode als Ersatz für GMV CONTOUR_LANDMARKS verwenden)

FaceDetector.Builder.setTrackingEnabled(boolean trackingEnabled) FaceDetectorOptions.Builder.enableTracking()
FaceDetector.Builder.setMinFaceSize(float proportionalMinFaceSize) FaceDetectorOptions.Builder.setMinFaceSize(float minFaceSize)
FaceDetector.Builder.setMode(int mode) FaceDetectorOptions.Builder.setPerformanceMode(int performanceMode)
FAST_MODE, ACCURATE_MODE PERFORMANCE_MODE_FAST, PERFORMANCE_MODE_ACCURATE
FaceDetector.Builder.setProminentFaceOnly(boolean prominentFaceOnly) Diese Funktion wird durch den Gesichtskonturmodus abgedeckt.
Face Face
Contour FaceContour
Landmark FaceLandmark
Face.getContours() Face.getAllContours()
Face.getEulerY() Face.getHeadEulerAngleY()
Face.getEulerZ() Face.getHeadEulerAngleZ()
Face.getId() Face.getTrackingId()
Face.getIsLeftEyeOpenProbability() Face.getLeftEyeOpenProbability()
Face.getIsRightEyeOpenProbability() Face.getRightEyeOpenProbability()
Face.getIsSmilingProbability() Face.getSmilingProbability()
Face.getLandmarks() Face.getLandmark(int landmarkType)
Face.getPosition()
Face.getHeight()
Face.getWidth()
Face.getBoundingBox()

BarcodeDetector

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMV

barcodeDetector = new BarcodeDetector.Builder(context).build());

ML Kit

barcodeScanner = BarcodeScanning.getClient();

Ändern Sie die folgenden Klassen- und Methodennamen:

android.gms.vision.barcode mlkit.vision.barcode
BarcodeDetector BarcodeScanner
SparseArray<Barcode> detect(Frame frame) Task<List<Barcode>> process(@NonNull InputImage image)
Barcode Barcode

TextRecognition

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMV

textRecognizer = new TextRecognizer.Builder(context).build();

ML Kit

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Ändern Sie die folgenden Klassen- und Methodennamen:

android.gms.vision.text mlkit.vision.text
TextRecognizer TextRecognizer
SparseArray<TextBlock> detect(Frame frame) Task<Text> process(@NonNull InputImage image)
SparseArray<TextBlock> Text
Line Line
TextBlock TextBlock
Element Element
getLanguage() getRecognizedLanguage()
getBoundingBox() getBoundingBox()
getCornerPoints() getCornerPoints()
TextBlock.getComponents() TextBlock.getLines()
TextBlock.getValue() TextBlock.getText()
Element.getValue() Element.getText()

CameraSource

Wenn Sie die CameraSource-Bibliothek von Google Mobile Vision verwenden, können Sie ganz einfach zur CameraXSource-Bibliothek von ML Kit migrieren, sofern Ihre App auf einer SDK-Mindestversion >= 21 ausgeführt wird.

Ändern Sie die folgenden Klassen- und Methodennamen:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled Der Autofokus ist bei Verwendung von CameraX standardmäßig aktiviert.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Der Autofokus ist bei Verwendung von CameraX standardmäßig aktiviert.
CameraSource.Builder.setRequestedFps Verworfen.
CameraSource.Builder.setRequestedPreviewSize CameraSourceConfig.Builder.setRequestedPreviewSize
CameraSource CameraXSource
new CameraSource.Builder(mContext, detector)....build(); CameraXSource(CameraSourceConfig, PreviewView)
getCameraFacing() getCameraFacing()
getPreviewSize() getPreviewSize()
release() close()
start(SurfaceHolder surfaceHolder) start() // The previewview is set in the CameraSourceConfig
start() start()
stop() stop()
Detector.Processor DetectionTaskCallback
receiveDetections(Detections<T> detections) void onDetectionTaskReceived(@NonNull Task<ResultT> detectionTask);
release() Intern verarbeitet
CameraSource.PictureCallback Verworfen
CameraSource.ShutterCallback Verworfen

Hilfe erhalten

Bei Problemen finden Sie auf unserer Community-Seite weitere Informationen dazu, wie Sie uns kontaktieren können.