این سند مراحلی را که باید برای انتقال پروژههای خود از Google Mobile Vision (GMV) به ML Kit در اندروید انجام دهید، پوشش میدهد.
تغییرات کلی API
این تغییرات برای همه APIها اعمال میشود:
- APIهای GMV به صورت همزمان یک نتیجه
SparseArray<T>برمیگردانند. APIهای ML Kit از API Task سرویسهای 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 را در فایل Gradle ماژول (سطح برنامه) خود، که معمولاً app/build.gradle است، طبق جدول زیر بهروزرسانی کنید:
| رابط برنامهنویسی کاربردی | مصنوع GMV | مصنوع کیت ML |
|---|---|---|
| آشکارساز چهره | 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 |
| دوربین سورس | com.google.android.gms:play-services-vision:xxx | com.google.mlkit:camera:16.0.0-beta3 |
تغییرات API
این بخش کلاسها و متدهای مربوط به GMV و ML Kit را برای هر Vision API شرح میدهد و نحوه مقداردهی اولیه API را نشان میدهد.
آشکارساز چهره
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است، بازنویسی کنید:
جی ام وی
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() |
آشکارساز بارکد
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است، بازنویسی کنید:
جی ام وی
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 |
تشخیص متن
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است، بازنویسی کنید:
جی ام وی
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 ارائه شده توسط Google Mobile Vision استفاده میکنید، میتوانید به راحتی به کتابخانه CameraXSource از ML Kit مهاجرت کنید، البته به شرطی که برنامه شما روی نسخه min 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 Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-11-18 بهوقت ساعت هماهنگ جهانی.