|
@@ -1,6 +1,8 @@
|
|
package com.hzliuzhi.applet.container
|
|
package com.hzliuzhi.applet.container
|
|
|
|
|
|
|
|
+import android.annotation.SuppressLint
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
|
+import android.view.KeyEvent
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.compose.LocalActivity
|
|
import androidx.activity.compose.LocalActivity
|
|
import androidx.activity.compose.setContent
|
|
import androidx.activity.compose.setContent
|
|
@@ -11,12 +13,20 @@ import androidx.compose.runtime.rememberCoroutineScope
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.navigation.NavHostController
|
|
import androidx.navigation.NavHostController
|
|
import androidx.navigation.compose.rememberNavController
|
|
import androidx.navigation.compose.rememberNavController
|
|
|
|
+import com.hzliuzhi.applet.browser.webview.WebViewBridge
|
|
import com.hzliuzhi.applet.container.navigation.Host
|
|
import com.hzliuzhi.applet.container.navigation.Host
|
|
|
|
+import com.hzliuzhi.applet.container.scanner.ScannerListener
|
|
|
|
+import com.hzliuzhi.applet.container.scanner.rememberScannerListener
|
|
|
|
+import com.hzliuzhi.applet.core.shared.Event
|
|
|
|
+import com.hzliuzhi.applet.core.shared.Payload
|
|
|
|
+import com.hzliuzhi.applet.core.shared.SharedFlowHub
|
|
import com.hzliuzhi.applet.core.theme.SixTheme
|
|
import com.hzliuzhi.applet.core.theme.SixTheme
|
|
import com.hzliuzhi.applet.device.pulse.PulseEventHandle
|
|
import com.hzliuzhi.applet.device.pulse.PulseEventHandle
|
|
|
|
|
|
class MainActivity : ComponentActivity() {
|
|
class MainActivity : ComponentActivity() {
|
|
private var navController: NavHostController? = null
|
|
private var navController: NavHostController? = null
|
|
|
|
+ private var scanner: ScannerListener? = null
|
|
|
|
+
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
super.onCreate(savedInstanceState)
|
|
enableEdgeToEdge()
|
|
enableEdgeToEdge()
|
|
@@ -32,7 +42,29 @@ class MainActivity : ComponentActivity() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- LocalActivity.current?.also { PulseEventHandle(it, rememberCoroutineScope()) }
|
|
|
|
|
|
+ LocalActivity.current?.also {
|
|
|
|
+ scanner = rememberScannerListener { result ->
|
|
|
|
+ val code = result.code
|
|
|
|
+ code.takeIf { code.isNotEmpty() }?.also {
|
|
|
|
+ val message = Payload.data(data = result).toEvent()?.let { payload ->
|
|
|
|
+ WebViewBridge.Message(type = "scan", payload = payload)
|
|
|
|
+ }?.let { message ->
|
|
|
|
+ Event<WebViewBridge.Message, String>(
|
|
|
|
+ type = "${SharedFlowHub.WEBVIEW_BRIDGE_EVENT}:js",
|
|
|
|
+ payload = message
|
|
|
|
+ )
|
|
|
|
+ }?.let { event ->
|
|
|
|
+ SharedFlowHub.emit(event)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ PulseEventHandle(it, rememberCoroutineScope())
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @SuppressLint("RestrictedApi")
|
|
|
|
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
|
|
|
+ return scanner?.dispatchKeyEvent(event)?.takeIf { it } ?: super.dispatchKeyEvent(event)
|
|
|
|
+ }
|
|
}
|
|
}
|