Repository navigation
Releases: Xposed-Modules-Repo/io.github.wumisc.safewalk
Releases · Xposed-Modules-Repo/io.github.wumisc.safewalk
Release list
SafeWalk 2.9.0
🏗 架构:相机彻底搬离 SystemUI
- 新增
WalkPreviewService(App 进程相机前台服务),RearCameraOverlay随之迁移 - Hook 端删除全部相机逻辑,只保留「该显示 / 该收起」的指挥广播(带令牌)
- 解决系统界面无相机权限、CameraService 限制、崩溃连带系统界面三个根本问题
- 预览服务回传真实显示状态,修正 Hook 端去重状态与实况脱节导致「手动关一次后再也不自动开」
✨ 新增:车祸预警(Pixel 风格)
CrashDetector:合加速度阈值 + 连续 2 次命中 + 60 秒冷却- 三档灵敏度:低 ≈2.5g / 中 ≈2.0g / 高 ≈1.5g
EmergencyAlertActivity:全屏急救卡 + 60 秒倒计时,超时先发含位置短信再拨号- 无权限时降级为跳转短信/拨号界面,不静默失败
- 急救卡页面新增开关与灵敏度设置,权限按需申请
📝 日志链路重做
- 日志路径改为
/storage/emulated/0/Android/Travel safely/diag.log(用户可见) - 目录判定由不可靠的
canWrite()改为探针写入(真写一字节再删) - 三级降级:用户目录 → 应用私有目录 → 仅 logcat,结果打进 logcat
- 授予「所有文件访问」后运行期热切换,不用重启
- App 启动时向 Hook 索要内存日志,写入同一文件(步态/手电/车祸都在那个进程)
🐛 关键修复
- 首页与二级页状态矛盾:总开关卡片无开关控件、点击静默翻转;关闭后磁贴文案被覆盖成「总开关已关闭」,掩盖真实设置 → 改为明确文案 + 切换提示
- 全屏预览黑屏:
TextureView所在悬浮窗缺FLAG_HARDWARE_ACCELERATED,一帧都上不了屏 - 全屏尺寸用
displayMetrics(应用可用区)→ 改真实屏幕像素 +FLAG_LAYOUT_IN_SCREEN - 视图 0×0 只重试一次 → 200ms × 3 退避
- 手电两套开关(开/关各自独立)合并为绝对开关;通知按钮 action 统一
- 夜间手电丢失「屏幕亮」与「预览避让相机」两个门槛,导致开了行走模式就永不提醒
- 总开关关闭时仍能拉起预览 → 改为只记录不弹并说明原因
exportConfig无 try/catch,存储异常直接崩 UI 线程- 配置回退路径硬编码
/data/data/<包名>/→ 改用ctx.filesDir - 实验区手电开关用本地布尔记账 → 改读
TorchCallback真实状态 - 急救卡缺
onResume刷新,改完总开关回来仍显示旧状态 - 行走模式页诊断行、
testRearCam*死字段清理
🧪 测试与验证
- 单测扩展到 43 项 / 8 个类,新增
PreviewWindowTest、CrashDetectorTest、DiagLogTest - Lint 0 error
- 实验区夜间手电测试改为真实通知链路(带可点击的「手电筒」按钮),不再是纯文本通知
SafeWalk v1.7
安全出行 v1.7
行走安全 LSPosed 模块,注入 SystemUI。
- 后置摄像头路况(全屏半透明 / 角落小窗,可切换,触摸穿透)
- 自动模式:检测步行节奏自动开关,坐下/停下自动收起
- 低头看路提醒(Toast,默认 3 秒,20 秒节流)
- 相机避让:前台进入相机/微信/支付宝等自动收起,冷却后自动恢复
- 深色模式跟随系统,省电优化
作用域:系统界面 (com.android.systemui)