Von Mobile Vision zu ML Kit auf Android migrieren

In diesem Dokument erfahren Sie, wie Sie Ihre Projekte von Google Mobile Vision (GMV) zu ML Kit auf Android 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 von Google Play-Diensten, um Ergebnisse asynchron zurückzugeben.
  • GMV verwendet den isOperational()-Aufruf in der API-Oberfläche, um anzugeben, ob ein Modul erfolgreich heruntergeladen wurde und einsatzbereit ist. ML Kit bietet 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.
  • Bei GMV-Methoden wird Frame als Eingabe verwendet. ML Kit verwendet InputImage.
  • GMV bietet die Frameworks MultiDetector, MultiProcessor und FocusingProcessor für die Durchführung mehrerer Erkennungen und die Filterung von Ergebnissen. ML Kit bietet keine solchen Mechanismen, aber die Entwickler können dieselben Funktionen bei Bedarf implementieren.

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.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. Außerdem wird gezeigt, wie die API initialisiert wird.

FaceDetector

Codieren Sie die Initialisierung wie in diesem Beispiel neu:

GMVML Kit
detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();
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 anstelle von 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 ist im Modus „Gesichtskontur“ verfügbar.
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:

GMVML Kit
barcodeDetector = new BarcodeDetector.Builder(context).build());
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:

GMVML Kit
textRecognizer = new TextRecognizer.Builder(context).build();
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 mit einer SDK-Version von mindestens 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 wird standardmäßig bei der Verwendung von CameraX bereitgestellt.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Der Autofokus wird standardmäßig bei der Verwendung von CameraX bereitgestellt.
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

Wenn Probleme auftreten, findest du auf unserer Community-Seite Informationen dazu, wie du dich mit uns in Verbindung setzen kannst.