Ce document décrit les étapes à suivre pour migrer vos projets de Google Mobile Vision (GMV) vers ML Kit sur Android.
Modifications globales apportées à l'API
Ces modifications s'appliquent à toutes les API:
- Les API GMV renvoient un résultat
SparseArray<T>
de manière synchrone. Les API ML Kit utilisent l'API Task des services Google Play pour renvoyer des résultats de manière asynchrone. - GMV utilise l'appel
isOperational()
dans la surface de l'API pour indiquer si un module a bien été téléchargé et est prêt à l'emploi. ML Kit ne dispose d'aucune telle méthode. ML Kit génère une exceptionMlKitException.UNAVAILABLE
si un module n'a pas été téléchargé. Vous pouvez intercepter cette exception et traiter le frame suivant, ou définir un délai avant expiration et réessayer avec le frame actuel. - Les méthodes GMV utilisent
Frame
pour la saisie. ML Kit utiliseInputImage
. - GMV fournit des frameworks
MultiDetector
,MultiProcessor
etFocusingProcessor
pour effectuer plusieurs détections et filtrer les résultats. ML Kit ne fournit pas de tels mécanismes, mais le développeur peut implémenter la même fonctionnalité si nécessaire.
Mettre à jour les importations Gradle
Mettez à jour les dépendances des bibliothèques Android ML Kit dans le fichier Gradle de votre module (au niveau de l'application), qui est généralement app/build.gradle
, conformément au tableau suivant:
API | Artefact de la VMB | Artefact ML Kit |
---|---|---|
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 |
Modifications apportées à l'API
Cette section décrit les classes et méthodes GMV et ML Kit correspondantes pour chaque API Vision, et explique comment initialiser l'API.
FaceDetector
Récodez l'initialisation comme indiqué dans cet exemple:
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);
Modifiez les noms de classe et de méthode suivants:
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
Utilisez |
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)
|
Cette fonctionnalité est couverte par le mode Contour du visage. |
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
Récodez l'initialisation comme indiqué dans cet exemple:
barcodeDetector = new BarcodeDetector.Builder(context).build());
barcodeScanner = BarcodeScanning.getClient();
Modifiez les noms de classe et de méthode suivants:
android.gms.vision.barcode |
mlkit.vision.barcode |
---|---|
BarcodeDetector |
BarcodeScanner
|
SparseArray<Barcode> detect(Frame frame) |
Task<List<Barcode>> process(@NonNull InputImage image)
|
Barcode
|
Barcode
|
TextRecognition
Récodez l'initialisation comme indiqué dans cet exemple:
textRecognizer = new TextRecognizer.Builder(context).build();
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
Modifiez les noms de classe et de méthode suivants:
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
Si vous utilisez la bibliothèque CameraSource fournie par Google Mobile Vision, vous pouvez facilement migrer vers la bibliothèque CameraXSource
de ML Kit, à condition que votre application s'exécute sur une version de SDK minimale >= 21.
Modifiez les noms de classe et de méthode suivants:
android.gms.vision |
mlkit.vision.camera |
---|---|
CameraSource
|
CameraSourceConfig
|
CameraSource.Builder
|
CameraSourceConfig.Builder
|
CameraSource.Builder.setAutoFocusEnabled
|
Le mode autofocus est fourni par défaut lorsque vous utilisez CameraX. |
CameraSource.Builder.setFacing
|
CameraSourceConfig.Builder.setCameraFacing
|
CameraSource.Builder.setFocusMode
|
Le mode autofocus est fourni par défaut lorsque vous utilisez CameraX. |
CameraSource.Builder.setRequestedFps
|
Obsolète. |
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()
|
Gérées en interne |
CameraSource.PictureCallback |
Obsolète |
CameraSource.ShutterCallback |
Obsolète |
Obtenir de l'aide
Si vous rencontrez des problèmes, consultez notre page de la communauté, qui présente les canaux disponibles pour nous contacter.