يتناول هذا المستند الخطوات التي يجب اتّخاذها لنقل بيانات مشاريعك من Google Mobile Vision (GMV) إلى ML Kit على Android.
التغييرات العامة في واجهة برمجة التطبيقات
تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:
- تعرض واجهات برمجة التطبيقات GMV نتيجة
SparseArray<T>
بشكل متزامن. تستخدم واجهات برمجة تطبيقات ML Kit واجهة برمجة التطبيقات Task API من "خدمات Google Play" لعرض النتائج بشكل غير متزامن. - يستخدم GMV طلب
isOperational()
في واجهة برمجة التطبيقات للإشارة إلى ما إذا تم تنزيل وحدة بنجاح وأصبحت جاهزة للاستخدام. لا تتضمّن حزمة ML Kit مثل هذه الطريقة. تُعرِض "حزمة تعلُّم الآلة" استثناءMlKitException.UNAVAILABLE
في حال عدم تنزيل ملف وحدة. يمكنك رصد هذا الاستثناء ومعالجة الإطار التالي أو ضبط مهلة وإعادة المحاولة باستخدام الإطار الحالي. - تستخدِم طُرق GMV
Frame
للإدخال. تستخدم حزمة ML KitInputImage
. - توفّر GMV إطارَي عمل
MultiDetector
وMultiProcessor
وFocusingProcessor
لرصد العديد من الأحداث وفلترة النتائج. لا يوفّر ML Kit مثل هذه الآليات، ولكن يمكن للمطوّر تنفيذ الوظيفة نفسها إذا أراد ذلك.
تعديل عمليات استيراد Gradle
عدِّل الملحقات لمكتبات ML Kit لنظام التشغيل 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.1 |
CameraSource | com.google.android.gms:play-services-vision:x.x.x |
com.google.mlkit:camera:16.0.0-beta3 |
التغييرات في واجهة برمجة التطبيقات
يوضّح هذا القسم فئات وطُرق GMV وML Kit المقابلة لكل واجهة برمجة تطبيقات 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
|
TextRecognition
أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:
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
إذا كنت تستخدم مكتبة CameraSource التي تقدّمها ميزة "الرؤية على الأجهزة الجوّالة من Google "، يمكنك
الانتقال بسهولة إلى مكتبة 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 |
منهي العمل به |
الحصول على المساعدة
إذا واجهت أي مشاكل، يمكنك الاطّلاع على صفحة "المنتدى" التي توضّح القنوات المتاحة للتواصل معنا.