این سند مراحلی را که باید برای انتقال پروژههایتان از Google Mobile Vision (GMV) به ML Kit در Android انجام دهید پوشش میدهد.
تغییرات کلی میانای برنامهسازی کاربردی
این تغییرات برای همه میاناهای برنامهسازی کاربردی اعمال میشود:
- میاناهای برنامهسازی کاربردی GMV نتیجه
SparseArray<T>را بهطور همزمان برمیگردانند. میاناهای برنامهسازی کاربردی ML Kit از میانای برنامهسازی کاربردی Task خدمات Google Play برای برگرداندن نتایج بهصورت ناهمگام استفاده میکنند. - GMV از فراخوانی
isOperational()در سطح API استفاده میکند تا نشان دهد که آیا یک ماژول با موفقیت بارگیری شده و آماده استفاده است یا نه. ML Kit چنین روشی ندارد. اگر ماژولی بارگیری نشده باشد، ML Kit استثنایMlKitException.UNAVAILABLEرا ایجاد میکند. میتوانید این استثنا را بگیرید و قاب بعدی را پردازش کنید یا وقفه زمانی تنظیم کنید و با قاب فعلی دوباره امتحان کنید. - روشهای GMV از
Frameبرای ورودی استفاده میکنند. ML Kit ازInputImageاستفاده میکند. - GMV چارچوبهای
MultiDetector،MultiProcessor، وFocusingProcessorرا برای انجام چندین تشخیص و فیلتر کردن نتایج ارائه میدهد. «کیت یادگیری ماشین» چنین سازوکارهایی را ارائه نمیدهد، اما درصورت تمایل، توسعهدهنده میتواند همان عملکرد را پیادهسازی کند.
بهروزرسانی واردات Gradle
وابستگیهای کتابخانههای Android «کیت یادگیری ماشین» را در فایل Gradle (سطح برنامه) ماژولتان، که معمولاً app/build.gradle است، طبق جدول زیر بهروز کنید:
| میانای برنامهسازی کاربردی | آرتیفکت GMV | مصنوع ML Kit |
|---|---|---|
| FaceDetector | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
| BarcodeDetector | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
| TextRecognition | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-text-recognition:19.0.2 |
| CameraSource | com.google.android.gms:play-services-vision:x.x.x |
com.google.mlkit:camera:16.0.0-beta3 |
تغییرات میانای برنامهسازی کاربردی
این بخش کلاسها و روشهای GMV و ML Kit مربوطه را برای هر Vision API شرح میدهد و نحوه مقداردهی اولیه API را نشان میدهد.
FaceDetector
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است بازکدگذاری کنید:
ارزش ناخالص کالا
detector = new FaceDetector.Builder(context) .setMode(FaceDetector.ACCURATE_MODE) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build();
ML Kit
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());
ML Kit
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
|
TextRecognition
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است بازکدگذاری کنید:
ارزش ناخالص کالا
textRecognizer = new TextRecognizer.Builder(context).build();
ML Kit
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
مهاجرت کنید، بهشرطی که برنامهتان روی نسخه 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 |
منسوخ |
دریافت راهنمایی
اگر با مشکلی مواجه شدید، صفحه انجمن ما را بررسی کنید که در آن کانالهای موجود برای تماس با ما را شرح دادهایم.