diff --git a/app/build.gradle b/app/build.gradle index d15bf90..d11cab6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,6 +78,7 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'com.google.android.material:material:1.3.0' + implementation "io.noties.markwon:core:4.6.2" implementation ('com.rokid.security:glass3.open.sdk:2.1.5-E') { exclude group: "org.slf4j" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3da7ec8..6d7aba8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -75,6 +75,9 @@ + diff --git a/app/src/main/java/com/nova/brain/glass/model/ChatItem.kt b/app/src/main/java/com/nova/brain/glass/model/ChatItem.kt new file mode 100644 index 0000000..211b401 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/model/ChatItem.kt @@ -0,0 +1,6 @@ +package com.nova.brain.glass.model + +import com.xuqm.base.adapter.BaseItem + +data class ChatItem(val title: String, val content: String): BaseItem() { +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/ChatActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/ChatActivity.kt new file mode 100644 index 0000000..127f514 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/ui/ChatActivity.kt @@ -0,0 +1,54 @@ +package com.nova.brain.glass.ui + +import android.widget.TextView +import com.nova.brain.glass.R +import com.nova.brain.glass.helper.OfflineCmdListener +import com.nova.brain.glass.helper.OfflineCmdServiceHelper +import com.nova.brain.glass.model.ChatItem +import com.nova.brain.glass.viewmodel.ChatVM +import com.xuqm.base.adapter.BasePagedAdapter +import com.xuqm.base.adapter.CommonPagedAdapter +import com.xuqm.base.adapter.ViewHolder +import com.xuqm.base.ui.BaseListActivity +import io.noties.markwon.Markwon + +class ChatActivity : BaseListActivity() { + private val listener = object : OfflineCmdListener { + override fun onOfflineCmd(cmd: String) { + runOnUiThread { + when (cmd) { + "退出", "返回", "退回" -> { + finish() + } + } + } + } + } +private lateinit var markwon: Markwon + override fun initData() { + super.initData() + + markwon = Markwon.create(this); + } + + override fun onResume() { + super.onResume() + OfflineCmdServiceHelper.addOnLineListener(listener) + } + + override fun onPause() { + super.onPause() + OfflineCmdServiceHelper.removeOnLineListener(listener) + } + + private val adapter = object : CommonPagedAdapter(R.layout.item_chat) { + override fun convert(holder: ViewHolder, item: ChatItem, position: Int) { + holder.setText(R.id.title, item.title) + + val tv = holder.getView(R.id.content) + markwon.setMarkdown(tv, item.content); + } + } + + override fun adapter(): BasePagedAdapter = adapter +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt index aaa1712..e5989fb 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt @@ -9,6 +9,7 @@ import com.nova.brain.glass.helper.OfflineCmdListener import com.nova.brain.glass.helper.OfflineCmdServiceHelper import com.nova.brain.glass.viewmodel.WelcomeVM import com.xuqm.base.ui.BaseActivity +import kotlin.jvm.java class WelcomeActivity : BaseActivity() { @@ -27,6 +28,7 @@ class WelcomeActivity : BaseActivity() { binding.btnGet.setOnClickListener { vm.demoGet() } binding.btnPost.setOnClickListener { vm.demoPost() } binding.btnSse.setOnClickListener { vm.demoPostSse() } + binding.md.setOnClickListener { startActivity(Intent(this@WelcomeActivity, ChatActivity::class.java)) } } override fun initData() { diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt new file mode 100644 index 0000000..1646d54 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt @@ -0,0 +1,46 @@ +package com.nova.brain.glass.viewmodel + +import com.nova.brain.glass.model.ChatItem +import com.xuqm.base.viewmodel.BaseListViewModel +import com.xuqm.base.viewmodel.callback.Response + + +class ChatVM : BaseListViewModel() { + override fun loadData( + page: Int, + onResponse: Response + ) { + onResponse.onResponse(arrayListOf().apply { + add( + ChatItem( + "本周周报", """ +## 统计数据截止到:2026年3月19日 1:36 + +### 纪检Agent3期产品设计】明日到达计划完成时间。 + +#### *重点关注*:张三【测试运维部】负责的“C大脑-脑实例- V2.24-测试方案设计 + + * 当前状态:已延期13天,严重程度为【严重延期】。 + * 参谋建议:建议高优处理。 + +""".trimIndent() + ) + ) + add( + ChatItem( + "我最紧急的任务是哪个", """ + +# 标题 + +这是 **加粗**、*斜体*、~~删除线~~ + +- 列表1 +- 列表2 + +[点击跳转](https://openai.com) + """.trimIndent() + ) + ) + }) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml new file mode 100644 index 0000000..58d80a6 --- /dev/null +++ b/app/src/main/res/layout/activity_chat.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/activity_welcome.xml index de3e36e..c52c31d 100644 --- a/app/src/main/res/layout/activity_welcome.xml +++ b/app/src/main/res/layout/activity_welcome.xml @@ -64,13 +64,38 @@ android:textSize="14sp" android:text="SSE演示" /> + + + + + diff --git a/app/src/main/res/layout/item_chat.xml b/app/src/main/res/layout/item_chat.xml new file mode 100644 index 0000000..26f5a08 --- /dev/null +++ b/app/src/main/res/layout/item_chat.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/base/build.gradle b/base/build.gradle index 62638c9..52fb59b 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -1,10 +1,5 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' -apply plugin: 'maven-publish' - -// 声明aar包的版本号 -def aarVersion = "0.0.1.101" - android { compileSdkVersion versions.compileSdk @@ -53,48 +48,4 @@ dependencies { task sourceJar(type: Jar) { archiveClassifier.set('sources') from android.sourceSets.main.java.srcDirs -} -afterEvaluate { - publishing { - publications { - // 这里的debug名字是自己起的 - release(MavenPublication) { - groupId = 'cn.org.bjca.trust.android' - artifactId = 'base' - version = aarVersion - // 这里除了有debug 还有release - from components.release - // 运行任务,把源码打进去 - artifact sourceJar - } - } - // 添加仓库地址 - repositories { - // 本地仓库 -// mavenLocal() - // 当上传到远端仓库 -// maven { -// allowInsecureProtocol true -// url("http://nexus.51trust.net/repository/android-hosted/") -// credentials { -// username = "deployment" -// password = "deployment123" -// } -// } - maven { - allowInsecureProtocol true - url("http://xuqinmin.com.cn:8081/repository/android-releases/") - credentials { - // 从 local.properties 读取,避免凭据提交到版本控制 - def props = new Properties() - def localPropertiesFile = rootProject.file("local.properties") - if (localPropertiesFile.exists()) { - localPropertiesFile.withInputStream { props.load(it) } - } - username = props.getProperty("nexus.username", "") - password = props.getProperty("nexus.password", "") - } - } - } - } } \ No newline at end of file