Переход с Mobile Vision на ML Kit на Android

В этом документе описаны шаги, необходимые для миграции ваших проектов с Google Mobile Vision (GMV) на ML Kit на Android.

Overall API Changes

These changes apply to all APIs:

  • API GMV возвращают результат SparseArray<T> синхронно. API ML Kit используют API задач сервисов Google Play для асинхронного возврата результатов.
  • GMV использует вызов isOperational() в API для индикации успешности загрузки модуля и его готовности к использованию. В ML Kit такого метода нет. Если модуль не был загружен, ML Kit генерирует исключение MlKitException.UNAVAILABLE . Вы можете перехватить это исключение и обработать следующий кадр или установить тайм-аут и повторить попытку с текущим кадром.
  • Методы GMV используют Frame в качестве входных данных. ML Kit использует InputImage .
  • GMV предоставляет фреймворки MultiDetector , MultiProcessor и FocusingProcessor для выполнения множественных обнаружений и фильтрации результатов. ML Kit не предоставляет таких механизмов, но при желании разработчик может реализовать аналогичную функциональность.

Update Gradle Imports

Обновите зависимости для библиотек ML Kit Android в файле Gradle вашего модуля (уровня приложения), который обычно находится app/build.gradle , в соответствии со следующей таблицей:

API GMV Artifact ML Kit Artifact
FaceDetector com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-face-detection:17.1.0
BarcodeDetector com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
TextRecognition com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-text-recognition:19.0.1
CameraSource com.google.android.gms:play-services-vision:xxx com.google.mlkit:camera:16.0.0-beta3

API Changes

В этом разделе описываются соответствующие классы и методы GMV и ML Kit для каждого API Vision, а также показано, как инициализировать API.

FaceDetector

Перепишите инициализацию, как показано в этом примере:

GMV

detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();

Набор ML

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

Change the following class and method names:

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

Используйте #setContourMode вместо 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) This feature is covered by face contour mode.
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

Перепишите инициализацию, как показано в этом примере:

GMV

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

Набор ML

barcodeScanner = BarcodeScanning.getClient();

Change the following class and method names:

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

TextRecognition

Перепишите инициализацию, как показано в этом примере:

GMV

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

Набор ML

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Change the following class and method names:

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

Если вы используете библиотеку CameraSource, предоставляемую Google Mobile Vision, вы можете легко перейти на библиотеку CameraXSource от ML Kit, при условии, что ваше приложение работает на минимальной версии SDK >= 21.

Change the following class and method names:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled Автофокус включен по умолчанию при использовании CameraX.
CameraSource.Builder.setFacing CameraSourceConfig.Builder . setCameraFacing
CameraSource.Builder.setFocusMode Автофокус включен по умолчанию при использовании CameraX.
CameraSource.Builder.setRequestedFps Устарело.
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() Handled internally
CameraSource.PictureCallback Устаревший
CameraSource.ShutterCallback Устаревший

Получение помощи

Если у вас возникнут какие-либо проблемы, посетите нашу страницу «Сообщество» , где мы описываем доступные каналы связи с нами.