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

ard.io开源的银行卡扫描的三方库真的是很好用啊。

首先需要在你的module的gradle的依赖文件中添加依赖

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

2 清单文件中加入如下Activity

<!-- Permission to vibrate - recommended, allows vibration feedback on scan -->
 <uses-permission android:name="android.permission.VIBRATE" />

 <!-- Permission to use camera - required -->
 <uses-permission android:name="android.permission.CAMERA" />

 <!-- Camera features - recommended -->
 <uses-feature android:name="android.hardware.camera" android:required="false" />
 <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
 <uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<activity
  android:name="io.card.payment.CardIOActivity"
  android:configChanges="keyboardHidden|orientation" />
<activity android:name="io.card.payment.DataEntryActivity" />

3 xml文件中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.example.dell.scanbankdemo.MainActivity">

 <Button
  android:id="@+id/btn_scan"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="扫描银行卡" />

 <TextView
  android:id="@+id/tv_card_number"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="银行卡号:"
  />
</LinearLayout>

全部代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 public static final int MY_SCAN_REQUEST_CODE = 10;

 private Button mScanBtn;
 private TextView mNumberTv;//银行卡号

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mScanBtn = findViewById(R.id.btn_scan);
  mScanBtn.setOnClickListener(this);
  mNumberTv = findViewById(R.id.tv_card_number);
 }

 @Override
 public void onClick(View v) {
  switch (v.getId()) {
   case R.id.btn_scan:
    Intent scanIntent = new Intent(this, CardIOActivity.class);

    // customize these values to suit your needs.
    scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, true); // default: false
    scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); // default: false
    scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); // default: false

    // MY_SCAN_REQUEST_CODE is arbitrary and is only used within this activity.
    startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE);

    break;
  }
 }

 @Override
 protected 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 = "银行卡号: " + scanResult.getRedactedCardNumber() + "\n"; //只显示尾号
    resultDisplayStr = "银行卡号: " + scanResult.getFormattedCardNumber() + "\n"; //显示银行卡号

    // Do something with the raw number, e.g.:
    // myService.setCardNumber( scanResult.cardNumber );

    if (scanResult.isExpiryValid()) {
     resultDisplayStr += "有效期:" + scanResult.expiryMonth + "/" + scanResult.expiryYear + "\n";
    }

    if (scanResult.cvv != null) {
     // Never log or display a CVV
     resultDisplayStr += "CVV has " + scanResult.cvv.length() + " digits.\n";
    }

    if (scanResult.postalCode != null) {
     resultDisplayStr += "Postal Code: " + scanResult.postalCode + "\n";
    }
   } else {
    resultDisplayStr = "Scan was canceled.";
   }
   mNumberTv.setText(resultDisplayStr);
   // do something with resultDisplayStr, maybe display it in a textView
   // resultTextView.setText(resultDisplayStr);
  }
 }
}

附上github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android实现银行卡号扫描识别功能

    现在有好多扫描识别银行卡号的SDK都是收费的,但是也有不收费的,但是有一定的问题,就是那种印刷的银行卡号扫描不出来,希望哪位大神指导原因给解释下,这个不收费的SDK就是card.io-Android-SDK,githubdi地址 使用方式很简单,更多介绍可以看GitHub 使用文档: 首先导入依赖:compile 'io.card:android-sdk:5.5.1' 然后在你需要调用拍照的地方加上一下: Intent scanIntent = new Intent(this, CardIOAc

  • Android根据输入银行卡号判断属于哪个银行

    一:一般都是先来效果图: 二:实现步骤: 1.xml布局实现,两个edittext就行了 <LinearLayout android:id="@+id/lin_yhkh" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_below="@+id/view" android:gravity="center_

  • android银行卡号验证算法详解

    现行 16 位银联卡现行卡号开头 6 位是 622126-622925 之间的,7 到 15 位是银行自定义的, 可能是发卡分行,发卡网点,发卡序号,第 16 位是校验码. 16 位卡号校验位采用 Luhm 校验方法计算: 1.将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2 2.将奇位乘积的个十位全部相加,再加上所有偶数位上的数字 3.将加法和加上校验位能被 10 整除. public class CheckIdCard { /** * 校验银行卡卡号 *

  • Android银行卡扫描获取银行卡号

    ard.io开源的银行卡扫描的三方库真的是很好用啊. 首先需要在你的module的gradle的依赖文件中添加依赖 compile 'io.card:android-sdk:5.5.1' 2 清单文件中加入如下Activity <!-- Permission to vibrate - recommended, allows vibration feedback on scan --> <uses-permission android:name="android.permissi

  • JS实现的获取银行卡号归属地及银行卡类型操作示例

    本文实例讲述了JS实现的获取银行卡号归属地及银行卡类型操作.分享给大家供大家参考,具体如下: 在做绑定银行卡,输入银行卡的时候,产品有这么一个需求,需要用户输入银行卡号的时候,显示对应的银行卡名称及简称.于是苦苦寻觅,终于找到了支付宝的开放API,银行卡校验接口 https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=6222005865412565805&cardBinCheck=true  ,直接放在浏览器url地址栏中

  • Android从图片获取二维码的方法

    之前的博客我记得讲过关于扫描二维码的内容,昨天,组长让我不仅可以扫描获取二维码,还可以通过图片获取里面的二维码.比如别人拍了一张二维码的照片,发送给你,app应该可以获取图片的二维码. 自己在网上查了资料,发现其实也很简单,用ZXing jar包里的获取图片二维码的QRCodeReader就基本可以了.不过大部分的内容,我自己也不明白,大家如果有兴趣,可以自己去查找资料. 1.点击按钮后,跳转到相册,选择有二维码的图片,返回到解析二维码的界面.这时通过返回的URI获取图片的路径. case CH

  • Android Framework层获取及处理按键事件流程

    目录 前言 一.EventHub的getEvents() 二.InputReader的processEventsLocked() 前言 Android系统的输入事件是由InputManagerService服务来监控的,该系统服务在SystemServer的startOtherServices()中初始化.初始化的过程中会在Native层创建InputReaderThread和InputDispatcherThread两个线程,InputReaderThread的主要工作是读取输入事件,然后将输

  • Android实现Service获取当前位置(GPS+基站)的方法

    本文实例讲述了Android实现Service获取当前位置(GPS+基站)的方法.分享给大家供大家参考.具体如下: 需求详情: 1).Service中每隔1秒执行一次定位操作(GPS+基站) 2).定位的结果实时显示在界面上(要求得到经度.纬度) 技术支持: 1).获取经纬度 通过GPS+基站获取经纬度,先通过GPS来获取,如果为空改用基站进行获取–>GPS+基站(基站获取支持联通.电信.移动). 2).实时获取经纬度 为了达到实时获取经纬度,需在后台启动获取经纬度的Service,然后把经纬度

  • Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法

    本文实例讲述了Android编程实现获取标题栏.状态栏的高度.屏幕大小及模拟Home键的方法.分享给大家供大家参考,具体如下: 1. 获取标题栏高度: /** * 获取标题栏的高度 * * @param activity * @return */ public int getTitleHeight(Activity activity) { Rect rect = new Rect(); Window window = activity.getWindow(); window.getDecorVi

  • Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

    本文实例讲述了Android编程实现获取系统内存.CPU使用率及状态栏高度的方法.分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReade

  • Android编程实现获取图片资源的四种方法

    本文实例讲述了Android编程实现获取图片资源的四种方法.分享给大家供大家参考,具体如下: 1. 图片放在sdcard中: 复制代码 代码如下: Bitmap imageBitmap = BitmapFactory.decodeFile(path)//path 是图片的路径,跟目录是/sdcard 2. 图片在项目的res文件夹下面 //得到application对象 ApplicationInfo appInfo = getApplicationInfo(); //得到该图片的id(name

  • Android录音时获取分贝值的方法代码实例

    参考文章Android中实时获取音量分贝值详解:http://www.jb51.net/article/64806.htm public class MediaRecorderDemo { private final String TAG = "MediaRecord"; private MediaRecorder mMediaRecorder; public static final int MAX_LENGTH = 1000 * 60 * 10;// 最大录音时长1000*60*1

  • php生成Android客户端扫描可登录的二维码

    本文实例为大家分享了php网页生成二维码,Android客户端扫描登录的具体代码,供大家参考,具体内容如下 使用了Github上具有扫码功能的ZXing开源库,使用了通过随机数生成二维码图片网络API,整个过程经过三步: 1.PHP网页生成二维码,相应随机数存储到数据库中: 2.Android客户端扫码,携带username保存至随机数对应的位置: 3.每隔一段时间,PHP通过Ajax轮询数据库,判断是否为空,不为空则跳转网页. 具体代码: 1. 通过随机数生成二维码图片,并执行轮询操作命令的主

随机推荐