Migrazione da Mobile Vision a ML Kit su Android

Questo documento illustra i passaggi da seguire per eseguire la migrazione dei progetti da Google Mobile Vision (GMV) a ML Kit su Android.

Modifiche generali all'API

Queste modifiche si applicano a tutte le API:

  • Le API GMV restituiscono un risultato SparseArray<T> in modo sincrono. Le API ML Kit utilizzano l'API Task di Google Play Services per restituire i risultati in modo asincrono.
  • GMV utilizza la chiamata isOperational() nell'interfaccia API per indicare se un modulo è stato scaricato correttamente ed è pronto per l'uso. ML Kit non ha un metodo simile. ML Kit genera un'eccezione MlKitException.UNAVAILABLE se un modulo non è stato scaricato. Puoi intercettare questa eccezione ed elaborare il frame successivo o impostare un timeout e riprovare con il frame corrente.
  • I metodi GMV utilizzano Frame per l'input. ML Kit utilizza InputImage.
  • GMV fornisce framework MultiDetector, MultiProcessor e FocusingProcessor per eseguire più rilevamenti e filtrare i risultati. ML Kit non fornisce questi meccanismi, ma se lo desidera, lo sviluppatore può implementare la stessa funzionalità.

Aggiorna le importazioni di Gradle

Aggiorna le dipendenze per le librerie Android di ML Kit nel file Gradle del modulo (a livello di app), che in genere è app/build.gradle, in base alla seguente tabella:

API Artefatto GMV Artefatto 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

Modifiche all'API

Questa sezione descrive le classi e i metodi GMV e ML Kit corrispondenti per ogni API Vision e mostra come inizializzare l'API.

FaceDetector

Ricodifica l'inizializzazione come mostrato in questo esempio:

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);

Modifica i seguenti nomi di classi e metodi:

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

Utilizza #setContourMode per sostituire GMV CONTOUR_LANDMARKS)

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) Questa funzionalità è coperta dalla modalità Contorno viso.
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

Ricodifica l'inizializzazione come mostrato in questo esempio:

GMVML Kit
barcodeDetector = new BarcodeDetector.Builder(context).build());
barcodeScanner = BarcodeScanning.getClient();

Modifica i seguenti nomi di classi e metodi:

android.gms.vision.barcode mlkit.vision.barcode
BarcodeDetector BarcodeScanner
SparseArray<Barcode> detect(Frame frame) Task<List<Barcode>> process(@NonNull InputImage image)
Barcode Barcode

TextRecognition

Ricodifica l'inizializzazione come mostrato in questo esempio:

GMVML Kit
textRecognizer = new TextRecognizer.Builder(context).build();
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Modifica i seguenti nomi di classi e metodi:

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

Se utilizzi la libreria CameraSource fornita da Google Mobile Vision, puoi eseguire facilmente la migrazione alla libreria CameraXSource di ML Kit, a condizione che la tua app sia in esecuzione su una versione SDK minima >= 21.

Modifica i seguenti nomi di classi e metodi:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled L'autofocus è fornito per impostazione predefinita quando utilizzi CameraX.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode L'autofocus è fornito per impostazione predefinita quando utilizzi CameraX.
CameraSource.Builder.setRequestedFps Deprecato.
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() Gestito internamente
CameraSource.PictureCallback Deprecato
CameraSource.ShutterCallback Deprecato

Richiesta di aiuto

In caso di problemi, consulta la nostra pagina Community, dove sono descritti i canali a tua disposizione per contattarci.