В этом документе описаны шаги, необходимые для миграции ваших проектов с 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 Используйте |
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. 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 | Устаревший |
Получение помощи
Если у вас возникнут какие-либо проблемы, посетите нашу страницу «Сообщество» , где мы описываем доступные каналы связи с нами.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-02-13 UTC.