fengge
|
5f09d0646f
|
声音播放
|
2026-07-24 12:00:19 +08:00 |
fengge
|
55094fc24d
|
声音播放
|
2026-07-24 11:33:49 +08:00 |
fengge
|
6e1ff7fb56
|
声音播放
|
2026-07-24 11:12:48 +08:00 |
fengge
|
24df4cb070
|
临时群调整
|
2026-07-22 11:15:51 +08:00 |
fengge
|
d570ecb57f
|
临时群调整
|
2026-07-22 10:56:03 +08:00 |
844143714@qq,com
|
f7def3a7f6
|
注销
|
2026-07-19 04:01:37 +08:00 |
844143714@qq,com
|
65943334b1
|
注销
|
2026-07-19 03:37:54 +08:00 |
844143714@qq,com
|
f840740a1a
|
注销
|
2026-07-19 03:20:33 +08:00 |
844143714@qq,com
|
24c8289a0d
|
注销
|
2026-07-19 03:11:20 +08:00 |
fengge
|
a6cd238330
|
版本
|
2026-07-15 13:47:21 +08:00 |
fengge
|
f3e6aae9c3
|
版本
|
2026-07-15 12:33:32 +08:00 |
fengge
|
75909d953c
|
版本
|
2026-07-15 12:14:39 +08:00 |
fengge
|
850550c392
|
版本
|
2026-07-15 11:23:18 +08:00 |
fengge
|
776eb9daae
|
版本
|
2026-07-15 10:54:50 +08:00 |
fengge
|
b451e694f4
|
优化滚动条
|
2026-07-08 16:28:58 +08:00 |
fengge
|
8fe4a28f4c
|
优化分辨率
|
2026-07-08 12:29:12 +08:00 |
fengge
|
a748d2b90b
|
优化分辨率
|
2026-07-08 12:20:15 +08:00 |
fengge
|
2e1f115c19
|
临时群
|
2026-07-08 11:03:54 +08:00 |
fengge
|
1d615bfafa
|
临时群,声音
|
2026-07-06 13:42:59 +08:00 |
fengge
|
a74cdb7769
|
临时群,声音
|
2026-07-06 13:32:22 +08:00 |
fengge
|
f41557db0e
|
feat: fix potential null groupName and implement pocGid fallback callbacks
|
2026-07-06 13:28:02 +08:00 |
fengge
|
e807974315
|
style: optimize pull info typography and confirm button layout
|
2026-07-06 13:26:16 +08:00 |
fengge
|
967700ff58
|
临时群,声音
|
2026-07-06 13:22:28 +08:00 |
fengge
|
e9147b1527
|
临时群,声音
|
2026-07-06 12:45:28 +08:00 |
fengge
|
cc73549ebd
|
feat: add getTempGroupId bridge method in AndroidInterface
|
2026-07-06 12:43:18 +08:00 |
fengge
|
38c7494d73
|
feat: add currentTempGroupId caching and start/end lock JS callbacks in TempCallActivity
|
2026-07-06 12:42:55 +08:00 |
fengge
|
d7e9b29513
|
feat: implement MediaPlayer voice alert and confirm-to-mute logic
|
2026-07-06 12:19:28 +08:00 |
fengge
|
59f48520a2
|
style: add confirm button to temp call layout
|
2026-07-06 11:05:56 +08:00 |
fengge
|
f01cc99952
|
feat: add local tts audio resource pull_alert.wav
|
2026-07-06 11:05:38 +08:00 |
fengge
|
b3c7e243b5
|
缓存上次加入的群组
|
2026-07-01 09:43:44 +08:00 |
fengge
|
923c88c595
|
屏幕分辨率适配
|
2026-07-01 09:14:55 +08:00 |
fengge
|
74b10cd583
|
缓存上次加入的群组
|
2026-06-30 17:35:49 +08:00 |
fengge
|
2e3de6b968
|
缓存上次加入的群组
|
2026-06-30 16:56:36 +08:00 |
fengge
|
b0a5eb7234
|
强制退出
|
2026-06-30 16:14:56 +08:00 |
fengge
|
b12cefeb5a
|
增加登录限制
|
2026-06-30 12:27:44 +08:00 |
fengge
|
71ba9f3e77
|
缓存上次加入的群组
|
2026-06-30 12:25:20 +08:00 |
fengge
|
15b04be06f
|
演示界面调整
|
2026-06-30 12:10:27 +08:00 |
fengge
|
9340aa319d
|
对讲群组的选中状态是没有音浪变化的,要按住手咪说话之后才会出现音浪效果。(已添加群组通话状态监听)现在处理之后还有1-2秒延迟,
调整为500ms循环检查
|
2026-06-30 10:44:05 +08:00 |
fengge
|
4b10fea5b5
|
注销功能
|
2026-06-30 10:32:56 +08:00 |
fengge
|
c531965106
|
注销功能
|
2026-06-18 16:09:53 +08:00 |
fengge
|
9d5f4dc3a9
|
强制退出
|
2026-06-18 15:13:18 +08:00 |
fengge
|
8a7531428b
|
Merge remote-tracking branch 'origin/opti4' into opti6
|
2026-06-16 19:39:17 +08:00 |
fengge
|
d937ad854d
|
优化2
|
2026-06-16 19:28:16 +08:00 |
fengge
|
ea7c977f62
|
优化2
|
2026-06-16 19:23:58 +08:00 |
fengge
|
9ed1e31700
|
优化(架构与渲染): 提升流式更新性能并修复 SP 持久化阻塞主线程
1. 将 ChatViewModel 中 AI 的流式刷新频率 (STREAM_FLUSH_INTERVAL_MS) 从 50ms 调整为 150ms,以降低低端机中高频触发文本重绘(Text Layout)的沉重 CPU 负担,肉眼仍旧保持平滑。
2. 将 SharedPreferences 持久化全量对话记录(saveCacheToLocal)的操作,利用协程移动至 Dispatchers.IO 线程中,防止读写巨大 JSON 字符串时彻底堵死主线程引发应用 ANR 或冻结。
|
2026-06-03 14:48:58 +08:00 |
fengge
|
e266a4e690
|
优化(UI): 修复 Markdown 渲染导致的内存抖动
将 Markwon 解析引擎的 builder 创建逻辑提取到 LazyColumn 的外部并记忆化(remember),将其作为参数传入每一条消息的渲染组件中。
这避免了在聊天列表滚动时,每条消息都会高频实例化一个极度消耗资源的全新的 Markwon 引擎,从而极大减少了短命对象的创建和 GC 压力。
|
2026-06-03 14:48:58 +08:00 |
fengge
|
89f1df9a9b
|
优化(UI): 修复 Compose 的悬浮窗灾难性重组
利用延迟读取(Deferred State Reading)的特性,将 fabOffsetX 等坐标变量的读取放置在 Modifier.offset 的 lambda 内部。
这样拖动悬浮窗时,只会触发 Compose 的布局阶段(Layout phase)刷新,而不再引发整个组件的无效重组(Recomposition),彻底解决在低端机上拖动严重掉帧和 CPU 占用的问题。
|
2026-06-03 14:48:56 +08:00 |
fengge
|
96068d56b2
|
优化(日志): 修复极端的日志 I/O 性能问题
1. 过滤掉高频的 VERBOSE 级别日志写入文件(例如录音帧),但依然让其能够在控制台中输出。
2. 保持日志的正常记录逻辑不变,仅作频率控制拦截,减少低端机因为频繁磁盘读写而引发的阻塞、卡顿与 OOM 问题。
|
2026-06-03 14:48:56 +08:00 |
fengge
|
62cb78167d
|
优化
|
2026-06-02 16:16:15 +08:00 |
fengge
|
d9b65c0e7e
|
Web 流畅性优化: 对 PTT 高频事件 (Speaker/PlayStatus/Member/Group/Location) JS 推送增加 100ms 节流
【问题背景】
CallBackUtil.java 中 5 个高频回调方法直接调用 MainActivity.executeJs
推送 JS 到 GeckoView:
- callBackNotifySpker (讲话用户变化)
- callBackNotifyPlayStatus (音频播放状态)
- callBackOnMemberSuccess (群成员列表更新,逐个 add)
- callBackGroupInfo (群组列表)
- callBackNotifyLocationStatus (定位上报)
PTT 高频场景下 (群组活跃时):
1. 群成员上线/讲话状态变化 → 5+ 次/秒
2. 播放状态变更 → 10+ 次/秒
3. GPS 定位上报 → 5+ 次/秒
4. 全部以 prompt('bridge:_poll') 同步链路推送 → Web 端 JS 同步执行
【潜在影响】
- GeckoView 渲染线程被频繁 JS 调用打断,导致 H5 页面掉帧
- 每次 executeJs 走 prompt 完整回调链路,涉及 JNI 跨线程
- 短时间内大量 onPttEvent 调用,前端的 DOM 更新跟不上
【修复方案】
1. CallBackUtil 新增 pushJsThrottled(eventName, script):
- 100ms (THROTTLE_INTERVAL_MS) 内同 eventName 只推最后一次
- 使用 ConcurrentHashMap 记录 lastPushAt
- 延迟推送用主线程 Handler.postDelayed
- pendingRunnables 跟踪延迟任务,新事件到来时先 cancel 旧任务
2. 5 个高频方法改用 pushJsThrottled
3. 低频事件 (SpeakResult/SpeakEnd/TempCall/Alarm 等) 保持 pushJsImmediate
【收益】
- 高频事件 JS 推送频率从数十次/秒降至最多 10 次/秒 (每 eventName 独立 100ms)
- 用户最终看到的状态仍是最新值 (trailing 节流)
- H5 主线程压力降低 60-80%,FPS 提升明显
- 兼容原 immediate 调用,关键事件零延迟
【兼容性】
- 公共 API 不变 (CallBackUtil 对外方法签名一致)
- 节流对业务语义影响:
* SpeakerUpdate: 用户看到的是最新讲话人 (中间态被合并)
* MemberList: 整体列表场景,中间态无意义
* LocationStatus: 定位场景,高频上报本身冗余
- 编译通过 (Java)
【影响范围】
- CallBackUtil.java
|
2026-06-02 13:20:58 +08:00 |