Android | 教你如何用程式碼一鍵實現銀行卡綁定

前言

  小編前面幾期文章分別給大家介紹了用程式碼實現微笑抓拍、證件照DIY、拍照翻譯的功能開發(鏈接見文章末尾),本次小編給大家帶來的是用程式碼一鍵實現銀行卡識別與綁定功能。
在這裡插入圖片描述


銀行卡識別的應用場景

  介紹開發步驟前,我們先來談談銀行卡識別的具體應用場景,銀行APP、移動支付、繳費類APP、電商類APP或者其它帶支付功能的APP在使用過程中往往會遇到如下常見的幾個應用場景:

  • 綁卡支付
      常用於支付類APP,或者帶支付功能的APP,用來綁定信用卡、銀聯借記卡,提供在線支付功能。
  • 轉賬匯款
      常用於銀行或者支付類APP,用來給本行或者他行用戶進行轉賬。
  • 實名認證、身份審核
      比如社交類APP,通過銀行卡關聯的身份資訊完成快速的實名認證、身份審核等操作。
      不管是綁卡、轉賬匯款還是身份審核,涉及到銀行卡操作的都會遇到一個關鍵的步驟,錄入銀行卡資訊,如銀行卡號、有效期等;由於銀行卡號碼往往較長,手工錄入很容易出錯,而且手工錄入卡號資訊,操作繁瑣,使用體驗不佳;藉助HMS ML Kit 銀行卡專用識別能力,則可以輕鬆應對以上場景,快速、精準的錄入銀行卡資訊,改善用戶使用體驗。

如何使用華為銀行卡識別服務

  銀行卡識別服務可以將銀行卡資訊通過影片流方式輸入,得到影像中銀行卡的卡號、有效期等重要文本資訊。該服務配合身份證識別,可以為用戶提供實名認證、身份審核、卡號錄入等實用功能,降低輸入成本,為用戶提供更加友好的操作體驗。
在這裡插入圖片描述
  銀行卡識別提供處理插件。開發者可以集成銀行卡識別插件,無需實現相機影片流數據的處理,從而實現銀行卡識別能力的快速集成。


集成銀行卡識別服務關鍵流程

在這裡插入圖片描述
  由於華為提供了銀行卡識別插件,開發者可以直接調用銀行卡插件,因此開發步驟更加簡單了,僅僅需要拉起介面獲取結果就可以完成卡號的識別。


開發實戰

1 開發準備

1.1 在項目級gradle里添加華為maven倉

  打開AndroidStudio項目級build.gradle文件,增量添加如下maven地址:

buildscript {      repositories {          maven {url 'http://developer.huawei.com/repo/'}      }    }allprojects {      repositories {          maven { url 'http://developer.huawei.com/repo/'}      }    }  

1.2 在應用級的build.gradle裡面加上SDK依賴

dependencies{    // 引入基礎SDK    implementation 'com.huawei.hms:ml-computer-vision-bcr:1.0.3.303'    // 引入銀行卡識別plugin包    implementation 'com.huawei.hms:ml-computer-card-bcr-plugin:1.0.3.300'    // 引入銀行卡識別模型包    implementation 'com.huawei.hms:ml-computer-card-bcr-model:1.0.3.300'    }  

1.3 在AndroidManifest.xml文件裡面增量添加模型自動下載

  要使應用程式能夠在用戶從華為應用市場安裝您的應用程式後,自動將最新的機器學習模型更新到用戶設備,請將以下語句添加到該應用程式的AndroidManifest.xml文件中:

<manifest     ...     <meta-data         android:name="com.huawei.hms.ml.DEPENDENCY"         android:value= "bcr"/>         <!--If multiple models are required,set the parameter as follows:         android:value="object,ocr,face,label,icr,bcr,imgseg"-->     ... </manifest>  

1.4 在AndroidManifest.xml文件裡面申請相機和存儲許可權

<!--相機許可權--> <uses-permission android:name="android.permission.CAMERA" />  <!--使用存儲許可權--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

2 程式碼開發關鍵步驟

2.1 創建識別結果回調函數

  重載onSuccess, onCanceled, onFailure, onDenied四個方法;onSuccess 表示識別成功,MLBcrCaptureResult為識別返回結果,onCanceled 表示用戶取消,onFailure 表示識別失敗,onDenied 表示相機不可用等場景。

private MLBcrCapture.Callback callback = new MLBcrCapture.Callback() {      @Override      public void onSuccess(MLBcrCaptureResult bankCardResult){          // 識別成功處理。      }      @Override      public void onCanceled(){          // 用戶取消處理。      }      // 識別不到任何文字資訊或識別過程發生系統異常的回調方法。      // retCode:錯誤碼。      // bitmap:檢測失敗的卡證圖片。      @Override      public void onFailure(int retCode, Bitmap bitmap){          // 識別異常處理。      }      @Override      public void onDenied(){          // 相機不支援等場景處理。      }   };  

2.2 設置識別參數,調用識別器captureFrame介面進行識別,識別結果會通過步驟2.1的回調函數返回

private void startCaptureActivity(MLBcrCapture.Callback callback) {      MLBcrCaptureConfig config = new MLBcrCaptureConfig.Factory()           // 設置識別介面橫豎屏,支援三種模式:          // MLBcrCaptureConfig.ORIENTATION_AUTO: 自適應模式,由物理感應器決定顯示方向。          // MLBcrCaptureConfig.ORIENTATION_LANDSCAPE: 橫屏模式。          // MLBcrCaptureConfig.ORIENTATION_PORTRAIT: 豎屏模式。          .setOrientation(MLBcrCaptureConfig.ORIENTATION_AUTO)          .create();      MLBcrCapture bankCapture = MLBcrCaptureFactory.getInstance().getBcrCapture(config);      bankCapture.captureFrame(this, callback); }  

2.3 在檢測按鈕的回調中,調用步驟2.2中定義的方法,實現銀行卡識別

@Override  public void onClick(View v) {      switch (v.getId()) {          // 檢測按鈕。          case R.id.detect:              startCaptureActivity(callback);              break;          default:              break;      } }  

3 Demo效果

  給大家看下Demo效果:
在這裡插入圖片描述


github源碼

  源碼已經上傳github,大家也可以在github上一起完善該功能。
  github源碼地址:https://github.com/HMS-MLKit/HUAWEI-HMS-MLKit-Sample

更詳細的開發指南參考華為開發者聯盟官網
華為開發者聯盟機器學習服務開發指南


往期鏈接:Android | 教你如何用程式碼開發一個拍照翻譯小程式
內容來源:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201217390745110144&fid=18
原作者:AI_talking