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. ML Kit, bir modül indirilmemişseMlKitException.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 aktarma işlemlerini 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:
GMV
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);
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:
GMV
barcodeDetector = new BarcodeDetector.Builder(context).build());
ML Kit
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:
GMV
textRecognizer = new TextRecognizer.Builder(context).build();
ML Kit
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 minimum SDK sürümünün 21 veya üzeri olması koşuluyla 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ın açıklandığı Topluluk sayfamıza göz atın.