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 Google Play-Dienste Task API, um Ergebnisse asynchron zurückzugeben.
  • Mit dem isOperational()-Aufruf in der API-Oberfläche wird angegeben, ob ein Modul erfolgreich heruntergeladen wurde und verwendet werden kann. 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.
  • Für GMV-Methoden wird Frame als Eingabe verwendet. ML Kit verwendet InputImage.
  • GMV bietet die Frameworks MultiDetector, MultiProcessor und FocusingProcessor zum Ausführen mehrerer Erkennungen und zum Filtern von Ergebnissen. ML Kit bietet keine solchen Mechanismen, aber dieselbe Funktionalität kann bei Bedarf vom Entwickler 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), die in der Regel app/build.gradle ist, 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.1
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 verwenden für GMV CONTOUR_LANDMARKS)

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 ist im Modus „Gesichtskontur“ enthalten.
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 von Google Mobile Vision bereitgestellte CameraSource-Bibliothek 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 Autofokus ist standardmäßig verfügbar, wenn Sie CameraX verwenden.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Autofokus ist standardmäßig verfügbar, wenn Sie CameraX verwenden.
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 bearbeitet
CameraSource.PictureCallback Verworfen
CameraSource.ShutterCallback Verworfen

Hilfe erhalten

Sollten Probleme auftreten, findest du auf unserer Community-Seite Informationen dazu, wie du uns kontaktieren kannst.