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 eineMlKitException.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
Frameals Eingabe. ML Kit verwendetInputImage. - GMV bietet die Frameworks
MultiDetector,MultiProcessorundFocusingProcessor, 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
|
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.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.