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

 更新时间:2018年09月06日 11:35:46   作者:零下十五度w  
这篇文章主要为大家详细介绍了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地址

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

相关文章

  • Android 情景模式的设置代码

    Android 情景模式的设置代码

    Android 情景模式的设置代码,需要的朋友可以参考一下
    2013-05-05
  • Android自定义Toast之WindowManager

    Android自定义Toast之WindowManager

    这篇文章主要为大家详细介绍了Android自定义Toast之WindowManager的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android+Flutter实现彩虹图案的绘制

    Android+Flutter实现彩虹图案的绘制

    彩虹,是气象中的一种光学现象,当太阳光照射到半空中的水滴,光线被折射及反射,在天空上形成拱形的七彩光谱。接下来,我们就自己手动绘制一下彩虹图案吧
    2022-11-11
  • Android选择与上传图片之PictureSelector教程

    Android选择与上传图片之PictureSelector教程

    这篇文章主要介绍了在Android中对于图片的选择与上传方法,本文介绍了PictureSelector的相关使用教程,学习Android的同学进来看看吧
    2021-08-08
  • Android基于socket实现的简单C/S聊天通信功能

    Android基于socket实现的简单C/S聊天通信功能

    这篇文章主要介绍了Android基于socket实现的简单C/S聊天通信功能,结合实例形式分析了Android使用socket实现客服端与服务器端数据的发送与接收处理技巧,需要的朋友可以参考下
    2016-10-10
  • Android so的热升级尝试

    Android so的热升级尝试

    这篇文章主要介绍了Android so的热升级尝试的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • Android Studio绑定下拉框数据详解

    Android Studio绑定下拉框数据详解

    这篇文章主要为大家详细介绍了Android Studio绑定下拉框数据,Android Studio绑定网络JSON数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android仿微信顶/底部菜单栏效果

    Android仿微信顶/底部菜单栏效果

    这篇文章主要介绍了Android仿微信底部菜单栏和顶部菜单栏实现效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 详解Android使用Handler造成内存泄露的分析及解决方法

    详解Android使用Handler造成内存泄露的分析及解决方法

    这篇文章主要介绍了详解Android使用Handler造成内存泄露的分析及解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Android串口操作方法实例

    Android串口操作方法实例

    这篇文章主要介绍了Android串口操作方法实例,本文共分5个步骤讲解了Android串口操作方法,并给出代码实例,需要的朋友可以参考下
    2015-04-04

最新评论