- 全站推荐
- 全站置顶
- 首页推荐
- 社区推荐
-
置顶推荐
- 6小时
- 12小时
- 24小时
- 3天
- 一周
- 长期
- 设为精华
- 热门推荐
- 撤销审核
- 进小黑屋
- 生成议题
一、脚本概述
本脚本运行于 AutoJS6 环境,专为小鹏汽车车机(XOS)设计。主要实现两大功能:
1. 自动记录导航信息:实时读取导航栏数据,保存到本地文件,便于事后分析。
2. 按场景自动切换驾驶模式:在 NGP(导航辅助驾驶)与 LCC(车道居中辅助)之间智能切换,适配特定道路、距离、出口等条件。
AutoJS6 是一款强大的安卓平台 JavaScript 自动化工具,基于原 Auto.js 项目二次开发,支持无障碍服务、图像识别、控件操作等核心功能。脚本通过双击图标的方式模拟手动切换,无需额外硬件。
---
二、主要功能详解
2.1 导航信息记录
· 读取字段:NGP状态、驾驶状态(NGP/LCC/手动/L→N)、当前道路、剩余距离/单位、转向动作(如“进入”)、出口编号/名称、目标道路。
· 输出位置:/storage/emulated/0/脚本/NavigationRecord.txt
· 记录格式:时间戳 | NGP状态 | 驾驶状态 | 当前道路 | 距离/单位 | 转向动作 | 出口 | 目标道路
· 写入方式:自动创建文件,每次读取后追加一行。
2.2 驾驶模式切换
脚本提供三个独立函数,可在主循环中调用,也可手动触发:
· switchNGPToLCC():从 NGP 切换至 LCC(双击 NGP 图标)。
· switchLCCToNGP():从 LCC 切换至 NGP(双击“切换至NGP”按钮)。
· switchDrivingMode():智能判断当前模式并自动切换到另一种模式。
2.3 内置场景规则(示例)
主循环中已配置若干触发条件,用户可根据需要修改:
触发场景 条件 动作
鸡公山隧道 当前道路=“鸡公山隧道”,距离>1.1公里 NGP → LCC
水官高速出口 当前道路=“S28水官高速”,距离<1.1公里,出口=“入口”,目标=“福田 南山” NGP → LCC
龙景立交/南坪快速 距离>5公里,转向=“进入 丰泽湖隧道” NGP → LCC
北环大道出口 当前道路=“北环大道”,距离<1.1公里,出口=“出口”,目标=“坂田 坂银大道” LCC → NGP
南坪快速出口 当前道路=“南坪快速”,距离<1.5公里,出口=“出口”,目标=“西丽” LCC → NGP
说明:L→N 状态表示 LCC 模式下出现了“切换至 NGP”按钮,此时执行 LCC→NGP 切换。
---
三、使用前提
项目 要求
硬件 小鹏汽车(支持NGP/LCC的车型),车机已登录
软件 AutoJS6(已安装并授予无障碍权限)
权限 Shizuku 已激活并授权,用于执行 settings get system curXPilotStatus
车机状态 导航已开启,且导航栏控件(guide_navi_info)可见
文件系统 /storage/emulated/0/脚本/ 目录存在或可自动创建
---
四、安装与配置步骤
4.1 安装 AutoJS6 及授予权限
1. 从官方渠道下载 AutoJS6 并安装。
2. 打开 AutoJS6,根据提示授予 无障碍服务 权限。
3. 授予 悬浮窗 权限(用于显示 Toast)。
4.2 配置 Shizuku
1. 安装 Shizuku 应用并激活(无线调试或 root)。
2. 在 AutoJS6 中启用 Shizuku 集成。
3. 测试执行:shizuku("settings get system curXPilotStatus") 应返回数值。
注意:直接写入无障碍服务列表会导致其他已启用的服务被意外覆盖,建议采用追加模式以保留原有服务。
4.3 导入脚本
1. 将 1NGP功能补全.js 文件复制到手机内部存储任意目录(建议 /storage/emulated/0/脚本/)。
2. 打开 AutoJS6,点击右下角“+” → 导入 → 选择该文件。
4.4 修改脚本(可选)
· 如需更改触发条件,编辑主循环中的 if 判断。
· 如需调整记录间隔,修改最后的 sleep(10000)(单位毫秒)。
· 如需更改日志路径,修改 LOG_FILE_PATH 常量。
---
五、运行与操作指南
5.1 运行脚本
1. 车机处于导航界面(确保顶部导航条显示距离、转向等信息)。
2. 在 AutoJS6 中找到脚本,点击 运行 按钮(三角形图标)。
3. 脚本开始每 10 秒检测一次,并显示 Toast 提示当前读取的导航信息。
5.2 手动触发切换(调试用)
若需临时切换而不等待条件触发,可在 AutoJS6 的“控制台”或单独脚本中调用:
```javascript
// 单独执行切换
switchNGPToLCC(); // NGP→LCC
switchLCCToNGP(); // LCC→NGP
switchDrivingMode(); // 自动反转
```
注意:需要先运行主脚本使函数定义生效。
5.3 停止脚本
· 关闭 AutoJS6 的“正在运行”服务(通知栏停止)。
· 或直接退出 AutoJS6 应用。
---
六、日志文件说明
6.1 查看日志
使用文件管理器打开 /storage/emulated/0/脚本/NavigationRecord.txt,或用 AutoJS6 内置的文件浏览功能。
6.2 日志示例
```
时间戳 | NGP状态 | 驾驶状态 | 当前道路 | 距离/单位 | 转向动作 | 出口 | 目标道路
2026-04-09 10:30:15 | 1 | NGP | 鸡公山隧道 | 2.3公里 | 进入 | |
2026-04-09 10:30:25 | 1 | NGP | 鸡公山隧道 | 1.0公里 | 进入 | |
2026-04-09 10:30:35 | 0 | LCC | 鸡公山隧道 | 0.8公里 | 进入 | |
```
6.3 日志用途
· 复盘驾驶模式切换的时机与地点。
· 调试新增触发条件是否准确。
· 分析导航控件在不同路况下的显示内容。
---
七、常见问题及解决
问题 可能原因 解决方法
Toast 显示“导航条消失” 未进入导航界面,或导航栏被遮挡 确保车机导航已启动且处于路线引导状态
切换无反应 控件 ID 变化或图标位置偏移 更新脚本中的控件 ID;检查是否因车机主题导致图标位置变化
读取到的 ngp_status 为 undefined Shizuku 未正确配置 重新授权 Shizuku,在 AutoJS6 中测试 shizuku("settings get system curXPilotStatus")
文件写入失败 目录不存在或无写入权限 手动创建 /storage/emulated/0/脚本/ 文件夹,并检查存储权限
频繁误切换 触发条件过于宽松 收紧判断条件(如增加 navi.distance > 1.1 && navi.distance < 2.0)
双击切换时误触其他区域 控件实际可点击区域与预期不一致 改用 控件.click() 方法而非坐标点击(需修改脚本)
---
八、安全与免责声明
1. 安全第一:请在封闭场地或安全路段测试脚本,确认切换行为符合预期后再上路使用。
2. 驾驶责任:驾驶员始终对车辆操控负全责。脚本仅作为辅助,不得完全依赖。
3. 系统更新:小鹏 OTA 可能改变控件 ID 或行为,届时需同步更新脚本。
4. 修改风险:自行修改触发条件或点击逻辑可能导致意外切换,请谨慎操作。
---
九、自定义扩展指南
9.1 增加新触发场景
在主循环的 if (navi.drive_state == "NGP") 或 if (navi.drive_state == "L→N") 代码块中添加新的判断:
```javascript
if (navi.curroad == "深南大道" && navi.distance < 0.3 && navi.unit == "公里") {
switchNGPToLCC();
}
```
9.2 修改记录间隔
将文件末尾的 sleep(10000); 改为所需毫秒数(例如 5000 为 5 秒)。
9.3 添加额外记录字段
在 writeLogToFile 函数中增加字段,同时修改表头与数据拼接。
---
十、版本与作者
· 版本:2026.04.07
· 作者:桥客
· AutoJS6 版本:v6.2.0+
如有问题,建议先在 AutoJS6 控制台逐行调试 readNavi() 函数,确认各字段返回值正确。
如果你觉得脚本有用,请好好反思一下为什么摊上了这么个车企,并劝阻身边亲友远离始乱终弃不负责任的车企。



积分赞赏人员
添加咨询车型
新出行