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 interfejsu API

Te zmiany dotyczą wszystkich interfejsów API:

  • Interfejsy API GMV zwracają wynik SparseArray<T> synchronicznie. Interfejsy ML Kit API używają interfejsu Google Play Services Task API do asynchronicznego zwracania wyników.
  • GMV używa wywołania isOperational() w interfejsie API, aby określić, czy moduł został pobrany i jest gotowy do użycia. ML Kit nie oferuje takiej metody. Jeśli moduł nie został pobrany, ML Kit zgłasza wyjątek MlKitException.UNAVAILABLE. Możesz wychwycić ten wyjątek i przetworzyć kolejną klatkę lub ustawić limit czasu i spróbować ponownie z bieżącą ramką.
  • Metody GMV używają do wprowadzania danych Frame. ML Kit używa InputImage.
  • GMV udostępnia struktury MultiDetector, MultiProcessor i FocusingProcessor umożliwiające wielokrotne wykrywanie i filtrowanie wyników. ML Kit nie udostępnia takich mechanizmów, ale deweloper może wdrożyć tę samą funkcję.

Aktualizowanie importów Gradle

Zaktualizuj zależności dla bibliotek ML Kit na Androida w pliku Gradle modułu (na poziomie aplikacji), który zwykle ma wartość app/build.gradle, zgodnie z tą tabelą:

API Artefakt GMV Artefakt 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.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

Zmiany interfejsu API

W tej sekcji opisujemy odpowiednie klasy i metody GMV oraz ML Kit dla każdego interfejsu Vision API oraz pokazujemy, jak go zainicjować.

FaceDetector

Zmień kod inicjowania zgodnie z tym przykładem:

wartość handlowa brutto

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ń następujące 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ć wartość 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) Ta funkcja jest dostępna w trybie konturu 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()

BarcodeDetector

Zmień kod inicjowania zgodnie z tym przykładem:

wartość handlowa brutto

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

ML Kit

barcodeScanner = BarcodeScanning.getClient();

Zmień następujące 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

TextRecognition

Zmień kod inicjowania zgodnie z tym przykładem:

wartość handlowa brutto

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

ML Kit

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Zmień następujące 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()

CameraSource

Jeśli używasz biblioteki CameraSource w Google Mobile Vision, możesz łatwo przejść do biblioteki CameraXSource pakietu ML Kit, pod warunkiem że Twoja aplikacja działa w pakiecie SDK w wersji co najmniej 21.

Zmień następujące nazwy klas i metod:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled Autofokus jest dostępny domyślnie podczas korzystania z aplikacji CameraX.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Autofokus jest dostępny domyślnie podczas korzystania z aplikacji CameraX.
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ługiwany wewnętrznie
CameraSource.PictureCallback Wycofano
CameraSource.ShutterCallback Wycofano

Uzyskiwanie pomocy

Jeśli napotkasz jakieś problemy, zajrzyj na stronę Społeczność, na której znajdziesz informacje o kanałach, za pomocą których można się z nami skontaktować.