滴滴出行打车APP-增加RFID认证、海外版、司机证件号码识别功能

这是一个仿制的滴滴出行Android应用,着重解决了“人车不符”问题,增加了RFID识别验证、海外版及司机证件号码OCR识别功能。通过RFID芯片验证司机身份和车辆信息,利用OpenCV进行证件号码识别,并提供多语言支持。项目源码在GitHub公开,鼓励读者提出更多实用功能。
摘要由CSDN通过智能技术生成

本文较长,阅读大概十五分钟


来自@谭妥的投稿


前言

这是我自己做的一个仿滴滴打车的Android出行项目,主要针对滴滴等出行平台一直饱受质疑的“人车不符”问题,以及当前越发火热的或计划和出海战略,给出行项目增加了下面几个功能:

 

  • 1.RFID识别验证功能:在司机证件或者车内识别硬件嵌入RFID识别芯片,乘客使用手机读取到芯片信息,并且通过网络发送到出行平台数据库进行验证(我用JNI加了一个C语言的MD5加密算法对识别到的信息进行了加密)。如果不是合规的“人”或“车”,则不能完成订单并向平台或监管单位汇报当前位置。(为了方便读者测试,可以使用手机读取任何一个加密或非加密RFID芯片,比如银行卡、公交卡等,我在代码中的验证前阶段把芯片信息都换成我自己的司机信息,确保读者测试时可以收到服务器的回复)

  • 2. 海外版功能:点击切换当前语言。

  • 3. 司机证件号码识别功能:读取司机证件上的证件号码,也可以用来与出行平台数据库的接单司机信息进行。


 

项目源码地址:https://github.com/18601949127 

 

项目代码都是一行一行自己敲的,在多部手机上调试过确保各项功能能够顺畅运行。在Git源码中保留了所有的手机CPU指令集架构,保证在所有手机上能够运行成功。觉得包太大的同学可以自己把不需要的  .so 指令集删掉,主要是做识别的 OpenCV4Android.so 包比较大,其次是百度地图的包。

 

读者如果想到滴滴出行或者其他平台比较实用的功能可以留言或者私信本公众号联系原作者,原作者会抽时间把好的功能继续添加到项目里。

 

本篇先整体作一个项目功能概述,后续会对其中的各个模块做详细的介绍。


开发环境

  • 1.Android端:AndroidStudio版本3.4,百度地图LBS版本5.3 , OpenCV4Android 版本3.2

  • 2.服务器端:  Apache + PHP + MySQL 用的是我自己租的腾讯云主机做服务器,会一直开放出这个项目的接口,接受并处理读者发来的测试请求。

主界面概览

      640?wx_fmt=jpeg      

界面最上面TitleBar 的位置是主要的功能区,除了中间的醒目logo,两侧分布主要功能选项,最左边的SlidingMenu提供侧滑菜单,给乘客个人信息和软件设置提供入口,右边的证件标志按钮用于导向司机证件号码识别功能,再右边的英语标志按钮是国际化语言切换,最右边的无线标志是RFID识别认证功能的入口。

 

主界面的中间部分是地图区域,可以在上边选择不同交通工具,用于展示乘客所在位置,附近车辆或者POI热点,以及路径规划。

 

主界面的下方可以提供上划菜单,主要用于上车和目的地地址关键字输入,以及安全提示信息或者广告的入口。

 

地图区域我使用的是百度地图LBS 版本5.3,海外的话考虑地信息数据多少、性能、包大小、数据源等多方面因素推荐使用 Nutiteq,是一个专心做移动端LBS的SDK。 感兴趣的读者可以看下面的文章:

 

https://blog.csdn.net/weixin_37734988/article/details/92852349

 

https://carto.com/developers/mobile-sdk/guides/getting-started/#android-app

 

上面这个前几篇我会抽时间翻译出来给大家看下。


项目文件结构

       640?wx_fmt=jpeg

这里介绍一下项目文件结构,方便读者阅读代码:

 

包名:com.tantuo.didicar


  • Activity 文件夹:有的Activity 相对独立,并不属于某个功能模块,可以放到这个文件夹。 

  • adapter 文件夹:相对复杂一点的adapter会从类文件中取出单独保存到 adapter文件夹,比如左侧侧滑菜单中 recycler view的adapter。简单一点的adapter还是会保存在调用的类中。

  • Bean 文件夹: 存放Entity 实体类,比如司机的相关信息会包装成一个DriverBean,每个司机都是一个类对象,使用Gson 传递很方便,用的时候get,set 就可以。

  • DriverLicenseNFC 文件夹:RFID识别验证模块,乘客使用这个功能模块验证司机身份或者车辆信息。

  • DriverLicenseRecognition 文件夹:司机证件号码OCR识别的功能模块。

  • splash 文件夹:app 初始化和引导界面。

  • TabFragment:主界面上方的滑动主题条用来切换交通工具或者服务项目(Tab),不同的交通工具或者服务项目代码都保存在TabFragment 文件夹里。

  • utils 文件夹: 用来保存项目用到的各种工具类,比如DriverRouteOverlay 用来在地图上渲染规划出来的驾车路线,MD5JniUtils 用NDK调用MD5加密算法,保护RFID芯片信息,NfcUtils 用来管理手机的NFC功能,POIOverlay 用来在地图上渲染周围兴趣点(POI)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值