通知中心增强(agent-126/127/128/130) + App内通知中心方案(agent-129)
- 开关平移动画(时间轴180ms可打断/快照memcpy/顶28不盖状态栏) agent-126 - 音量/亮度滑条复用设置页方案(跳步+上限clamp+写DAC去抖/状态栏带仅redraw_sb清绘) agent-127 - 通知列表滚动(方向随input.swipe_invert, 滚动≠关闭, 回弹才关) agent-128 - 去音量chip(静音↔恢复last_nz, NCP_CHIP_N 5→4: WiFi/蓝牙/主题/亮度) agent-130 - meow_ui.a 零改动(d249c6e6); launcher md5 c7893faf; 宿主 90+/0warn - ④App前台划出通知中心方案: FRAMEWORK_DESIGN §10.5 + NOTIFICATION_SYSTEM §9 + MEOW_APP_SDK §6.1(M3跨进程: SDK全局状态栏下滑唤出+半程可回+点通知拉app)
This commit is contained in:
1 parent
2b17f69f24
commit
a8ec8377ed
7 files changed
+542
-59
No files matched your search
@@ -47,6 +47,8 @@ struct ipc_hdr { /* LE */
|
||||
| 0x0021 | MSG_NOTIFY_ACK | ↓ | 落库结果 |
|
||||
| 0x0022 | MSG_NOTIFY_DISMISS | ↑ | 撤下通知 |
|
||||
| 0x0023 | MSG_NOTIFY_LIST | ↓ | 下发通知清单(重同步) |
|
||||
| 0x0025 | MSG_NOTIF_OPEN | ↑ | **(拟,号待 `meow_ipc.h` 回填)** App 检测到顶部下滑→请求 launcher 展开通知中心叠加会话(App 前台,见 §10.5) |
|
||||
| 0x0026 | MSG_NOTIF_CLOSE | ↑ | **(拟,号待 `meow_ipc.h` 回填,可选用途)** App 告知结束/退出→launcher 收尾兜底(见 §10.5) |
|
||||
| 0x0030 | MSG_ACT_DECLARE | ↑ | (重)声明路由表 |
|
||||
| 0x0031 | MSG_ACT_QUERY | ↑ | 解析 activity 链路 |
|
||||
| 0x0032 | MSG_ACT_RESULT | ↓ | 返回链路 |
|
||||
@@ -166,6 +168,37 @@ meow_sysui(系统进程总监,meow_svcd 托管;最小依赖/不渲染/最
|
||||
- **launcher 主界面 / 设置页 / 电源菜单全部迁到 SDK 控件**:逻辑/渲染走 SDK(MEOW_APP_SDK §6.1 ② App 跨 Activity 控件、§5.4 A① 分组设置表单、§5.7 B④ 面板等模板),MD3 化、日/夜主题(`display.theme_mode`)、全局 UI 统一。
|
||||
- **不让 app 自建叠加**:app 一律经 SDK 标准能力;系统级叠加(状态栏/通知中心/电源菜单/全局手势)只在系统进程内实现。迁移后 launcher 与 APP 用同一套 SDK 渲染地基,观感/生命周期统一。
|
||||
|
||||
### 10.5 App 前台划出通知中心(跨进程叠加会话)[源:2026-08-30]
|
||||
|
||||
> 定位:补齐「全屏 App(如 hello)前台时,App 进程内顶部下滑也能唤起**由 launcher 渲染**的通知中心」。
|
||||
> 详细实现方案见 `devdocs/plan/NOTIF_CENTER_APP_OVERLAY_PLAN.md`;本节为**定案决策**(归属/归属不变/协议/会话/故障隔离)。
|
||||
|
||||
- **交互与归属(不变)**:App 前台时顶部下滑,**App 进程只负责「检测手势 + 经 IPC 上报」**;通知中心
|
||||
**仍由 launcher 渲染**(符合 §10.2「系统 UI 归 launcher」/`MEOW_APP_SDK §6.1 ③`/`NOTIFICATION_SYSTEM §9`);
|
||||
**App 进程不渲染系统 UI**(不叠加状态栏/通知中心)。手势检测在 App 进程 SDK(`meow_ui_input.c` 已把
|
||||
「起点在顶部热区+向下主导」识别为系统保留手势 `MEOW_EV_NOTIF_PULL` → 路由 `meow_ui_sys_notif_pull()`)。
|
||||
- **跨进程握手(复用现有 IPC,不新增 socket)**:复用 `AF_UNIX /usr/data/meow_ipc.sock`(`meow_ipc.h
|
||||
MEOW_IPC_PATH`,launcher `ipc_thread` bind/listen)。拟新增上行消息:
|
||||
- `MSG_NOTIF_OPEN`(App→launcher):App 检测到顶部下滑→请求展开通知中心叠加会话;负载 `m_notif_open_t`
|
||||
(app_id/event_seq/origin_x/origin_y/hotzone/flags)。launcher 回 `MSG_ACK` 受理(best-effort,App 不强依赖)。
|
||||
- `MSG_NOTIF_CLOSE`(App→launcher,可选用途):App 告知结束/退出→launcher 收尾(清 active/SIGCONT 兜底)。
|
||||
- 号段/结构以 `meow_ipc.h` 回填为准(拟 `0x0025/0x0026`,见 §13 决策点)。
|
||||
- **launcher 叠加会话(复用电源菜单对 App 的冻结模板)**:收到 `MSG_NOTIF_OPEN`(且当前在 App 前台会话,
|
||||
`launch_app` waitpid 循环内)→ **SIGSTOP App** → 读回 App 帧(`memcpy` fb0 buffer0 → back_buf,App 帧恒
|
||||
buffer0 不走 `fb_backup_player`;同 `pm_capture_app_frame`)→ 写 `/tmp/meow_notif_active`(同
|
||||
`/tmp/meow_power_menu_active`,让 watchdog 让位)→ 叠加渲染 `draw_notif_center` + `meow_ui_flush` →
|
||||
**接管输入**(`open(DEV_TOUCH)`+`kp_open`,App 已冻不影响)→ 关闭(上滑/点空白/左缘左滑/点通知/物理键)→
|
||||
恢复 App 帧 → `unlink(active)` → **SIGCONT App** → 重播输入基线。差异:背景=App 帧(非应用列表);
|
||||
关闭后回 App(非回 run_menu)。
|
||||
- **App 崩溃/卡死**:launcher 会话子循环周期用 `waitpid(pid,&st,WNOHANG)`/`kill(pid,0)` 探测;App 死→立即结束会话
|
||||
(不 SIGCONT 死进程、不恢复死帧),走既有**统一应用退出路径**归位;launcher 不崩(`kill(pid,0)` 存活检测
|
||||
与 watchdog 让位语义同 `meow_launcherd.c` ~8533-8555)。
|
||||
- **全屏/沉浸不冲突**:全屏/收合时 SDK 顶部热区缩小为 `MEOW_SBAR_HOTZONE_FS=4`(或提示线高),**仍保留顶部
|
||||
一处下拉入口**(`meow_ui_statusbar_hotzone()`),spec-ref §3.1/A-13/§5.1 已定「全屏下顶部下滑仍开通知中心」。
|
||||
- **与 M3 关系**:本方案是 M3「前台会话」的一个切面(App 前台会话+跨进程叠加)。**本方案先行**(握手+叠加会话+
|
||||
故障隔离,不依赖 M3);通知点击 `target_activity` 的 activity 级跳转 / 点击通知**跨 app 启动** / nav_stack 回退
|
||||
**留 M3**(首期:点通知 = dismiss + 关面板 + SIGCONT 回当前 App)。
|
||||
|
||||
---
|
||||
|
||||
## 附录 A(用户追加):后台运行 / 后台播放权限
|
||||
|
||||
Reference in new issue
Block a user