feat: add BroadcastReceiver and EventChannel for scanner

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-05-07 19:55:47 +08:00
parent 960d92e51f
commit d6bb5afb3c

View File

@@ -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
}
}
})
}
}