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

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

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

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

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

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

อัปเดตทรัพยากร Dependency สำหรับไลบรารี Android ของ ML Kit ในไฟล์ 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.2
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 เลิกใช้

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

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