1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package com.hzliuzhi.applet.container
- import android.annotation.SuppressLint
- import android.view.KeyEvent
- import android.widget.Toast
- import androidx.activity.compose.LocalActivity
- import androidx.activity.compose.setContent
- import androidx.compose.foundation.layout.padding
- import androidx.compose.material3.Scaffold
- import androidx.compose.runtime.rememberCoroutineScope
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.platform.LocalContext
- import androidx.lifecycle.compose.LocalLifecycleOwner
- import androidx.navigation.NavHostController
- import androidx.navigation.compose.rememberNavController
- import com.hzliuzhi.applet.container.navigation.Host
- import com.hzliuzhi.applet.core.shared.Message
- 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.printer.Printer
- import com.hzliuzhi.applet.scanner.Scanner
- class MainActivity : AndroidActivity() {
- private var navController: NavHostController? = null
- @SuppressLint("RestrictedApi")
- override fun dispatchKeyEvent(event: KeyEvent): Boolean {
- val context = applicationContext
- return Scanner.getInstance(context).dispatchKeyEvent(event).takeIf { it } ?: super.dispatchKeyEvent(event)
- }
- override fun setContent() {
- super.setContent()
- setContent {
- navController = rememberNavController().also {
- SixTheme {
- Scaffold() { padding ->
- Host(
- navController = it,
- modifier = Modifier.padding(padding)
- )
- }
- }
- }
- val context = LocalContext.current
- val owner = LocalLifecycleOwner.current
- Scanner.getInstance(context).observe(owner) { result ->
- if (result == null) {
- Payload.error<Unit>(message = "扫码失败: 结果为空").toJson()
- } else {
- Toast.makeText(context, result.message, Toast.LENGTH_SHORT).show()
- when {
- result.code.startsWith("six:") -> null
- else -> Payload.data(data = result).toJson()
- }
- }?.also {
- val event = Message(type = "scan", payload = it).toWebEvent()
- SharedFlowHub.emit(event)
- }
- }
- Scanner.getInstance(context).eventHandle(rememberCoroutineScope())
- LocalActivity.current?.also { Printer.getInstance(it).eventHandle(rememberCoroutineScope()) }
- val tag = context.resources.getString(R.string.app_id)
- when {
- tag.startsWith("AIO") -> run {
- LocalActivity.current?.also {
- com.hzliuzhi.applet.device.pulse.PulseEventHandle(it, rememberCoroutineScope())
- }
- }
- }
- }
- }
- }
|