Tài liệu này trình bày các bước bạn cần thực hiện để di chuyển dự án của mình từ Tầm nhìn của Google Mobile (GMV) sang Bộ công cụ học máy trên Android.
Các thay đổi chung về API
Những thay đổi này áp dụng cho tất cả API:
- Các API GMV trả về kết quả
SparseArray<T>
một cách đồng bộ. API Bộ công cụ học máy sử dụng API Tác vụ của Dịch vụ Google Play để trả về kết quả không đồng bộ. - GMV sử dụng lệnh gọi
isOperational()
trong nền tảng API để cho biết liệu mô-đun đã được tải xuống thành công và sẵn sàng để sử dụng. Bộ công cụ học máy không có phương pháp như vậy. Bộ công cụ học máy sẽ gửi ra một trường hợp ngoại lệMlKitException.UNAVAILABLE
nếu mô-đun chưa được tải xuống. Bạn có thể phát hiện ngoại lệ này và xử lý khung tiếp theo hoặc đặt thời gian chờ và thử lại với khung hiện tại. - Phương thức GMV sử dụng
Frame
để nhập. Bộ công cụ học máy sử dụngInputImage
. - GMV cung cấp
MultiDetector
,MultiProcessor
vàFocusingProcessor
các khung phát hiện và lọc kết quả nhiều lần. Bộ công cụ học máy không cung cấp các cơ chế như vậy, nhưng chức năng tương tự có thể được được nhà phát triển triển khai nếu muốn.
Cập nhật các tuỳ chọn nhập Gradle
Cập nhật các phần phụ thuộc cho thư viện Android Bộ công cụ học máy trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là app/build.gradle
), theo bảng sau:
API | Cấu phần phần mềm GMV (tổng giá trị hàng hoá) | Cấu phần phần mềm của bộ công cụ học máy |
---|---|---|
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 |
Thay đổi về API
Phần này mô tả các lớp và phương thức GMV và Bộ công cụ học máy tương ứng cho từng API Vision, đồng thời trình bày cách khởi chạy API.
FaceDetector
Mã hoá lại quá trình khởi chạy như trong ví dụ sau:
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);
Thay đổi các tên lớp và phương thức sau:
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
sử dụng |
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)
|
Tính năng này được hỗ trợ bởi chế độ đường viền khuôn mặt. |
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
Mã hoá lại quá trình khởi chạy như trong ví dụ sau:
GMV
barcodeDetector = new BarcodeDetector.Builder(context).build());
ML Kit
barcodeScanner = BarcodeScanning.getClient();
Thay đổi các tên lớp và phương thức sau:
android.gms.vision.barcode |
mlkit.vision.barcode |
---|---|
BarcodeDetector |
BarcodeScanner
|
SparseArray<Barcode> detect(Frame frame) |
Task<List<Barcode>> process(@NonNull InputImage image)
|
Barcode
|
Barcode
|
TextRecognition
Mã hoá lại quá trình khởi chạy như trong ví dụ sau:
GMV
textRecognizer = new TextRecognizer.Builder(context).build();
ML Kit
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
Thay đổi các tên lớp và phương thức sau:
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
Nếu sử dụng thư viện CameraSource do Google Mobile Vision cung cấp, bạn có thể
dễ dàng di chuyển sang CameraXSource
của Bộ công cụ học máy
thư viện, miễn là ứng dụng của bạn đang chạy trên phiên bản sdk tối thiểu>= 21.
Thay đổi các tên lớp và phương thức sau:
android.gms.vision |
mlkit.vision.camera |
---|---|
CameraSource
|
CameraSourceConfig
|
CameraSource.Builder
|
CameraSourceConfig.Builder
|
CameraSource.Builder.setAutoFocusEnabled
|
Tính năng tự động lấy nét được cung cấp theo mặc định khi sử dụng CameraX. |
CameraSource.Builder.setFacing
|
CameraSourceConfig.Builder.setCameraFacing
|
CameraSource.Builder.setFocusMode
|
Tính năng tự động lấy nét được cung cấp theo mặc định khi sử dụng CameraX. |
CameraSource.Builder.setRequestedFps
|
Không dùng nữa. |
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()
|
Được xử lý nội bộ |
CameraSource.PictureCallback |
Không được dùng nữa |
CameraSource.ShutterCallback |
Không được dùng nữa |
Nhận trợ giúp
Nếu bạn gặp phải vấn đề, hãy truy cập vào trang Cộng đồng của chúng tôi. trong đó chúng tôi trình bày các kênh mà chúng tôi có thể liên hệ.