不得不说card.io开源的银行卡扫描的三方库真的是很好用啊,非常稀饭,使用简单,而且给你提供的API很多,满足大部分的需要(反正是满足我的各种需求了)

首先上一个效果图

1 对准银行卡的四角就能够扫描出来银行卡信息,你集成的话首先需要在你的module的gradle的依赖文件中添加一句话,最好使用最新的版本号(后面就是最新的版本号的意思,因为人家辛辛苦苦修复了问题,不用多不合适)

compile 'io.card:android-sdk:latestversioncode'

2 清单文件中加入如下Activity

<activityandroid:name="io.card.payment.CardIOActivity"android:configChanges="keyboardHidden|orientation"/><activity android:name="io.card.payment.DataEntryActivity"/>

3 xml文件中

<Buttonandroid:id="@+id/btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="onScanPress"android:text="银行卡识别"/><TextViewandroid:id="@+id/card_tv"android:layout_width="368dp"android:layout_height="wrap_content"android:gravity="center"android:text="银行卡号"/>

4 代码中

这里面暴露了很多的API,大致查了一下有二十多个,比如是否隐藏LOGO标志,是否需要银行卡有效期的信息,扫描线的颜色(默认是Color.GREEN),是否需要CVV信息,邮政编码等,下面对其介绍一下

        scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, false); // default: false不需要     是否需要失效日期等信息scanIntent.putExtra(CardIOActivity.EXTRA_HIDE_CARDIO_LOGO, false); // default: false               是否隐藏LOGO标记scanIntent.putExtra(CardIOActivity.EXTRA_USE_CARDIO_LOGO, true); // default: false               是否使用card.io LOGOscanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); // default: false不需要     邮政编码scanIntent.putExtra(CardIOActivity.EXTRA_GUIDE_COLOR, Color.GREEN); // default: Color.GREEN      扫描线的颜色scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); // default: false不需要              CVV信息

全部代码如下

/*** 银行卡识别*/
public class CardIdentifyActivity extends BaseActivity {public static final int MY_SCAN_REQUEST_CODE = 10;public TextView mTextView;@Overrideprotected int getLayoutId() {return R.layout.activity_card_identify;}@Overrideprotected void initView() {mTextView = (TextView) findViewById(R.id.card_tv);}@Overrideprotected void afterInitView() {super.afterInitView();EventBus.getDefault().register(this);}@Subscribepublic void onEventMainThread(UpdateCardNumberEvent event) {if (!TextUtils.isEmpty(event.getNumber())) {mTextView.setText(event.getNumber());}}public void onScanPress(View view) {Intent scanIntent = new Intent(this, CardIOActivity.class);// customize these values to suit your needs.scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, false); // default: false不需要     是否需要失效日期等信息scanIntent.putExtra(CardIOActivity.EXTRA_HIDE_CARDIO_LOGO, false); // default: false               是否隐藏LOGO标记scanIntent.putExtra(CardIOActivity.EXTRA_USE_CARDIO_LOGO, true); // default: false               是否使用card.io LOGOscanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); // default: false不需要     邮政编码scanIntent.putExtra(CardIOActivity.EXTRA_GUIDE_COLOR, Color.GREEN); // default: Color.GREEN      扫描线的颜色scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); // default: false不需要              CVV信息// MY_SCAN_REQUEST_CODE is arbitrary and is only used within this activity.startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == MY_SCAN_REQUEST_CODE) {String resultDisplayStr;if (data != null && data.hasExtra(CardIOActivity.EXTRA_SCAN_RESULT)) {CreditCard scanResult = data.getParcelableExtra(CardIOActivity.EXTRA_SCAN_RESULT);// Never log a raw card number. Avoid displaying it, but if necessary use getFormattedCardNumber()resultDisplayStr = "Card Number: " + scanResult.cardNumber + "\n";Log.i("aaa", "银行卡号:" + resultDisplayStr);EventBus.getDefault().post(new UpdateCardNumberEvent(resultDisplayStr));// Do something with the raw number, e.g.:// myService.setCardNumber( scanResult.cardNumber );if (scanResult.isExpiryValid()) {resultDisplayStr += "Expiration Date: " + scanResult.expiryMonth + "/" + scanResult.expiryYear + "\n";Log.i("aaa", "银行卡号有效期:" + resultDisplayStr);}if (scanResult.cvv != null) {// Never log or display a CVVresultDisplayStr += "CVV has " + scanResult.cvv.length() + " digits.\n";}if (scanResult.postalCode != null) {resultDisplayStr += "Postal Code: " + scanResult.postalCode + "\n";}} else {resultDisplayStr = "Scan was canceled.";}// do something with resultDisplayStr, maybe display it in a textView// resultTextView.setText(resultDisplayStr);}// else handle other activity results}@Overrideprotected void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);}
}

最后扫描结果如下

最后附上github地址

https://github.com/card-io/card.io-Android-SDK

安卓扫描银行卡获取卡号信息相关推荐

  1. Android 银行卡扫描识别获取卡号

    用card.io 实现的银行卡扫描,免费 Card.io是让手机摄像头获取信用卡的信息,中间利用了OCR(光学字符识别)的扫描技术返回结果,它还推出了SDK(软件开发包),让开发者们可以把card.i ...

  2. C# 服务端(API)连接 安卓设备 读取 IC卡(仅读取ID),RFID卡(包含ID卡),获取卡号(10进制)

    处理安卓设备NFC读卡 C#WebAPI做服务端 APP使用 uni-app开发, 走了不少弯路,这里记录一下 获取 卡10进制ID的方法 商米POS.安卓移动设备(手机)通过NFC功能 读取 IC卡 ...

  3. 扫描NFC卡,获取卡号存储到本地并可以以Excel形式导出数据

    这是一个使用支持NFC的手机扫描NFC射频卡获取到卡号,使用greenDao数据库做本地存储,扫完之后可以将数据以Excel表格形式导出查看数据.不是什么新技术,内容比较简单,这里就主要贴源码了,没有 ...

  4. android获取卡号号码,Android银行卡扫描获取银行卡号

    ard.io开源的银行卡扫描的三方库真的是很好用啊. 首先需要在你的module的gradle的依赖文件中添加依赖 compile 'io.card:android-sdk:5.5.1' 2 清单文件 ...

  5. zencart1.55stripe信用卡内嵌支付获取卡号

    如何 实现再zencart1.55版本 checkout_payment页面一页提交支付功能 下载zencart模板安装,安装教程省略 再目录下includes/modules/payment编写好自 ...

  6. js根据输入的银行卡获取对应银行信息

    引入 npm install bankcardinfo 案例 <view class="inputBorStyle"><text class="inpu ...

  7. Android扫描银行卡获取银行卡号

    card.io开源的银行卡扫描的三方库真的是很好用啊. 首先需要在你的module的gradle的依赖文件中添加依赖 compile 'io.card:android-sdk:5.5.1' 2 清单文 ...

  8. Android 串口通讯 获取卡号

    首先你的andoridstudio 需要配置ndk 环境 然后在去下载谷歌的的demo 下载地址 把这些直接复制到代码中 一般  jni C语言调用java 是指定包名调用的 所有android_se ...

  9. android 查找所有的串口,Android 串口通讯 获取卡号

    首先你的andoridstudio 需要配置ndk 环境 然后在去下载谷歌的的demo 下载地址 把这些直接复制到代码中 一般  jni C语言调用java 是指定包名调用的 所有android_se ...

最新文章

  1. 独家 | 数据科学入门指南:新手如何步入数据科学领域?
  2. 沉浸式5G实景、AI+AR体验、机器人互动|5G+数智化展馆广州开幕
  3. JAVA解析各种编码密钥对(DER、PEM、openssh公钥)
  4. 数说真相|46公里内,Uber更划算
  5. Java并发程序设计(十一)设计模式与并发之生产者-消费者模式
  6. python多线程写日志_python 应用logging多线程写多个log文件
  7. python用for循环求10的因数_python for循环练习(初级)
  8. SSL4MIS:医学图像半监督分割的Baselines
  9. GIS和RS里面的一些小问题
  10. PHP脚本调用systemctl,centos7之systemctl
  11. 程序相关概念及OS Linux发行版
  12. 一元线性回归(R语言)
  13. java服务安装(三):使用appassembler
  14. 运维简历怎么写项目描述_应届生没有工作经验该怎么写简历?
  15. 高等数学学习笔记——第六十一讲——空间曲线的弧长与曲率
  16. C++基于ATM的个人银行账户管理系统
  17. 西农大 Java 实验四 第三题
  18. Prompt-Learning for Fine-Grained Entity Typing
  19. 中国联通(广东省分公司)研发技术初面
  20. RFID标签的编码标准

热门文章

  1. pandas删除包含特定字符串所在的行
  2. 扇贝python编程课_扇贝编程app下载-扇贝编程手机版python「附如何设置自由职业」 - 超好玩...
  3. Homekit智能家居DIY一WIFI智能插座
  4. Latex 偏导符号 ∂
  5. 计算机应用基础素材,计算机应用基础(Windows XP+Office 2003)、素材和习题答案-王向慧 计算机应用基础...
  6. 单应性矩阵的理解及求解3
  7. 如何设置ul中li的行距
  8. 关于zip包解压之后文件打开出现文件损坏的问题
  9. DELL 电脑 ubuntu20.04系统安装(最新最简版)
  10. CometOJ国庆欢乐赛 C两排房子 二分 D1 二分贪心 E贪心特判