Bu dokümanda, projelerinizi Google Mobile Vision'dan (GMV) Android'deki ML Kit'e taşımak için uygulamanız gereken adımlar ele alınmaktadır.
Genel API Değişiklikleri
Bu değişiklikler tüm API'ler için geçerlidir:
- GMV API'leri
SparseArray<T>
sonucunu eşzamanlı olarak döndürür. ML Kit API'leri, sonuçları eşzamansız olarak döndürmek için Google Play Hizmetleri Task API'sini kullanır. - GMV, bir modülün başarıyla indirilip indirilmediğini ve kullanıma hazır olup olmadığını belirtmek için API yüzeyindeki
isOperational()
çağrısını kullanır. ML Kit'te böyle bir yöntem yoktur. Bir modül indirilmediyse ML KitiMlKitException.UNAVAILABLE
istisnası atar. Bu istisnayı yakalayıp sonraki kareyi işleyebilir veya zaman aşımı ayarlayarak mevcut kareyle tekrar deneyebilirsiniz. - GMV yöntemleri giriş için
Frame
kullanır. ML Kit,InputImage
kullanır. - GMV, birden fazla algılama ve sonuç filtreleme gerçekleştirmek için
MultiDetector
,MultiProcessor
veFocusingProcessor
çerçeveleri sağlar. ML Kit bu tür mekanizmalar sağlamaz ancak geliştirici isterse aynı işlevi uygulayabilir.
Gradle içe aktarmalarını güncelleme
Modül (uygulama düzeyinde) Gradle dosyanızdaki (genellikle app/build.gradle
) ML Kit Android kitaplıklarının bağımlılıklarını aşağıdaki tabloya göre güncelleyin:
API | GMV Yapısı | ML Kit Yapısı |
---|---|---|
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 |
API Değişiklikleri
Bu bölümde, her Vision API için ilgili GMV ve ML Kit sınıfları ve yöntemleri açıklanmakta ve API'nin nasıl başlatılacağı gösterilmektedir.
FaceDetector
Başlangıç ayarını bu örnekte gösterildiği gibi yeniden kodlayın:
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);
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
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 yerine |
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)
|
Bu özellik, yüz konturu modu kapsamındadır. |
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
Başlangıç ayarını bu örnekte gösterildiği gibi yeniden kodlayın:
barcodeDetector = new BarcodeDetector.Builder(context).build());
barcodeScanner = BarcodeScanning.getClient();
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
android.gms.vision.barcode |
mlkit.vision.barcode |
---|---|
BarcodeDetector |
BarcodeScanner
|
SparseArray<Barcode> detect(Frame frame) |
Task<List<Barcode>> process(@NonNull InputImage image)
|
Barcode
|
Barcode
|
TextRecognition
Başlangıç ayarını bu örnekte gösterildiği gibi yeniden kodlayın:
textRecognizer = new TextRecognizer.Builder(context).build();
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
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 tarafından sağlanan CameraSource kitaplığını kullanıyorsanız uygulamanızın en az 21 sürümüne sahip bir SDK'da çalıştığından emin olarak ML Kit'in CameraXSource
kitaplığına kolayca geçebilirsiniz.
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
android.gms.vision |
mlkit.vision.camera |
---|---|
CameraSource
|
CameraSourceConfig
|
CameraSource.Builder
|
CameraSourceConfig.Builder
|
CameraSource.Builder.setAutoFocusEnabled
|
CameraX kullanılırken otomatik odaklama varsayılan olarak sağlanır. |
CameraSource.Builder.setFacing
|
CameraSourceConfig.Builder.setCameraFacing
|
CameraSource.Builder.setFocusMode
|
CameraX kullanılırken otomatik odaklama varsayılan olarak sağlanır. |
CameraSource.Builder.setRequestedFps
|
Kullanımdan kaldırıldı. |
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()
|
Dahili olarak ele alınır |
CameraSource.PictureCallback |
Kullanımdan kaldırıldı |
CameraSource.ShutterCallback |
Kullanımdan kaldırıldı |
Yardım alma
Herhangi bir sorunla karşılaşırsanız bizimle iletişime geçebileceğiniz kanalları açıkladığımız Topluluk sayfamıza göz atın.