Migracja z Mobile Vision do ML Kit na Androidzie

Ten dokument zawiera opis czynności, które musisz wykonać, aby przenieść swoje projekty z Google Mobile Vision (GMV) do ML Kit na Androidzie.

Ogólne zmiany w interfejsie API

Te zmiany dotyczą wszystkich interfejsów API:

  • Interfejsy API GMV zwracają synchronicznie wynik SparseArray<T>. Interfejsy API ML Kit korzystają z interfejsu Task API w Google Play, aby asynchronicznie zwracać wyniki.
  • GMV używa wywołania isOperational() w interfejsie API, aby wskazać, czy moduł został pobrany i jest gotowy do użycia. ML Kit nie ma takiej metody. ML Kit zgłasza wyjątek MlKitException.UNAVAILABLE, jeśli moduł nie został pobrany. Możesz przechwycić ten wyjątek i przetworzyć następną klatkę lub ustawić czas oczekiwania, a potem spróbować ponownie z bieżącą ramką.
  • Metody GMV wykorzystują do wprowadzania Frame. ML Kit używa InputImage.
  • GMV udostępnia schematy MultiDetector, MultiProcessor i FocusingProcessor do przeprowadzania wielu wykrywania i filtrowania wyników. ML Kit nie zapewnia takich mechanizmów, ale deweloper może w razie potrzeby wdrożyć te same funkcje.

Aktualizowanie importu Gradle

Zaktualizuj zależności bibliotek pakietu ML Kit na Androida w pliku Gradle modułu (na poziomie aplikacji), który zazwyczaj wynosi app/build.gradle, zgodnie z tabelą poniżej:

API Artefakt GMV Artefakt ML Kit
Wykrywanie twarzy com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-face-detection:17.1.0
Wzorzec do wykrywania kodu kreskowego com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-barcode-scanning:18.2.0
Rozpoznawanie tekstu com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.0
Źródło kamery com.google.android.gms:play-services-vision:x.x.x com.google.mlkit:camera:16.0.0-beta3

Zmiany w interfejsie API

W tej sekcji opisano odpowiednie klasy i metody GMV oraz ML Kit dla każdego interfejsu Vision API, a także dowiesz się, jak zainicjować interfejs API.

Wykrywanie twarzy

Przekoduj inicjalizację zgodnie z tym przykładem:

Wartość 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);

Zmień te nazwy klas i metod:

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

użyj #setContourMode, aby zastąpić GMV CONTOUR_zippyS)

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) Ta funkcja jest dostępna w trybie konturowania twarzy.
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()

Wzorzec do wykrywania kodu kreskowego

Przekoduj inicjalizację zgodnie z tym przykładem:

Wartość GMV

barcodeDetector = new BarcodeDetector.Builder(context).build());

ML Kit

barcodeScanner = BarcodeScanning.getClient();

Zmień te nazwy klas i metod:

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

Rozpoznawanie tekstu

Przekoduj inicjalizację zgodnie z tym przykładem:

Wartość GMV

textRecognizer = new TextRecognizer.Builder(context).build();

ML Kit

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Zmień te nazwy klas i metod:

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

Źródło kamery

Jeśli używasz biblioteki CameraSource udostępnianej przez Google Mobile Vision, możesz łatwo przejść do biblioteki ML Kit na CameraXSource, o ile Twoja aplikacja działa w wersji min. SDK w wersji >= 21.

Zmień te nazwy klas i metod:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled Podczas korzystania z Aparatu X autofokus jest domyślnie dostępny.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Podczas korzystania z Aparatu X autofokus jest domyślnie dostępny.
CameraSource.Builder.setRequestedFps Rola wycofana.
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() Obsługiwane wewnętrznie
CameraSource.PictureCallback Wycofano
CameraSource.ShutterCallback Wycofano

Uzyskiwanie pomocy

W razie problemów zajrzyj na stronę Społeczność, aby przedstawić kanały, w których można się z nami skontaktować.