@@ -279,6 +279,36 @@ class YOLOPlatformView(
279279 override fun onMethodCall (call : MethodCall , result : MethodChannel .Result ) {
280280 try {
281281 when (call.method) {
282+ " setConfidenceThreshold" -> {
283+ val threshold = call.argument<Double >(" threshold" )
284+ if (threshold != null ) {
285+ yoloView.setConfidenceThreshold(threshold)
286+ Log .d(TAG , " Confidence threshold updated: $threshold " )
287+ result.success(null )
288+ } else {
289+ result.error(" invalid_args" , " threshold is required" , null )
290+ }
291+ }
292+ " setIoUThreshold" , " setIouThreshold" -> {
293+ val threshold = call.argument<Double >(" threshold" )
294+ if (threshold != null ) {
295+ yoloView.setIouThreshold(threshold)
296+ Log .d(TAG , " IoU threshold updated: $threshold " )
297+ result.success(null )
298+ } else {
299+ result.error(" invalid_args" , " threshold is required" , null )
300+ }
301+ }
302+ " setNumItemsThreshold" -> {
303+ val numItems = call.argument<Int >(" numItems" )
304+ if (numItems != null ) {
305+ yoloView.setNumItemsThreshold(numItems)
306+ Log .d(TAG , " NumItems threshold updated: $numItems " )
307+ result.success(null )
308+ } else {
309+ result.error(" invalid_args" , " numItems is required" , null )
310+ }
311+ }
282312 " setThresholds" -> {
283313 val confidence = call.argument<Double >(" confidenceThreshold" )
284314 val iou = call.argument<Double >(" iouThreshold" )
@@ -314,6 +344,51 @@ class YOLOPlatformView(
314344 }
315345 }
316346 }
347+ " switchCamera" -> {
348+ yoloView.switchCamera()
349+ Log .d(TAG , " Camera switched" )
350+ result.success(null )
351+ }
352+ " setZoomLevel" -> {
353+ val zoomLevel = call.argument<Double >(" zoomLevel" )
354+ if (zoomLevel != null ) {
355+ yoloView.setZoomLevel(zoomLevel.toFloat())
356+ Log .d(TAG , " Zoom level set to: $zoomLevel " )
357+ result.success(null )
358+ } else {
359+ result.error(" invalid_args" , " zoomLevel is required" , null )
360+ }
361+ }
362+ " setStreamingConfig" -> {
363+ // Parse streaming config from arguments
364+ val configMap = call.arguments as ? Map <* , * >
365+ if (configMap != null ) {
366+ val streamConfig = YOLOStreamConfig (
367+ includeDetections = configMap[" includeDetections" ] as ? Boolean ? : true ,
368+ includeClassifications = configMap[" includeClassifications" ] as ? Boolean ? : true ,
369+ includeProcessingTimeMs = configMap[" includeProcessingTimeMs" ] as ? Boolean ? : true ,
370+ includeFps = configMap[" includeFps" ] as ? Boolean ? : true ,
371+ includeMasks = configMap[" includeMasks" ] as ? Boolean ? : false ,
372+ includePoses = configMap[" includePoses" ] as ? Boolean ? : false ,
373+ includeOBB = configMap[" includeOBB" ] as ? Boolean ? : false ,
374+ includeOriginalImage = configMap[" includeOriginalImage" ] as ? Boolean ? : false ,
375+ maxFPS = (configMap[" maxFPS" ] as ? Number )?.toInt(),
376+ throttleIntervalMs = (configMap[" throttleInterval" ] as ? Number )?.toInt(),
377+ inferenceFrequency = (configMap[" inferenceFrequency" ] as ? Number )?.toInt(),
378+ skipFrames = (configMap[" skipFrames" ] as ? Number )?.toInt()
379+ )
380+ yoloView.setStreamConfig(streamConfig)
381+ Log .d(TAG , " Streaming config updated" )
382+ result.success(null )
383+ } else {
384+ result.error(" invalid_args" , " Invalid streaming config" , null )
385+ }
386+ }
387+ " stop" -> {
388+ yoloView.stop()
389+ Log .d(TAG , " Camera and inference stopped" )
390+ result.success(null )
391+ }
317392 " captureFrame" -> {
318393 val imageData = yoloView.captureFrame()
319394 if (imageData != null ) {
0 commit comments