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 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. - Für GMV-Methoden wird
Frame
als Eingabe verwendet. ML Kit verwendetInputImage
. - GMV bietet die Frameworks
MultiDetector
,MultiProcessor
undFocusingProcessor
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
|
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.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.