diff --git a/android/app/src/main/kotlin/com/example/pad_scanner/MainActivity.kt b/android/app/src/main/kotlin/com/example/pad_scanner/MainActivity.kt index 927f66c..a47125e 100644 --- a/android/app/src/main/kotlin/com/example/pad_scanner/MainActivity.kt +++ b/android/app/src/main/kotlin/com/example/pad_scanner/MainActivity.kt @@ -1,5 +1,45 @@ package com.example.pad_scanner +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import io.flutter.embedding.android.FlutterActivity +import io.flutter.plugin.common.EventChannel -class MainActivity : FlutterActivity() +class MainActivity : FlutterActivity() { + + override fun configureFlutterEngine(flutterEngine: io.flutter.embedding.engine.FlutterEngine) { + super.configureFlutterEngine(flutterEngine) + + EventChannel(flutterEngine.dartExecutor.binaryMessenger, + "com.example.pad_scanner/scan") + .setStreamHandler(object : EventChannel.StreamHandler { + private var receiver: BroadcastReceiver? = null + + override fun onListen(arguments: Any?, events: io.flutter.plugin.common.EventChannel.EventSink?) { + if (events == null) return + + receiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val barcode = intent.getStringExtra("scannerdata") ?: return + events.success(mapOf( + "barcode" to barcode, + "codeType" to "UNKNOWN" + )) + } + } + + val filter = IntentFilter("com.android.server.scannerservice.broadcast") + registerReceiver(receiver, filter) + } + + override fun onCancel(arguments: Any?) { + receiver?.let { + unregisterReceiver(it) + receiver = null + } + } + }) + } +}