|
@@ -1,10 +1,76 @@
|
|
|
package com.vinno.vitalapp
|
|
|
|
|
|
+import android.content.BroadcastReceiver
|
|
|
+import android.content.Context
|
|
|
+import android.content.Intent
|
|
|
+import android.content.IntentFilter
|
|
|
+import android.hardware.usb.UsbDevice
|
|
|
+import android.hardware.usb.UsbManager
|
|
|
import android.os.Bundle
|
|
|
import io.flutter.embedding.android.FlutterActivity
|
|
|
+import io.flutter.embedding.engine.FlutterEngine
|
|
|
+import io.flutter.plugin.common.EventChannel
|
|
|
+import kotlin.collections.HashMap
|
|
|
+
|
|
|
+class MainActivity : FlutterActivity() {
|
|
|
+ private lateinit var usbEventReceiver: BroadcastReceiver
|
|
|
+ private lateinit var eventChannel: EventChannel
|
|
|
+ private var eventSink: EventChannel.EventSink? = null
|
|
|
|
|
|
-class MainActivity: FlutterActivity() {
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
|
+
|
|
|
+ // 初始化BroadcastReceiver
|
|
|
+ usbEventReceiver = object : BroadcastReceiver() {
|
|
|
+ override fun onReceive(context: Context?, intent: Intent) {
|
|
|
+ val usbDevice: UsbDevice? = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE)
|
|
|
+ val deviceName = usbDevice?.deviceName ?: "Unknown"
|
|
|
+ val deviceType = usbDevice?.deviceClass?.toString() ?: "Unknown"
|
|
|
+
|
|
|
+ val data = HashMap<String, String>().apply {
|
|
|
+ put("name", deviceName)
|
|
|
+ put("type", deviceType)
|
|
|
+ }
|
|
|
+
|
|
|
+ when (intent.action) {
|
|
|
+ UsbManager.ACTION_USB_DEVICE_ATTACHED -> {
|
|
|
+ data["action"] = "attached"
|
|
|
+ eventSink?.success(data)
|
|
|
+ }
|
|
|
+ UsbManager.ACTION_USB_DEVICE_DETACHED -> {
|
|
|
+ data["action"] = "detached"
|
|
|
+ eventSink?.success(data)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 注册BroadcastReceiver以监听USB设备的变更
|
|
|
+ IntentFilter().apply {
|
|
|
+ addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED)
|
|
|
+ addAction(UsbManager.ACTION_USB_DEVICE_DETACHED)
|
|
|
+ registerReceiver(usbEventReceiver, this)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
|
|
+ super.configureFlutterEngine(flutterEngine)
|
|
|
+
|
|
|
+ // 设置与Flutter的通信通道
|
|
|
+ eventChannel = EventChannel(flutterEngine.dartExecutor.binaryMessenger, "com.vinno.vitalapp/usb_events")
|
|
|
+ eventChannel.setStreamHandler(object : EventChannel.StreamHandler {
|
|
|
+ override fun onListen(arguments: Any?, events: EventChannel.EventSink) {
|
|
|
+ eventSink = events
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onCancel(arguments: Any?) {
|
|
|
+ eventSink = null
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onDestroy() {
|
|
|
+ unregisterReceiver(usbEventReceiver)
|
|
|
+ super.onDestroy()
|
|
|
}
|
|
|
}
|