1. 数据库需求分析
    通过深度访谈盲人用户、康复专家及技术团队,明确系统需存储三类核心数据:

地理信息:包括道路(含盲道位置、宽度)、建筑物、公交站点的坐标、名称、类型及实时状态(如盲道损坏情况),需支持高频查询与动态更新。
用户信息:涵盖用户基本资料(如联系方式、紧急联系人)、个性化设置(语音偏好、操作习惯)及导航历史记录,需保障隐私安全。
交互数据:记录用户与系统的语音指令、触觉反馈操作日志,用于优化交互逻辑。
用户信息表(user_info)
同时,需满足实时性需求(如道路施工信息秒级更新)| 字段名 | 数据类型 | 约束 | 说明 |
| --------------- | ----------- | ----------------------- | ------------------- |
| user_id | INT(11) | 主键,自增 | 用户唯一标识 |
| username | VARCHAR(50) | 非空 | 用户名 |
| contact | VARCHAR(20) | 非空 | 联系方式(手机号) |
| gender | TINYINT(1) | 默认为 0 | 性别(0: 未知,1: 男,2: 女) |
| birthdate | DATE | | 出生日期 |
| create_time | DATETIME | 非空,默认 CURRENT_TIMESTAMP | 用户注册时间 |
| last_login_time | DATETIME | | 最后登录时间 |和高并发查询(如多用户同时规划路线)
关联关系:

与导航记录表(nav_record):一对多(一个用户对应多条导航记录,外键为user_id)。
与紧急联系人表(emergency_contact):一对多(一个用户对应多个紧急联系人,外键为user_id)。
与语音设置表(voice_settings):一对一(一个用户对应一组语音设置,外键为user_id)。

字段名 数据类型 约束 说明
geo_id INT(11) 主键,自增 地理信息唯一标识
name VARCHAR(100) 非空 地点名称(如 “人民公园西门”)
type VARCHAR(20) 非空 类型(道路 / 建筑物 / 公交站 / 盲道等)
longitude DECIMAL(10,6) 非空 经度坐标
latitude DECIMAL(10,6) 非空 纬度坐标
attributes TEXT 扩展属性(如盲道宽度、公交站路线)
update_time DATETIME 非空,默认 CURRENT_TIMESTAMP 数据更新时间
索引优化:

对longitude和latitude字段建立空间索引(如 MySQL 的 SPATIAL 索引),提升路径规划时的地理查询效率。
对type字段建立普通索引,便于按类别筛选数据(如查询所有盲道位置)。

字段名 数据类型 约束 说明
record_id INT(11) 主键,自增 导航记录唯一标识
user_id INT(11) 外键,非空 关联用户 ID
start_geo_id INT(11) 外键,非空 起点地理信息 ID
end_geo_id INT(11) 外键,非空 终点地理信息 ID
start_time DATETIME 非空 导航开始时间
end_time DATETIME 导航结束时间(可选,未完成则为空)
total_distance DECIMAL(10,2) 总路程(米)
status TINYINT(1) 非空,默认 0 状态(0: 进行中,1: 已完成,2: 已取消)
场景应用:

记录用户历史行程,支持按时间范围查询(如 “最近一周的导航记录”)。
通过start_geo_id和end_geo_id关联地理信息表,回溯具体路线节点。

字段名 数据类型 约束 说明
contact_id INT(11) 主键,自增 联系人唯一标识
user_id INT(11) 外键,非空 关联用户 ID
name VARCHAR(50) 非空 联系人姓名
relationship VARCHAR(20) 非空 关系(如 “父亲”“朋友”)
phone VARCHAR(20) 非空 联系电话
is_primary TINYINT(1) 非空,默认 0 是否为首选联系人(1: 是,0: 否)
业务规则:

每个用户至少设置 1 个紧急联系人,is_primary字段用于一键求助时优先拨打。
通过user_id与用户表关联,确保数据归属明确。

字段名 数据类型 约束 说明
user_id INT(11) 主键,外键 关联用户 ID(一对一关系)
voice_lang VARCHAR(20) 非空,默认 ' 中文' 语音语言(如 “中文”“英语”)
volume TINYINT(2) 非空,默认 50 音量(0-100 范围)
speed DECIMAL(2,1) 非空,默认 1.0 语速(0.5 倍 - 2.0 倍)
prompt_mode TINYINT(1) 非空,默认 0 提示模式(0: 标准,1: 简洁,2: 详细)
用户界面交互流程优化(语音 + 触觉)
  1. 核心功能操作流程
    场景 1:快速启动导航
    语音交互:
    用户长按屏幕任意位置,听到 “请说出目的地” 语音提示。
    用户输入 “去 XX 地铁站”,系统解析目的地并查询地理信息表,返回匹配结果(如 “XX 地铁站(A 口),距离当前位置 800 米,是否选择?”)。
    触觉反馈:
    确认目的地时,屏幕震动 3 次(单次震动时长 0.5 秒),表示操作成功;若未匹配到结果,连续震动 5 次(短震)并语音提示 “未找到该地点”。
    场景 2:紧急求助
    触发方式:
    双击屏幕 Home 键(预设快捷手势),或语音指令 “紧急求助”。
    系统响应:
    语音播报:“正在联系紧急联系人 [姓名],请保持通话”,同时向联系人发送包含当前坐标的短信(调用地理信息表实时坐标)。
    持续震动反馈(低频长震),直至用户手动取消或联系人接听电话。
    场景 3:语音设置调整
    交互逻辑:
    用户语音指令 “打开系统设置”,系统播报当前设置(如 “当前音量 50%,语速 1.0 倍,提示模式标准”)。
    用户通过语音指令 “调高音量” 或 “切换为简洁模式”,实时修改语音设置表数据,并立即生效。
    触觉辅助:
    调整音量时,滑动屏幕触发连续震动(音量越高,震动频率越快),帮助用户感知当前音量等级。
  2. 界面元素触觉布局设计
    功能区域 触摸位置 震动反馈模式 语音提示内容
    导航启动按钮 屏幕底部中央 长按 0.5 秒震动 1 次 “长按启动导航”
    紧急求助按钮 屏幕左上角 双击连续震动 2 次 “双击触发紧急求助”
    语音设置入口 屏幕右上角 单指滑动震动反馈 “向右滑动进入设置”
    路线节点提示 屏幕任意位置 接近路口时高频震动 “前方 50 米右转,盲道宽度 1.5 米”
    三、系统性能与安全设计
  3. 数据实时性保障
    地理信息更新:
    建立第三方数据接口(如地图 API),每日凌晨自动同步道路施工、公交线路变更等信息,更新地理信息表update_time字段。
    允许用户通过语音反馈 “此处盲道损坏”,生成临时地理标记(标记类型为 “问题上报”),后台审核后更新正式数据。
  4. 安全与隐私保护
    权限控制:
    紧急联系人信息加密存储(AES-256 算法),仅用户本人和授权客服可访问。
    导航记录默认保留 30 天,用户可通过语音指令 “删除历史记录” 批量清除数据。
    容灾备份:
    采用主从数据库架构(MySQL Master-Slave),实时同步数据至异地机房。
    每周自动备份全量数据,每月进行恢复演练,确保数据可追溯。用户界面交互流程优化(语音 + 触觉)
  5. 核心功能操作流程
    场景 1:快速启动导航
    语音交互:
    用户长按屏幕任意位置,听到 “请说出目的地” 语音提示。
    用户输入 “去 XX 地铁站”,系统解析目的地并查询地理信息表,返回匹配结果(如 “XX 地铁站(A 口),距离当前位置 800 米,是否选择?”)。
    触觉反馈:
    确认目的地时,屏幕震动 3 次(单次震动时长 0.5 秒),表示操作成功;若未匹配到结果,连续震动 5 次(短震)并语音提示 “未找到该地点”。
    场景 2:紧急求助
    触发方式:
    双击屏幕 Home 键(预设快捷手势),或语音指令 “紧急求助”。
    系统响应:
    语音播报:“正在联系紧急联系人 [姓名],请保持通话”,同时向联系人发送包含当前坐标的短信(调用地理信息表实时坐标)。
    持续震动反馈(低频长震),直至用户手动取消或联系人接听电话。
    场景 3:语音设置调整
    交互逻辑:
    用户语音指令 “打开系统设置”,系统播报当前设置(如 “当前音量 50%,语速 1.0 倍,提示模式标准”)。
    用户通过语音指令 “调高音量” 或 “切换为简洁模式”,实时修改语音设置表数据,并立即生效。
    触觉辅助:
    调整音量时,滑动屏幕触发连续震动(音量越高,震动频率越快),帮助用户感知当前音量等级。
  6. 界面元素触觉布局设计
    功能区域 触摸位置 震动反馈模式 语音提示内容
    导航启动按钮 屏幕底部中央 长按 0.5 秒震动 1 次 “长按启动导航”
    紧急求助按钮 屏幕左上角 双击连续震动 2 次 “双击触发紧急求助”
    语音设置入口 屏幕右上角 单指滑动震动反馈 “向右滑动进入设置”
    路线节点提示 屏幕任意位置 接近路口时高频震动 “前方 50 米右转,盲道宽度 1.5 米”
    三、系统性能与安全设计
  7. 数据实时性保障
    地理信息更新:
    建立第三方数据接口(如地图 API),每日凌晨自动同步道路施工、公交线路变更等信息,更新地理信息表update_time字段。
    允许用户通过语音反馈 “此处盲道损坏”,生成临时地理标记(标记类型为 “问题上报”),后台审核后更新正式数据。
  8. 安全与隐私保护
    权限控制:
    紧急联系人信息加密存储(AES-256 算法),仅用户本人和授权客服可访问。
    导航记录默认保留 30 天,用户可通过语音指令 “删除历史记录” 批量清除数据。
    容灾备份:
    采用主从数据库架构(MySQL Master-Slave),实时同步数据至异地机房。
    每周自动备份全量数据,每月进行恢复演练,确保数据可追溯。
    二、盲人导航系统用户界面设计方案
  9. 用户界面需求分析
    用户特性:盲人用户依赖听觉和触觉交互,对视觉元素无效,需避免复杂手势操作,界面需具备强引导性与容错性。
    功能任务:
    核心任务:快速启动导航(语音输入目的地)、紧急求助(一键触发)、实时路线引导(语音 + 震动反馈)。
    辅助任务:语音设置调整(音量、语速)、历史记录查询(语音播报)。
    界面类型:采用语音交互为主 + 触觉反馈为辅的非视觉界面,工具选择:
    语音合成:Google Text-to-Speech(支持多语言、自然语调)。
    语音识别:百度语音 API(离线模式应对弱网环境)。
    触觉反馈:Android 振动器 API(自定义震动频率与时长)。
  10. 设计原则应用
    合适性:
    语音内容符合日常表达(如 “前方 200 米左转,进入盲道” 而非专业术语)。
    触觉布局贴合单手操作习惯:紧急求助按钮固定在屏幕左上角(拇指易触区域),导航启动键在底部中央。
    简便易操作性:
    减少层级:主界面仅 3 个功能入口(导航、求助、设置),通过语音指令 “打开 XX” 直接跳转。
    快捷操作:长按屏幕任意位置唤醒语音输入,双击 Home 键触发紧急求助,避免复杂手势记忆。
    便于交互控制:
    语音指令可打断:用户随时说 “暂停导航” 或 “重复提示”,系统立即响应。
    状态可视化转语音:如网络断开时,语音播报 “网络连接失败,已启用离线模式”,替代传统弹窗。
    媒体组合恰当:
    导航场景:语音播报方向(“前方右转”)+ 接近路口时高频震动(每秒 2 次),过路口后恢复低频震动(每秒 1 次)。
    紧急场景:语音循环报警(“我需要帮助!当前位置:XX 路 XX 号”)+ 持续强震动(震动时长 2 秒 / 次,间隔 1 秒),直至用户取消。
    设置场景:调整音量时,语音实时播报当前数值(“音量已调至 60%”)+ 滑动屏幕时连续震动(音量越高,震动频率越快),形成多模态反馈闭环。
  11. 典型交互流程示例
    导航启动流程:
    用户长按屏幕→震动反馈→语音提示 “请说出目的地”。
    用户输入 “去人民医院”→系统解析地址→查询地理信息表匹配结果(如 “人民医院(正门),距离 1.5 公里,是否选择?”)。
    用户说 “是”→震动确认→开始规划路线→语音播报第一步指引。
    紧急求助流程:
    用户双击左上角→连续震动 3 次→语音播报 “正在联系首选联系人 [父亲]”。
    系统自动发送含当前坐标的短信(调用地理信息表实时位置),并拨打联系人电话。
    若未接通,5 分钟后自动切换至下一位联系人,直至求助成功或用户取消。