问题来源
代码不变,使用相同磁卡签到时发现签到不成功,弹出提示:卡号错误,未查询到授权或者未刷卡,请重新刷卡
问题分析
- 首先看数据库中是否存在正确授权信息,发现没有问题
- 再看读卡器读出卡号有没有问题,发现没有问题
- 最后看从数据库拿出授权信息和卡号进行比对的代码,锁定在
new Date().getTime()代码上
问题根源
new Date().getTime()
是获得系统时间的代码- 在模拟器上运行时,和与安卓机连接时,得到的系统时间是不一样的
- 模拟器得到的是13位,单位为毫秒,没有问题,因为和电脑一致,电脑又是网络时间,所以没有问题。
- 而安卓机发现时间和网络时间相差较大,因此需要设定安卓机的系统时间
解决问题
- 翻阅安卓机使用手册,可以设置里设定日期和时间,而且断电之后时间仍可同步更新(确保板子上已经安装了纽扣电池)。
- 注意取消勾选”自动确定日期和时间“以及“自动确定时区”两部分的勾选。
- 安卓机是利用RTC进行同步时间的,所以要保证RTC一直在运行。