閱讀前請點擊右上角“關注”,每天免費獲取Android知識解析及面試解答。Android架構解析,只做職場乾貨,完全免費分享!
前言
小編前面幾期文章分別給大家介紹了用代碼實現微笑抓拍、證件照DIY、拍照翻譯的功能開發(鏈接見文章末尾),本次小編給大家帶來的是用代碼一鍵實現銀行卡識別與綁定功能。
銀行卡識別的應用場景
介紹開發步驟前,我們先來談談銀行卡識別的具體應用場景,銀行APP、移動支付、繳費類APP、電商類APP或者其它帶支付功能的APP在使用過程中往往會遇到如下常見的幾個應用場景:
- 綁卡支付
常用於支付類APP,或者帶支付功能的APP,用來綁定信用卡、銀聯借記卡,提供在線支付功能。 - 轉賬匯款
常用於銀行或者支付類APP,用來給本行或者他行用戶進行轉賬。 - 實名認證、身份審核
比如社交類APP,通過銀行卡關聯的身份信息完成快速的實名認證、身份審核等操作。
不管是綁卡、轉賬匯款還是身份審核,涉及到銀行卡操作的都會遇到一個關鍵的步驟,錄入銀行卡信息,如銀行卡號、有效期等;由於銀行卡號碼往往較長,手工錄入很容易出錯,而且手工錄入卡號信息,操作繁瑣,使用體驗不佳;藉助HMS ML Kit 銀行卡專用識別能力,則可以輕鬆應對以上場景,快速、精準的錄入銀行卡信息,改善用戶使用體驗。
如何使用華為銀行卡識別服務
銀行卡識別服務可以將銀行卡信息通過視頻流方式輸入,得到圖像中銀行卡的卡號、有效期等重要文本信息。該服務配合身份證識別,可以為用戶提供實名認證、身份審核、卡號錄入等實用功能,降低輸入成本,為用戶提供更加友好的操作體驗。
銀行卡識別提供處理插件。開發者可以集成銀行卡識別插件,無需實現相機視頻流數據的處理,從而實現銀行卡識別能力的快速集成。
集成銀行卡識別服務關鍵流程
由於華為提供了銀行卡識別插件,開發者可以直接調用銀行卡插件,因此開發步驟更加簡單了,僅僅需要拉起界面獲取結果就可以完成卡號的識別。
開發實戰
1 開發準備
1.1 在項目級gradle裡添加華為maven倉
打開AndroidStudio項目級build.gradle文件,增量添加如下maven地址:
<code>buildscript
{repositories
{maven
{url
'http://developer.huawei.com/repo/'
} } }allprojects {repositories
{maven
{url
'http://developer.huawei.com/repo/'
} } } /<code>
1.2 在應用級的build.gradle裡面加上SDK依賴
<code>dependencies{ implementation'com.huawei.hms:ml-computer-vision-bcr:1.0.3.303'
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'
} /<code>
1.3 在AndroidManifest.xml文件裡面增量添加模型自動下載
要使應用程序能夠在用戶從華為應用市場安裝您的應用程序後,自動將最新的機器學習模型更新到用戶設備,請將以下語句添加到該應用程序的AndroidManifest.xml文件中:
<code>android:name="com.huawei.hms.ml.DEPENDENCY"
android
:value="bcr"
/>...
manifest
> /<code>
1.4 在AndroidManifest.xml文件裡面申請相機和存儲權限
<code><
uses-permission
android:name
="android.permission.CAMERA"
/><
uses-permission
android:name
="android.permission.WRITE_EXTERNAL_STORAGE"
/> /<code>
2 代碼開發關鍵步驟
2.1 創建識別結果回調函數
重載onSuccess, onCanceled, onFailure, onDenied四個方法;onSuccess 表示識別成功,MLBcrCaptureResult為識別返回結果,onCanceled 表示用戶取消,onFailure 表示識別失敗,onDenied 表示相機不可用等場景。
<code>private
MLBcrCapture.Callback callback =new
MLBcrCapture.Callback() {public
void
onSuccess
(MLBcrCaptureResult bankCardResult)
{ }public
void
onCanceled
()
{ }public
void
onFailure
(
int
retCode, Bitmap bitmap){ }public
void
onDenied
()
{ } }; /<code>
2.2 設置識別參數,調用識別器captureFrame接口進行識別,識別結果會通過步驟2.1的回調函數返回
<code>private
void
startCaptureActivity
(MLBcrCapture.Callback callback)
{ MLBcrCaptureConfig config =new
MLBcrCaptureConfig.Factory() .setOrientation(MLBcrCaptureConfig.ORIENTATION_AUTO) .create(); MLBcrCapture bankCapture = MLBcrCaptureFactory.getInstance().getBcrCapture(config); bankCapture.captureFrame(this
, callback); } /<code>
2.3 在檢測按鈕的回調中,調用步驟2.2中定義的方法,實現銀行卡識別
<code>public
void
onClick
(View v)
{switch
(v.getId()) {case
R.id.detect: startCaptureActivity(callback);break
;default
:break
; } } /<code>
3 Demo效果
給大家看下Demo效果: