การเขียนโค้ด Android เพื่ออ่านบัตรประชาชน ผ่าน Smart Card Reader
สำหรับองค์กรหรือผู้พัฒนาระบบที่ต้องการเชื่อมต่อเครื่องอ่านบัตรสมาร์ทการ์ดกับอุปกรณ์ Android สามารถเริ่มต้นได้ด้วย Android USB Host API เพื่อสื่อสารกับตัวเครื่องอ่าน และใช้ APDU Commands ในการรับส่งข้อมูลกับบัตรประชาชน โดยบทความนี้สรุปแนวทางตั้งค่าพื้นฐาน พร้อมตัวอย่างโค้ดเพื่อให้เห็นภาพการพัฒนาได้ชัดเจนยิ่งขึ้น
ภาพรวมการทำงาน
แนวทางนี้เหมาะสำหรับงานพัฒนาแอป Android ที่ต้องการอ่านข้อมูลจากบัตรประชาชนผ่านเครื่องอ่าน Smart Card Reader แบบ USB โดยระบบจะเริ่มจากการเปิดสิทธิ์การเชื่อมต่ออุปกรณ์, ตรวจสอบอุปกรณ์ที่ต่อเข้ามา, เปิดการเชื่อมต่อกับพอร์ต USB และส่งชุดคำสั่ง APDU ไปยังบัตรผ่านเครื่องอ่าน
โครงสร้างนี้สามารถนำไปต่อยอดกับระบบลงทะเบียน, ยืนยันตัวตน, ระบบบริการหน้าจุดเคาน์เตอร์ หรือระบบเฉพาะทางขององค์กรที่ต้องการดึงข้อมูลจากบัตรประชาชนเข้าสู่แอปพลิเคชัน Android
องค์ประกอบสำคัญ
ขั้นตอนการตั้งค่าและตัวอย่างโค้ด
เพิ่ม Permission ใน AndroidManifest.xml
ขั้นตอนแรกคือกำหนดให้แอปรองรับการเชื่อมต่ออุปกรณ์ USB และระบุ meta-data สำหรับการตรวจจับเครื่องอ่านที่เชื่อมต่อเข้ากับอุปกรณ์ Android
สร้างไฟล์ device_filter.xml
ไฟล์นี้ใช้สำหรับกำหนด Vendor ID และ Product ID ของเครื่องอ่าน Smart Card Reader ที่ต้องการให้ระบบรู้จัก โดยควรแก้ไขค่าให้ตรงกับรุ่นของอุปกรณ์ที่ใช้งานจริง
สร้างคลาสเชื่อมต่อ Smart Card Reader
ตัวอย่างด้านล่างเป็นโค้ด Java สำหรับเปิดการเชื่อมต่อกับอุปกรณ์ USB, ตรวจจับ Endpoint แบบ Bulk Transfer และใช้สำหรับรับส่งข้อมูลกับเครื่องอ่านบัตร
เรียกใช้งานใน Activity
เมื่อค้นหาอุปกรณ์ USB จาก usbManager.getDeviceList() แล้ว สามารถสร้างอ็อบเจ็กต์ของคลาส SmartCardReader และส่งคำสั่ง APDU เพื่อเลือกไฟล์หรืออ่านข้อมูลจากบัตรได้ทันที
ตัวอย่าง APDU Command ที่ใช้บ่อย
Select File
ใช้สำหรับเลือกไฟล์หรือแอปพลิเคชันภายในสมาร์ทการ์ดก่อนเริ่มอ่านข้อมูล
00 A4 00 00 02 11 11Read Data
ใช้สำหรับอ่านข้อมูลจากตำแหน่งที่กำหนด โดยค่า 20 หมายถึงจำนวนไบต์ที่ต้องการอ่าน
00 B0 00 00 20ข้อควรทราบก่อนใช้งานจริง
- ควรตรวจสอบ Vendor ID และ Product ID ของเครื่องอ่านให้ตรงกับอุปกรณ์ที่ใช้งาน
- ควรทดสอบการเชื่อมต่อกับเครื่องอ่านจริงก่อนนำไปใช้งานในระบบขององค์กร
- การอ่านข้อมูลจากบัตรจำเป็นต้องใช้ชุดคำสั่ง APDU ที่เหมาะสมกับโครงสร้างข้อมูลของบัตร
- ในงานพัฒนาเชิงองค์กร ควรมีการจัดการสิทธิ์, การตรวจสอบสถานะอุปกรณ์ และการจัดการข้อผิดพลาดเพิ่มเติม
กำลังมองหา Smart Card Reader สำหรับพัฒนาโปรแกรม?
The Compete พร้อมให้คำแนะนำทั้งด้านเครื่องอ่านบัตรสมาร์ทการ์ด, การเลือกอุปกรณ์ให้เหมาะกับระบบงาน และการประยุกต์ใช้งานร่วมกับซอฟต์แวร์ขององค์กร สำหรับงานอ่านบัตรประชาชน, งานยืนยันตัวตน และงานพัฒนาแอปพลิเคชันเฉพาะทาง