In diesem Dokument werden die Schritte beschrieben, die Sie ausführen müssen, um Ihre Projekte von Google Mobile Vision (GMV) zu ML Kit unter Android zu migrieren.
Allgemeine API-Änderungen
Diese Änderungen gelten für alle APIs:
- Die GMV-APIs geben synchron ein
SparseArray<T>
-Ergebnis zurück. ML Kit APIs verwenden die Task API der Google Play-Dienste, um Ergebnisse asynchron zurückzugeben. - Die GMV verwendet den Aufruf
isOperational()
in der API-Oberfläche, um anzugeben, ob ein Modul erfolgreich heruntergeladen wurde und verwendet werden kann. ML Kit hat keine solche Methode. ML Kit gibt die AusnahmeMlKitException.UNAVAILABLE
aus, wenn ein Modul nicht heruntergeladen wurde. Sie können diese Ausnahme abfangen und den nächsten Frame verarbeiten oder ein Zeitlimit festlegen und den Vorgang mit dem aktuellen Frame wiederholen. - BMV-Methoden verwenden
Frame
für die Eingabe. ML Kit verwendetInputImage
. - GMV bietet Frameworks
MultiDetector
,MultiProcessor
undFocusingProcessor
zur Durchführung mehrerer Erkennungs- und Ergebnisfilterung. ML Kit bietet keine solchen Mechanismen, aber bei Bedarf kann der Entwickler dieselben Funktionen 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), die normalerweise app/build.gradle
ist, gemäß der folgenden Tabelle:
API | Bruttowarenwert - 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.0 |
TextRecognition | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-text-recognition:19.0.0 |
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:
Bruttowarenwert (BWW)
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)
|
Für diese Funktion ist der Konturmodus des Gesichts 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.getBoundingBox()
|
BarcodeDetector
Codieren Sie die Initialisierung wie in diesem Beispiel neu:
Bruttowarenwert (BWW)
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:
Bruttowarenwert (BWW)
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 ML Kit-Bibliothek CameraXSource
migrieren, sofern Ihre App mit einer SDK-Version ab 21 (Min. SDK-Version) 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
|
Veraltet. |
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 |
Eingestellte Funktionen |
CameraSource.ShutterCallback |
Eingestellte Funktionen |
Unterstützung erhalten
Falls Probleme auftreten, findest du auf unserer Community-Seite eine Übersicht über die Kanäle, über die du mit uns Kontakt aufnehmen kannst.