इस दस्तावेज़ में, Android पर Google Mobile Vision (GMV) से ML Kit पर अपने प्रोजेक्ट माइग्रेट करने का तरीका बताया गया है.
एपीआई में हुए सभी बदलाव
ये बदलाव सभी एपीआई पर लागू होते हैं:
- GMV एपीआई,
SparseArray<T>नतीजे को सिंक्रोनस तरीके से दिखाते हैं. ML Kit API, Google Play services Task API का इस्तेमाल करके, नतीजे एसिंक्रोनस तरीके से दिखाता है. - GMV, एपीआई सरफेस में
isOperational()कॉल का इस्तेमाल करता है. इससे यह पता चलता है कि कोई मॉड्यूल डाउनलोड हो गया है और इस्तेमाल के लिए तैयार है. ML Kit में ऐसा कोई तरीका नहीं है. अगर कोई मॉड्यूल डाउनलोड नहीं किया गया है, तो ML KitMlKitException.UNAVAILABLEअपवाद दिखाता है. इस अपवाद को पकड़ा जा सकता है और अगले फ़्रेम को प्रोसेस किया जा सकता है. इसके अलावा, टाइम आउट सेट करके मौजूदा फ़्रेम के साथ फिर से कोशिश की जा सकती है. - GMV के तरीके, इनपुट के लिए
Frameका इस्तेमाल करते हैं. ML Kit,InputImageका इस्तेमाल करता है. - GMV, कई तरह की गड़बड़ियों का पता लगाने और नतीजों को फ़िल्टर करने के लिए
MultiDetector,MultiProcessor, औरFocusingProcessorफ़्रेमवर्क उपलब्ध कराता है. ML Kit इस तरह के तरीके उपलब्ध नहीं कराता. हालांकि, डेवलपर चाहें, तो इस सुविधा को लागू कर सकते हैं.
Gradle इंपोर्ट अपडेट करना
नीचे दी गई टेबल के मुताबिक, अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल में ML Kit Android लाइब्रेरी के लिए डिपेंडेंसी अपडेट करें. यह फ़ाइल आम तौर पर app/build.gradle होती है:
| एपीआई | जीएमवी आर्टफ़ैक्ट | 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 |
एपीआई में हुए बदलाव
इस सेक्शन में, हर Vision API के लिए GMV और ML Kit की क्लास और तरीकों के बारे में बताया गया है. साथ ही, इसमें एपीआई को शुरू करने का तरीका भी दिखाया गया है.
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
GMV CONTOUR_LANDMARKS) को बदलने के लिए |
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
अगर Google Mobile Vision की CameraSource लाइब्रेरी का इस्तेमाल किया जाता है, तो ML Kit की CameraXSource लाइब्रेरी पर आसानी से माइग्रेट किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि आपका ऐप्लिकेशन, 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 |
बहिष्कृत |
सहायता पाना
अगर आपको कोई समस्या आती है, तो हमारे कम्यूनिटी पेज पर जाएं. यहां हमने हमसे संपर्क करने के लिए उपलब्ध चैनलों के बारे में बताया है.