يتناول هذا المستند الخطوات التي يجب اتّباعها لترحيل مشاريعك من Google Mobile Vision (GMV) إلى ML Kit على Android.
التغييرات العامة لواجهة برمجة التطبيقات
تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:
- تعرض واجهات برمجة تطبيقات GMV نتيجة
SparseArray<T>
بشكل متزامن. تستخدم واجهات برمجة تطبيقات ML Kit واجهة برمجة التطبيقات لمهام خدمات Google Play لعرض النتائج بشكل غير متزامن. - تستخدم GMV طلب
isOperational()
في واجهة برمجة التطبيقات للإشارة إلى ما إذا كان قد تم تنزيل الوحدة بنجاح وأنها جاهزة للاستخدام. ليس هناك طريقة لهذه الطريقة. تحتوي مجموعة أدوات تعلّم الآلة على استثناءMlKitException.UNAVAILABLE
إذا لم يتم تنزيل وحدة نمطية. يمكنك التقاط هذا الاستثناء ومعالجة الإطار التالي أو تعيين مهلة وإعادة المحاولة باستخدام الإطار الحالي. - وتستخدم طرق GMV
Frame
للإدخال. تستخدم ML KitInputImage
. - توفّر GMV إطارات عمل
MultiDetector
وMultiProcessor
وFocusingProcessor
لتنفيذ عمليات رصد متعددة وفلترة النتائج. لا توفر ML Kit هذه الآليات، ولكن يمكن تنفيذ الوظيفة نفسها بواسطة مطور البرامج إذا رغب في ذلك.
تحديث عمليات استيراد Gradle
عدِّل التبعيات لمكتبات ML Kit في Android إلى وحدة Gradle الخاصة بالوحدة (على مستوى التطبيق)، والتي عادةً ما تكون app/build.gradle
، وفقًا للجدول التالي:
واجهة برمجة التطبيقات | قيمة GMV Artifact | عناصر ML Kit |
---|---|---|
مكتشف الوجه | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
أداة رصد الرمز الشريطي | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0 |
التعرّف على النص | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-text-recognition:18.0.2 |
مصدر الكاميرا | com.google.android.gms:play-services-vision:x.x.x |
com.google.mlkit:camera:16.0.0-beta3 |
تغييرات واجهة برمجة التطبيقات
يصف هذا القسم الفئات المقابلة لـ GMV وML Kit وأساليبها لكل واجهة برمجة تطبيقات في Vision، ويعرض كيفية تهيئة واجهة برمجة التطبيقات.
مكتشف الوجه
أعد ترميز التهيئة كما هو موضح في المثال التالي:
قيمة المتاجرة الإجمالية
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 = 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 |
منهي العمل به |
الحصول على المساعدة
إذا واجهت أي مشاكل، فراجع صفحة المنتدى التي نحدد فيها القنوات المتاحة للتواصل معنا.