이 문서에서는 프로젝트를 이전하는 데 필요한 단계를 설명합니다. Google Mobile Vision (GMV)을 Android의 ML Kit로 마이그레이션
전반적인 API 변경사항
다음 변경사항은 모든 API에 적용됩니다.
- GMV API는
SparseArray<T>
결과를 동기식으로 반환합니다. ML Kit API는 Google Play 서비스 Task API를 사용하여 결과를 비동기식으로 반환합니다. - GMV는 API 노출 영역에서
isOperational()
호출을 사용하여 모듈이 다운로드되었으며 사용할 준비가 되었습니다. ML Kit에는 이러한 메서드를 사용할 수 있습니다. 다음과 같은 경우 ML Kit에서MlKitException.UNAVAILABLE
예외가 발생합니다. 모듈이 다운로드되지 않았습니다. 이 예외를 포착하고 제한 시간을 설정하고 현재 프레임으로 재시도하세요. - GMV 메서드는
Frame
를 사용합니다. 입력. ML Kit는InputImage
를 사용합니다. - GMV는
MultiDetector
,MultiProcessor
,FocusingProcessor
를 제공합니다. 다중 감지 및 결과 필터링을 수행하기 위한 프레임워크입니다. ML 키트 는 이러한 메커니즘을 제공하지 않지만 동일한 기능을 개발자가 직접 구현할 수도 있습니다.
Gradle 가져오기 업데이트
다음 표에 따라 모듈(앱 수준) Gradle 파일(일반적으로 app/build.gradle
)에서 ML Kit Android 라이브러리의 종속 항목을 업데이트합니다.
API | GMV 아티팩트 | 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 |
API 변경사항
이 섹션에서는 각 Vision API에 해당하는 GMV 및 ML Kit 클래스와 메서드를 설명하고 API를 초기화하는 방법을 보여줍니다.
FaceDetector
다음 예와 같이 초기화를 다시 코딩합니다.
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);
다음과 같이 클래스 및 메서드 이름을 변경합니다.
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());
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
다음 예와 같이 초기화를 다시 코딩합니다.
GMV
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 모바일 비전에서 제공하는 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 |
지원 중단됨 |
도움 받기
문제가 발생하면 커뮤니티 페이지를 확인하세요. 에서 Google에 문의하실 수 있는 채널을 확인하실 수 있습니다.