การย้ายข้อมูลจาก Mobile Vision ไปยัง ML Kit บน Android

เอกสารนี้ครอบคลุมขั้นตอนที่คุณต้องทำเพื่อย้ายข้อมูลโปรเจ็กต์จาก Google Mobile Vision (GMV) ไปยัง ML Kit ใน Android

การเปลี่ยนแปลง API โดยรวม

การเปลี่ยนแปลงเหล่านี้มีผลกับ API ทั้งหมด

  • API GMV จะแสดงผลลัพธ์ SparseArray<T> แบบซิงโครนัส API ของ ML Kit ใช้ Task API ของบริการ Google Play เพื่อแสดงผลลัพธ์แบบไม่พร้อมกัน
  • GMV ใช้การเรียก isOperational() ใน API Surface เพื่อระบุว่าดาวน์โหลดโมดูลสำเร็จและพร้อมใช้งานหรือไม่ ML Kit ไม่มี เมธอดดังกล่าว ML Kit จะแสดงข้อยกเว้น MlKitException.UNAVAILABLE หากไม่ได้ดาวน์โหลดโมดูล คุณสามารถตรวจหาข้อยกเว้นนี้และประมวลผล เฟรมถัดไป หรือตั้งค่าการหมดเวลาแล้วลองอีกครั้งด้วยเฟรมปัจจุบัน
  • วิธีการ GMV ใช้ Frame เป็นอินพุต ML Kit ใช้ InputImage
  • GMV มีเฟรมเวิร์ก MultiDetector, MultiProcessor และ FocusingProcessor สำหรับการตรวจหาหลายรายการและการกรองผลลัพธ์ ML Kit ไม่มีกลไกดังกล่าว แต่หากต้องการ นักพัฒนาแอปสามารถ ใช้ฟังก์ชันการทำงานเดียวกันนี้ได้

อัปเดตการนำเข้า Gradle

อัปเดตทรัพยากร Dependency สำหรับไลบรารี ML Kit สำหรับ Android ในไฟล์ Gradle ของโมดูล (ระดับแอป) ซึ่งโดยปกติคือ app/build.gradle ตามตารางต่อไปนี้

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

ส่วนนี้อธิบายคลาสและเมธอด GMV และ ML Kit ที่เกี่ยวข้องสำหรับ Vision API แต่ละรายการ และแสดงวิธีเริ่มต้น 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

ใช้ #setContourMode เพื่อแทนที่ GMV CONTOUR_LANDMARKS)

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.getHeight()
Face.getWidth()
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

หากใช้ไลบรารี CameraSource ที่ Google Mobile Vision จัดให้ คุณจะย้ายข้อมูลไปยังไลบรารี CameraXSource ของ ML Kit ได้อย่างง่ายดาย หากแอปทำงานบน 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 เลิกใช้

การขอความช่วยเหลือ

หากพบปัญหา โปรดไปที่หน้าชุมชน ซึ่งเราได้ระบุช่องทางที่ใช้ติดต่อเรา