




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、Android平臺名片識別開發(fā)手冊文檔版本:起草時間:2015年10月地址:北京市海淀區(qū)北四環(huán)西路9號銀谷大廈16層1609室電話:(010)62800286/62800250網(wǎng)址:文檔修改記錄:日期修改說明變更人審核人2015-10初稿張志朋2016-01追加掃描功能集成薛尚2016-01優(yōu)化開發(fā)手冊黃震2016-06更改識別動畫鄒旭黃 17目錄1 演示程序安裝與激活21.1 安裝21.2 Android版本21.3 激活方式介紹22 拍攝注意事項32.1 一般要求32.2 對拍攝圖像的要求33 接口概述與集成說明34 調(diào)用識別Activity44.1 識別參數(shù)說明44.2 識
2、別返回值說明54.3示例代碼64.3.1識別調(diào)用代碼64.3.2接收返回值代碼85、序列號在線激活方式集成步驟95.1 將assets文件夾、lib文件夾、libs文件夾全部按照下圖的目錄結(jié)構(gòu)復制到集成的項目中:95.3 授權(quán)服務的代碼集成(具體變量的定義請詳見ImageChooser.java,該代碼需在識別之前調(diào)用)125.4進入拍照識別界面代碼:135.5結(jié)果解析代碼135.6 結(jié)束136. 項目授權(quán)方式的集成步驟146.1用戶向北京文通科技有限公司的銷售提供需要綁定的一些參數(shù),然后銷售會給用戶一個項目授權(quán)文件(authmode.lsc);然后將assets文件夾、lib文件夾、libs
3、文件夾全部按照下圖的目錄結(jié)構(gòu)復制到集成的項目中并將新得到的authmode.lsc復制進集成項目中的assets文件夾內(nèi):146.2打開要集成的項目的AndroidManifest.xml文件,將以下權(quán)限、相應的service和activity加入其中:156.3進入拍照識別界面代碼:176.4更改開發(fā)碼和對應的authmode.lsc文件176.5結(jié)果解析代碼186.6結(jié)束181 演示程序安裝與激活1.1 安裝安裝中安名片演示程序BuCard_sample_sdk.apk。1.2 Android版本支持Android2.3 6.01.3 激活方式介紹在首次調(diào)用時提供序列號或激活文件進行激活。
4、1、在線序列號激活方式。由北京文通科技有限公司提供含有序列號的Excel文件,用戶在調(diào)用程序中指定sn參數(shù)即用于該設備的某序列號,首次調(diào)用識別時設備須聯(lián)網(wǎng)??芍付ń壎ㄔO備deviceid或綁定SIM卡序號。默認綁定deviceid。2、離線文件激活方式。用戶先提供北京文通科技有限公司含有deviceid或androidid的Excel文件(第一列為deviceid,第二列為androidid),然后北京文通科技有限公司提供對應設備的激活文件壓縮包,壓縮包中激活文件的 數(shù)目與設備數(shù)目一致,以deviceid_cp.txt命名,用戶在調(diào)用程序中指定authfile參數(shù)即激活文件的路徑和名稱,首次調(diào)
5、用時設備無需聯(lián)網(wǎng)。如authfile參數(shù)為null或等于”時,默認激活文件路徑為根目錄下的deviceid_cp.txt,當激活文件存在時做此激活操作。3、項目授權(quán)方式。項目授權(quán)文件中限制如下內(nèi)容:開發(fā)碼參數(shù)、用戶程序包名、識別核心版本號、使用截止時間、用戶程序名稱、用戶公司名稱;開發(fā)碼與調(diào)用識別時傳遞的devcode參數(shù)比對,開發(fā)碼由北京文通科技有限公司與項目授權(quán)文件一并提供;程序包名與AndroidMenifest.xml中package比對;使用截止時間與當前系統(tǒng)時間比對;授權(quán)文件中核心版本號與底層核心版本號比對, 默認限制前兩位;項目名稱與strings.xml中app_name比對;
6、公司名稱與strings.xml中company_name比對;項目授權(quán)文件需放入項目assets文件夾中。注意:如果使用1或2 所列的激活方式,請選擇指定sn參數(shù)或authfile參數(shù) ,不要同時指定sn參數(shù)和authfile參數(shù),否則將只按1的方式進行激活,設置此兩個參數(shù)請參見下文代碼示例。*采用項目授權(quán)無需調(diào)用驗證授權(quán)服務2 拍攝注意事項 目前支持的JPEG圖像的分辨率為2048*1536像素及以下,1600*1200及以上。2.1 一般要求圖像文字清晰,人眼可辨別;對比度、亮度適中;2.2 對拍攝圖像的要求拍攝時做好聚焦,以免圖像模糊不清;盡量不要使拍攝角度傾斜過大,以免造成圖像變形成
7、梯形;3 接口概述與集成說明用戶可以調(diào)用Activity方式集成識別功能,識別Activity只支持JPG圖片格式,用戶可以通過調(diào)用函數(shù)的方式設置識別參數(shù),詳情見后面章節(jié)。注意將“BuCard_sample_sdk集成所需文件”文件夾下的所有內(nèi)容放到Android項目的根目錄下;注意拷貝assets、lib、libs及res的內(nèi)容到您的項目中;注意將AndroidManifest.xml里面的內(nèi)容和res/values/strings.xml的內(nèi)容合并到項目相關(guān)文件中;如果采用序列號激活方式綁定設備,請將“序列號” 文件夾中的相關(guān)文件替換到項目中;4 調(diào)用識別Activity4.1 識別參數(shù)說
8、明識別Activity具有如下參數(shù):類型名稱說明示例 RecogService.byteDataType識別模式通過此參數(shù)可以通知核心是使用拍照識別還是掃描識別的模式進行初始化識別函數(shù)RecogService.byteDataType=1為拍照模式;RecogService.byteDataType=0為掃描模式byte nv21dataNv21格式 的數(shù)組該參數(shù)通常用于掃描識別模式中,在拍照識別模式中可將其置為空例如null或dataSize size相機預覽尺寸該參數(shù)通常用于掃描識別模式中,在拍照識別模式中可將其置為空例如null或camera.getParameters().getPre
9、viewSize()int width,int height掃描識別模式下的預覽圖像的寬和高該參數(shù)通常用于掃描識別模式中,在拍照識別模式中可將其置為0例如0或其他整型String picturePath拍照模式下的識別圖像存儲的物理路徑該參數(shù)通常用于拍照識別模式中,在掃描識別模式中可將其置為“”例如“”或其他數(shù)值4.2 識別返回值說明識別Activity具有如下返回值:類型名稱說明備注intReturnAuthority授權(quán)驗證結(jié)果0成功;-1001 讀jpg圖片錯誤,可能是圖片超過2048*1536分辨率-10001 未調(diào)用初始化函數(shù)-10003 沒有激活或激活碼校驗失敗-10004 指定序
10、列號為null或""-10005 未連接到服務器-10006 獲取激活碼失敗或未連接到服務器-10007 授權(quán)服務器無此序列號-10008 序列號已使用-10009 無法創(chuàng)建授權(quán)文件-10010 校驗激活碼失敗-10011 其他錯誤-10012 未激活-10015 激活文件校驗失敗-10401 開發(fā)碼錯誤或未找到authmode.lsc文件-10402 設備型號未授權(quán)-10500 未檢測到SIM卡-1008 未讀到TF卡;-1005 TF卡授權(quán)模式下使用了非TF卡授權(quán)的動態(tài)庫;20 所插TF中的licenselicense.dat授權(quán)文件未找到或不匹配;或非TF卡授權(quán)模式下
11、使用了TF卡模式動態(tài)庫;-10600 其他錯誤;-10601 開發(fā)碼錯誤;-10602 程序包名錯誤;-10603 截止時間過期;-10604 核心版本號錯誤;-10605 項目名稱錯誤; -10606 公司名稱錯誤。IntReturnRecogBuCard識別返回值0成功IntReturnInitBUCard初始化函數(shù)返回值ArrayList<HashMap<String, String>>list = (ArrayList<HashMap<String, String>>) bunt("list")t(0);for (in
12、t i = 0; i < list.size(); i+) HashMap<String, String> map = list.get(i);str += map.get("Name") + ":" + map.get("Val") + "n"4.3示例代碼4.3.1識別調(diào)用代碼(在調(diào)用此方法前請先設置RecogService.byteDataType的值)public void startActivityRecog(byte nv21data, Size size, int width,int
13、 height, String picturePath) String picPathString = ""try if (RecogService.byteDataType = 0) / 存取識別圖片 startpicPathString = path + "card_full.jpg"File file = new File(path);if (!file.exists()file.mkdirs();File file1 = new File(picPathString);Utils.freeFileLock(new FileOutputStream
14、(picPathString).getChannel().tryLock(), file1);YuvImage yuvimage = new YuvImage(nv21data, ImageFormat.NV21,size.width, size.height, null);ByteArrayOutputStream baos = new ByteArrayOutputStream();pressToJpeg(new Rect(int) (size.width * 0.15),(int) (size.height - 0.41004673 * size.width) / 2,(int) (si
15、ze.width * 0.8),(int) (size.height + 0.41004673 * size.width) / 2), 80,baos);FileOutputStream outStream;outStream = new FileOutputStream(picPathString);outStream.write(baos.toByteArray();outStream.close();baos.close();/ 存取識別圖片 endRecogService.recogBytes = nv21data; else if (RecogService.byteDataType
16、 = 1) RecogService.byteDataType = 1;picPathString = picturePath;/ else if (RecogService.byteDataType = 2) / RecogService.byteDataType = 2;/ picPathString = picturePath;/ String cutPicturePath = path + Utils.pictureName() + "_cut.jpg"Intent intent = new Intent("kernel.bucard");Bun
17、dle bundle = new Bundle();bundle.putString("lpFileName", picPathString);/ 指定的圖像路徑,預覽掃描識別時,該參數(shù)代表動畫圖片路徑bundle.putString("devcode", NameCardAuthParamters.DEVCODE);bundle.putInt("recogBytes_width", width);/預覽圖像的寬bundle.putInt("recogBytes_height", height);/預覽圖像的高bu
18、ndle.putString("returntype", "withvalue");/ 返回值傳遞方式withvalue帶參數(shù)的傳值方式(onActivityResult方式返回識別結(jié)果)bundle.putBoolean("isSaveCut", false);/是否保存裁切圖片bundle.putString("cutPicturePath", cutPicturePath);/ 指定的圖像路徑,預覽掃描識別時,該參數(shù)代表動畫圖片路徑intent.putExtras(bundle);(Activity) con
19、text).startActivityForResult(intent, 8); catch (Exception e) Toast.makeText(context,context.getString(R.string.noFoundProgram)+ "kernel.bucard", 0).show();e.printStackTrace();4.3.2接收返回值代碼protected void onActivityResult(int requestCode, int resultCode, Intent data) if (requestCode = 8 &
20、& resultCode = RESULT_OK) / 讀識別返回值Bundle bun = data.getBundleExtra("GetRecogResult");/識別信息Intent intent = new Intent(CameraActivity.this,BucardRunner.class);intent.putExtra("RecogValue", bun);intent.putExtra("camera", isAutoRecog);startActivity(intent);CameraActivit
21、y.this.finish();overridePendingTransition(R.anim.zoomin, R.anim.zoomout);5、序列號在線激活方式集成步驟5.1 將assets文件夾、lib文件夾、libs文件夾全部按照下圖的目錄結(jié)構(gòu)復制到集成的項目中:先選中所有的jar包,然后add Path,右鍵lib文件夾點擊Buid Path選項并選擇config buid Path選項,點擊Order and Export選項,ksoap2-android-assembly-2.4-jar-with-dependencies.jar、pki.jarandroid_auth.ja
22、r、bcprov-ext-jdk15-146.jar、android_auth.jar、bucard_sdk.jar、等全部勾選并點擊“確定”按鈕,如圖:將res的內(nèi)容合并到您的項目中;注意將AndroidManifest.xml里面的內(nèi)容和res/values/strings.xml的內(nèi)容合并到項目相關(guān)文件中5.2 打開要集成的項目的AndroidManifest.xml文件,將以下權(quán)限、相應的service和activity加入其中: <uses-permission android:name="android.permission.CAMERA" /> &
23、lt;uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.VIBRAT
24、E" /> <!- 名片識別 -> <!- 往SDCard寫入數(shù)據(jù)權(quán)限 -> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!- 在SDCard中創(chuàng)建與刪除文件權(quán)限 -> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!- 關(guān)閉該包下的所有應用程序 -
25、> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <!- 獲取機型信息權(quán)限 -> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!- 訪問internet權(quán)限 -> <uses-permission android:name="android.permission.INTERNET"
26、/><activity android:name=".CameraActivity" android:label="string/app_name" android:screenOrientation="landscape" > <intent-filter> <action android:name="vicard.receiver" /> <category android:name="ent.category.DEFAULT&qu
27、ot; /> </intent-filter></activity> <activity android:name=".BucardRunner" android:configChanges="keyboardHidden|orientation" android:label="string/app_name" > <intent-filter> <action android:name="bucard.receiver" /> <catego
28、ry android:name="ent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="kernel.BusinessCard.android.BuCardBean" android:configChanges="keyboardHidden|orientation" android:screenOrientation="landscape" > &l
29、t;intent-filter> <action android:name="kernel.bucard" /> <category android:name="ent.category.DEFAULT" /> </intent-filter> </activity> <service android:name="kernel.BusinessCard.android.AuthService" android:enabled="true&quo
30、t; > <intent-filter> <action android:name="kernel.bucard.authService" /> </intent-filter> </service> <service android:name="kernel.BusinessCard.android.RecogService" android:enabled="true" > <intent-filter> <action android:name=
31、"kernek.bucard.recogService" /> </intent-filter> </service>注冊時請注意更換包名!5.3 授權(quán)服務的代碼集成(具體變量的定義請詳見ImageChooser.java,該代碼需在識別之前調(diào)用) 授權(quán)服務的定義:(用戶需將從銷售手中獲得的25位序列號替換sn, ReturnAuthority變量為授權(quán)服務成功與否的標志,如果為0則證明授權(quán)成功)public ServiceConnection authConn = new ServiceConnection() Overridepublic
32、void onServiceDisconnected(ComponentName name) authBinder = null;Overridepublic void onServiceConnected(ComponentName name, IBinder service) authBinder = (AuthService.authBinder) service;try AuthParameterMessage apm = new AuthParameterMessage();/ apm.datefile = ""/預留apm.devcode =NameCardAu
33、thParamters.DEVCODE;/5YYX5LQS5PAH6YCapm.sn = ""/ WU9H5VSSDVXYB6KYYI52YYICW /apm.isCheckDevType=true;/強制驗證設備型號開關(guān)ReturnAuthority = authBinder.getBuCardAuth(apm); catch (Exception e) Toast.makeText(getApplicationContext(), getString(R.string.license_verification_failed),Toast.LENGTH_LONG).sho
34、w(); finally if (authBinder != null) unbindService(authConn);授權(quán)服務的調(diào)用:(在Activity的onResume()中調(diào)用,必須在進入拍照界面前進行調(diào)用)Intent authIntent = new Intent(ImageChooser.this, AuthService.class);bindService(authIntent, authConn, Service.BIND_AUTO_CREATE);5.4進入拍照識別界面代碼:5.4.1手動拍照識別請注意將CameraActivity添加到您的項目中Intent inte
35、nt = new Intent();Intent intent = new Intent();intent.setClass(ImageChooser.this, CameraActivity.class);intent.putExtra("camera", false);ImageChooser.this.finish();startActivity(intent);overridePendingTransition(R.anim.zoomin, R.anim.zoomout);5.4.2掃描自動識別Intent intent = new Intent();intent.
36、setClass(ImageChooser.this, CameraActivity.class);intent.putExtra("camera",true);ImageChooser.this.finish();startActivity(intent);overridePendingTransition(R.anim.zoomin, R.anim.zoomout);5.5結(jié)果解析代碼結(jié)果解析識別代碼請詳見此方法:readRecogResult()此方法位于BucardRunner.java中5.6 結(jié)束如果通過以上步驟進行集成,并出現(xiàn)相應的集成問題,請及時聯(lián)系技術(shù)開發(fā)
37、人員6. 項目授權(quán)方式的集成步驟6.1用戶向北京文通科技有限公司的銷售提供需要綁定的一些參數(shù),然后銷售會給用戶一個項目授權(quán)文件(authmode.lsc);然后將assets文件夾、lib文件夾、libs文件夾全部按照下圖的目錄結(jié)構(gòu)復制到集成的項目中并將新得到的authmode.lsc復制進集成項目中的assets文件夾內(nèi):先選中所有的jar包,然后add Path,右鍵lib文件夾點擊Buid Path選項并選擇config buid Path選項,點擊Order and Export選項,將android_auth.jar、bucard_sdk.jar、pki.jar等全部勾選并點擊“確定
38、”按鈕,如圖:6.2打開要集成的項目的AndroidManifest.xml文件,將以下權(quán)限、相應的service和activity加入其中:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-feature android:name="android.hardware.camera" /&g
39、t; <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.VIBRATE" /> <!- 名片識別 -> <!- 往SDCard寫入數(shù)據(jù)權(quán)限 -> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
40、 <!- 在SDCard中創(chuàng)建與刪除文件權(quán)限 -> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!- 關(guān)閉該包下的所有應用程序 -> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <!- 獲取機型信息權(quán)限 -> <uses-permission android:name=&quo
41、t;android.permission.READ_PHONE_STATE" /> <!- 訪問internet權(quán)限 -> <uses-permission android:name="android.permission.INTERNET" /><activity android:name=".CameraActivity" android:label="string/app_name" android:screenOrientation="landscape" &g
42、t; <intent-filter> <action android:name="vicard.receiver" /> <category android:name="ent.category.DEFAULT" /> </intent-filter></activity> <activity android:name=".BucardRunner" android:configChanges="keyboardHidden|orient
43、ation" android:label="string/app_name" > <intent-filter> <action android:name="bucard.receiver" /> <category android:name="ent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="kernel.Busin
44、essCard.android.BuCardBean" android:configChanges="keyboardHidden|orientation" android:screenOrientation="landscape" > <intent-filter> <action android:name="kernel.bucard" /> <category android:name="ent.category.DEFAULT" /> </intent-filter> </activity> <service android:name="kernel.BusinessCard.andro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 動態(tài)預算管理的實施方案計劃
- 秘書工作人員培訓計劃
- 第4周第1課時變速跑直快、彎慢 教學設計-九年級體育與健康
- 農(nóng)產(chǎn)品加工品牌的創(chuàng)新策略計劃
- 加強社區(qū)法律知識普及計劃
- 《貴州織金興發(fā)煤業(yè)有限公司織金縣珠藏鎮(zhèn)興發(fā)煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 血虛中醫(yī)護理方法
- 緩解臨床護理壓力
- 九年級化學下冊 第7章 應用廣泛的酸、堿、鹽 第2節(jié) 常見的酸和堿教學實錄 (新版)滬教版
- 第六單元寫作《有創(chuàng)意地表達》教學設計-2023-2024學年統(tǒng)編版語文九年級下冊
- HSK標準教程5下-課件-L1
- 線的立體構(gòu)成課件
- 調(diào)相機系統(tǒng)構(gòu)成及原理培訓課件
- 工程量清單及招標控制價編制服務采購實施方案(技術(shù)標)
- 教科版六年級科學下冊全冊全套課件【完整版】
- 型瀝青攪拌樓技術(shù)規(guī)格書
- 道路運輸企業(yè)主要負責人和安全生產(chǎn)管理人員安全考核試題(含答案)
- 下載完整版的離婚協(xié)議書
- 交通運輸概論--課件
- 2.PaleoScan詳細操作流程
- 大數(shù)據(jù)思維與技術(shù)知到章節(jié)答案智慧樹2023年北京理工大學
評論
0/150
提交評論