В этом документе описываются шаги, которые необходимо предпринять для переноса проектов из 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
Обновите зависимости для библиотек Android ML Kit в файле 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 |
BarcodeDetector | 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 |
Источник камеры | com.google.android.gms:play-services-vision:xxx | com.google.mlkit:camera:16.0.0-beta3 |
Изменения API
В этом разделе описываются соответствующие классы и методы GMV и ML Kit для каждого API Vision, а также показано, как инициализировать API.
FaceDetector
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
detector = new FaceDetector.Builder(context) .setMode(FaceDetector.ACCURATE_MODE) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build();
МЛ-комплект
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() |
BarcodeDetector
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
barcodeDetector = new BarcodeDetector.Builder(context).build());
МЛ-комплект
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 |
Распознавание текста
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
textRecognizer = new TextRecognizer.Builder(context).build();
МЛ-комплект
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, предоставляемую 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 и ее аффилированных лиц.
Последнее обновление: 2025-08-29 UTC.