package com.reactnativeobjectdetection import android.graphics.Rect import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactContextBaseJavaModule import com.google.mlkit.vision.common.InputImage import com.google.mlkit.vision.objectdetection.ObjectDetection import com.google.mlkit.vision.objectdetection.ObjectDetector import com.google.mlkit.vision.objectdetection.ObjectDetectorOptions class ObjectDetectionModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { init { // Optionally initialize MLKit ObjectDetector here } @ReactMethod fun startObjectDetection(imagePath: String, promise: Promise) { try { val image = InputImage.fromFilePath(reactApplicationContext, Uri.parse(imagePath)) val objectDetector: ObjectDetector = ObjectDetection.getClient(ObjectDetectorOptions.Builder().build()) objectDetector.process(image) .addOnSuccessListener { detectedObjects -> val objectsList = mutableListOf>() detectedObjects.forEach { detectedObject -> val boundingBox: Rect = detectedObject.boundingBox val objectData = mapOf( "boundingBox" to boundingBox.toString(), "trackingId" to detectedObject.trackingId ) objectsList.add(objectData) } promise.resolve(objectsList) } .addOnFailureListener { e -> promise.reject("ERROR", e.message, e) } } catch (e: Exception) { promise.reject("ERROR", e.message, e) } } override fun getName(): String { return "ObjectDetectionModule" } }