# AlarmBall **Repository Path**: jiadingyun/AlarmBall ## Basic Information - **Project Name**: AlarmBall - **Description**: 一个上位机短信报警信息获取的后台管理APP,短信拦截、数据库的应用 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-31 - **Last Updated**: 2022-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 报警球Android客户端设计文档 ## 1 功能概要 * 下发下装手机号码命令 * 下发设置报警球报警距离命令 * 下发查询报警球信息命令 * 下发打开,关闭报警球探头命令 * 可添加,删除,编辑报警球信息,存储在数据库中 * 监听报警球返回短信,并解析短信内容,反馈在界面上 * 保存发送和接收的信息概要在客户端中供日后查询 * 检测服务器更新版本 ## 2 界面 ###2.1 启动界面 * Logo淡入2秒 * 界面淡出 ###2.2 启动界面2 * 界面淡入 * 报警球旋转2秒 * 界面淡出 ###2.3 主界面 * 除了首次启动程序,以后每次启动程序都进入本界面 * 上方布局显示选择报警球信息 * “报警球设定”滑动进入报警球状态界面 * 5个按钮对应5个下发命令 * 按钮按下后图片背景变化 * 每次进入界面都从SharedPreferences中取出上次设置的后台手机号码,报警球信息,如果取出的号码已不在数据库中,显示未选择 * 界面启动时启动本界面短信监听器,界面退出时暂停监听器 * 检测服务器端是否有更新版本 ###2.3.1 报警球设定按钮 * 打开报警球状态界面 ###2.3.2 下载手机号按钮 * 弹出后台手机号设定界面 ###2.3.3 设定报警距离按钮 * 弹出报警距离设定界面 * 将报警距离写入该球数据库 ###2.3.4 查询报警球信息按钮 * 发送查询短信 ###2.3.5 打开,关闭探头 * 发送命令短信 ###2.3.6 Menu菜单 * 历史数据-打开历史数据查询界面,可查询收发短信,报警信息 2.4 报警球设定界面 * 显示报警球号码,位置,状态,报警距离 * 单击报警球信息按钮,界面滑入 * 每次打开界面读取SQLite更新ListView内容 * 单击ListView项目返回“主界面”,将选择项目信息赋给主界面报警球信息,并显示,选择信息存储在SharedPreferences中。 * 界面通过返回按钮淡出返回“主界面” * 通过menu按钮添加报警球,位置限制在5个汉字内,报警球号码可从联系人中取 * 添加报警球前遍历SQLite是否有该号码的报警球 * 通过长按ListView项目删除,修改报警球,或查看此报警球详细信息 * 每次对报警球信息更改后更新ListView * 界面启动时启动本界面短信监听器,界面退出时暂停监听器 * 界面滑出 ###2.5 报警球详细信息界面 *2.5.1 基本信息 * 号码,位置,当前状态 *2.5.2 历史数据 日期,操作或反馈 * 接收短信历史:报警及安全 * 指令发送历史 ###2.6 历史信息查询界面 主界面按menu进入,可按日期查询历史,设定日期保存在Sharedpreferences中,结束日期初始值每天更新为当天值 *2.6.1 短信发送查询 * Listview可上下左右滑动 * 发送日期,发送对象号码,发送内容(翻译),报警球位置 * 如果发送失败不存储 ###2.6.2 短信接收查询  Listview可上下左右滑动  接收日期,接收对象号码,报警球位置,接收内容(翻译) ###2.6.3 报警信息查询  Listview可上下左右滑动  报警日期,报警球位置,报警球号码,报警类型(翻译) ###2.7 后台手机号设定界面  单击下载手机号码按钮进入,界面弹出。  对话框显示最近设置后台手机号  分仅存储和下装后台(发送短信)两种模式  存储用户输入的后台手机号码到SharedPreferences中,并更新主界面按钮文字。 ###2.8 报警距离设定界面  单击报警距离设定按钮进入,界面弹出  对话框显示最近设置报警距离  分仅存储和下装后台(发送短信)两种模式  最多1位小数  如果选择发送,将用户输入值*100后转成文字发出  用户输入值在1-8之间,超出Toast提示  存储用户输入的后台手机号码到SharedPreferences中,并更新主界面按钮文字。 ## 3 通知 ###3.1 Toast 当程序在前台运行时使用,显示同时带有声音辅助提示  已添加报警球信息:添加报警球信息成功  已删除报警球信息:删除报警球信息成功  已修改报警球信息:修改报警球信息成功  请输入报警球号码和位置:修改或添加报警球未输入报警球号码或位置  此号码报警球已存在:修改或添加的报警球已存在于数据库中  已设置后台号码:设置后台号码成功  已设置报警距离:设置报警距离成功  指令发送成功:指令发送成功(发送音)  指令发送失败:指令发送失败  位置+报警球+设定成功:报警球回复OK!(安全音)  位置+报警球+新报警:报警球回复新报警短信(报警音)  位置+报警球+持续报警:报警球回复持续报警短信(报警音)  位置+报警球+安全:报警球回复恢复安全短信(安全音) ###3.2 Notification 当程序在后台运行时使用  新报警  持续报警  安全:不通知,将该报警球所有报警Notification清除 ## 4 后台进程 ###4.1 程序状态监视器 监视客户端数据,获取用户使用习惯。 4.1.1 将用户使用程序状态数据通过wifi回传至公司。 * 程序使用次数 * 报警球报警次数 * 报警球添加个数 * 各模块使用次数 ###4.2 短信监听器 4.2.1 系统级(优先级900) * 启动程序时启动,不关闭 * 接收系统短信广播 * 短信发出后使用监听短信是否发送成功,并提示 * 把发送的信息,存入数据库 * 发送失败的短信,从数据库删除 * 收到报警球返回的OK短信时,提示 * 收到报警球返回的短信,存入数据库 * 更新报警距离,报警球状态字段 * 如果收到OK!短信(设定成功) 不在程序中:不通知 在程序中:Toast通知,发出声音 * 如果收到安全短信 不在程序中:不通知,清除对应报警球已有notification 在程序中:Toast通知,发出声音 * 如果收到报警短信(新报警和持续报警) 不在程序中:通知栏里通知,发出声音 在程序中:Toast通知,发出声音 * 从通知栏可直接进入报警历史查询界面 * 如果已有多个notification通知,点击任意通知,其它通知消失 4.2.2 报警球设定内部类(优先级700) * 打开界面时启动,退出界面时关闭 * 刷新ListView 4.2.3 主界面内部类(优先级600) * 打开界面时启动,退出界面时关闭 * 接收系统短信广播 * 更新主界面报警球状态 * 更新设定距离显示文字 * 更新设定距离弹出框默认文字 4.2.4 系统级(优先级300) * 最后一个执行的监听器 * 如果短信为报警球所发,拦截短信 ## 5 程序存储字段 ###5.1 Sharedpreferences(临时存储) * 报警球信息——手机号,位置,状态,报警距离 * 下装手机号信息 * 历史查询-开始日期 * 历史查询-结束日期 * 程序累计启动次数 * 选择以后更新时程序累计启动次数 * 是否选择以后更新 ###5.2 SQLite(数据库) * 报警球信息—可查看,删除,编辑,添加 * 报警信息—接收短信的一类,自动添加,只可查看 * 发送短信—自动添加,只可查看 * 接收短信—自动添加,只可查看 ## 6 问题 ###6.1 短信拦截 * 如果Ballinfo内部监听器先执行,那么收到短信后,界面更新在数据库更新之前,界面更新将没有效果。 * 部分运营商短信前缀有+86标示,所以收到的短信只取后11位作为发送方号码。 * 如果报警球号码发送非正常短信,不拦截,正常显示,并不进入报警信息判定 * Android7.0后短信不能再被直接拦截。因为只能授权一个进程接收短信广播。 如果本APP接收了短信,那么就会造成系统不能接收短信。 如果只是提高优先级不能影响系统接收到短信。