Bu belgede, projelerinizi Android'de Google Mobile Vision'dan (GMV) ML Kit'e taşımak için uygulamanız gereken adımlar açıklanmaktadır.
Genel API Değişiklikleri
Bu değişiklikler tüm API'ler için geçerlidir:
- GMV API'leri eşzamanlı olarak
SparseArray<T>sonucu döndürür. ML Kit API'leri, sonuçları eşzamansız olarak döndürmek için Google Play Hizmetleri Task API'yi 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üzeyinde
isOperational()çağrısını kullanır. ML Kit'te böyle bir yöntem yoktur. Bir modül indirilmemişse ML KitiMlKitException.UNAVAILABLEistisnası oluşturur. Bu istisnayı yakalayıp sonraki kareyi işleyebilir veya bir zaman aşımı ayarlayıp mevcut kareyle tekrar deneyebilirsiniz. - GMV yöntemleri giriş için
Framekullanır. ML Kit,InputImagekullanır. - GMV, birden fazla algılama ve sonuç filtreleme işlemi gerçekleştirmek için
MultiDetector,MultiProcessorveFocusingProcessorçerçeveleri sağlar. ML Kiti bu tür mekanizmalar sağlamaz ancak geliştirici isterse aynı işlevi uygulayabilir.
Gradle İçe Aktarmalarını Güncelleme
Modülünüzün (uygulama düzeyinde) genellikle app/build.gradle olan Gradle dosyasındaki ML Kit Android kitaplıklarının bağımlılıklarını aşağıdaki tabloya göre güncelleyin:
| API | GMV çıktı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.2 |
| 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 bir Vision API için karşılık gelen GMV ve ML Kiti sınıfları ile yöntemleri açıklanmakta ve API'nin nasıl ilk kullanıma hazırlanacağı gösterilmektedir.
FaceDetector
Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:
Brüt genel işlem tutarı (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şlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:
Brüt genel işlem tutarı (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şlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:
Brüt genel işlem tutarı (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ü 21 veya daha yüksekse ML Kit'in CameraXSource kitaplığına kolayca geçiş yapabilirsiniz.
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 yönetilen |
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ı listelediğimiz Topluluk sayfamıza göz atın.