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

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

Общие изменения API

Эти изменения касаются всех API:

  • 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 не предоставляет таких механизмов, но при желании разработчик может реализовать аналогичную функциональность.

Обновить импорт Gradle

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

API Артефакт GMV Артефакт набора ML
FaceDetector com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-face-detection:17.1.0
Детектор штрихкодов com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
Распознавание текста 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

В этом разделе описываются соответствующие классы и методы 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);

Измените следующие имена классов и методов:

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) Эта функция доступна в режиме контурирования лица.
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()

Детектор штрихкодов

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

GMV

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

Набор ML

barcodeScanner = BarcodeScanning.getClient();

Измените следующие имена классов и методов:

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

Распознавание текста

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

GMV

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

Набор ML

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Измените следующие имена классов и методов:

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.

Измените следующие имена классов и методов:

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() Обрабатывается внутри компании.
CameraSource.PictureCallback Устаревший
CameraSource.ShutterCallback Устаревший

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

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