finds.dev← search

// the find

18601949127/DiDiCallCar

★ 1,158 · Java · updated Oct 2019

这是我自己做的一个类似滴滴打车的Android出行项目,主要针对滴滴等出行平台一直饱受质疑的“人车不符”问题,以及当前越发火热的或计划和出海战略,给出行项目增加了下面几个功能: 1. RFID识别验证功能:在司机证件或者车内识别硬件嵌入RFID识别芯片,乘客使用手机读取到芯片信息,并且通过网络发送到出行平台数据库进行验证(我用JNI加了一个C语言的MD5加密算法对识别到的信息进行了加密)。如果不是合规的“人”或“车”,则不能完成订单并向平台或监管单位汇报当前位置。(为了方便读者测试,可以使用手机读取任何一个加密或非加密RFID芯片,比如银行卡、公交卡等,我在代码中的验证前阶段把芯片信息都换成我自己的司机信息,确保读者测试时可以收到服务器的回复) 2. 海外版功能:点击切换当前语言。 3. 司机证件号码识别功能:读取司机证件上的证件号码,也可以用来与出行平台数据库的接单司机信息进行。I complete this whole project on my own . Including Android application programming,web server ( Apache + PHP + MySQL), and UI. 1.Map route planing。You can use mobile phone choose pick up & destination address,application provide address name hint and draw optimized route for user , then call car for you. 2.RFID authentication function:User can use application to scan driver license or other RFID hardware, then use NDK MD5 algorithm encrypt RFID number, and send it to Web Server Database, check with driver information and authenticate ID number , if ID number coherent with driver info , send back driver information to User and continue call car order . record user location and alert if ID not coherent. 3.Driver License Number Recognition : Application can recognize driver license digit number ,and also can send to web server for authentication & feed back result to user.

A solo-developer Android ride-hailing prototype built to address the driver identity fraud problem on platforms like Didi. It implements NFC/RFID chip scanning to verify driver credentials against a backend database, OCR-based license number recognition using OpenCV, and Baidu Maps route planning — all wired into a single app. Aimed at Android developers who want a worked example of NFC + NDK + OpenCV integration in a real-world feature context.

The NFC/RFID flow is genuinely complete end-to-end: chip scan → NDK MD5 encryption → OkHttp3 POST → server validation → result display, not just a stub. The OCR pipeline in DigitImageProcessor uses real computer vision techniques (Scharr gradient, binary threshold, morphological open operations) rather than just calling a cloud API. JNI integration is done correctly — the native-lib.cpp bridge follows the Java_packagename_classname_method naming convention and the CMakeLists is present. Code is organized into clear modules (DriverLicenseNFC, DriverLicenseRecognition, utils) rather than dumped into MainActivity.

Last pushed October 2019, depends on OpenCV 3.2 and Baidu Maps SDK 5.3 — both years behind; the Baidu Maps SDK in particular requires an API key that points to a China-only service, making this non-functional outside China without significant refactoring. The OCR number extraction in findCardNumBlock uses hardcoded pixel offsets (numberROI.x = 3 * roi.x + 120, width = binary.cols() - roi.x - 390) calibrated to one specific license format — it will silently produce wrong crops on any other card layout. The server backend is a personal Tencent Cloud VM running PHP/MySQL with no source code published, so the validation and analytics features are completely opaque and presumably gone. MD5 is used as a security primitive for RFID data integrity — that's not a security guarantee, it's just obfuscation.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →