الانتقال من Mobile Vision إلى ML Kit على نظام التشغيل Android

يتناول هذا المستند الخطوات التي تحتاج إلى اتخاذها لنقل مشروعاتك من Google Mobile Vision (GMV) إلى ML Kit على Android

التغييرات العامة في واجهة برمجة التطبيقات

تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:

  • تعرض واجهات برمجة تطبيقات GMV (GMV) نتيجة SparseArray<T> بشكل متزامن. تستخدم واجهات برمجة التطبيقات لحزمة تعلّم الآلة واجهة برمجة تطبيقات المهام في خدمات Google Play لعرض النتائج بشكل غير متزامن.
  • تستخدم قيمة المتاجرة الإجمالية (GMV) طلب isOperational() في واجهة برمجة التطبيقات للإشارة إلى ما إذا كانت تم تنزيل الوحدة بنجاح وأصبحت جاهزة للاستخدام. تتضمن مجموعة أدوات تعلُّم الآلة هذه الطريقة. تطرح حزمة تعلّم الآلة استثناء MlKitException.UNAVAILABLE في حال لم يتم تنزيل الوحدة النمطية. يمكنك اكتشاف هذا الاستثناء ومعالجة الإطار التالي أو ضبط المهلة وإعادة المحاولة باستخدام الإطار الحالي.
  • استخدام طرق قيمة المتاجرة الإجمالية (GMV) Frame للإدخال. تستخدم حزمة تعلّم الآلة InputImage.
  • توفّر قيمة المتاجرة الإجمالية (GMV) MultiDetector وMultiProcessor وFocusingProcessor. وأطر العمل لإجراء العديد من عمليات الاكتشاف وتصفية النتائج. حزمة تعلُّم الآلة لا توفر هذه الآليات، ولكن يمكن توفير نفس الوظائف تنفيذها من قبل المطور إذا رغب في ذلك.

تعديل عمليات استيراد Gradle

عدِّل الملحقات الخاصة بمكتبات ML Kit على Android في ملف Gradle للوحدة (على مستوى التطبيق)، والتي تكون عادةً app/build.gradle، وفقًا للجدول التالي:

واجهة برمجة التطبيقات عناصر من قيمة المتاجرة الإجمالية (GMV) أدوات تعلُّم الآلة
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

أعِد ترميز عملية الإعداد كما هو موضَّح في المثال التالي:

GMV

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

استخدام #setContourMode لاستبدال GMV CONTOUR_GOOGLES)

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.getHeight()
Face.getWidth()
Face.getBoundingBox()

BarcodeDetector

أعِد ترميز عملية الإعداد كما هو موضَّح في المثال التالي:

GMV

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

أعِد ترميز عملية الإعداد كما هو موضَّح في المثال التالي:

GMV

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 Mobile Vision، يمكنك النقل بسهولة إلى CameraXSource من حزمة تعلّم الآلة بشرط أن يعمل تطبيقك بإصدار 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 منهي العمل به

الحصول على المساعدة

إذا واجهت أيّ مشاكل، يُرجى الاطّلاع على صفحة "المنتدى". حيث نحدد القنوات المتاحة للتواصل معنا.