يتناول هذا المستند الخطوات التي تحتاج إلى اتخاذها لنقل مشروعاتك من 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
استخدام |
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
أعِد ترميز عملية الإعداد كما هو موضَّح في المثال التالي:
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 |
منهي العمل به |
الحصول على المساعدة
إذا واجهت أيّ مشاكل، يُرجى الاطّلاع على صفحة "المنتدى". حيث نحدد القنوات المتاحة للتواصل معنا.