Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android平台車牌識別開發手冊

Android平台車牌識別開發手冊

編輯:關於Android編程

1 演示程序安裝與激活

1.1安裝

安裝文通車牌演示程序plate_id_sample_service.apk。

1.2 Android版本

支持Android2.3 –5.1

1.3激活方式介紹

在首次調用時提供序列號或激活文件進行激活。

1、在線序列號激活方式。

由文通公司提供含有序列號的Excel文件,用戶在調用程序中指定sn參數即用於該設備的某序列號,首次調用識別時設備須聯網。可指定綁定設備deviceid或綁定SIM卡序號。默認綁定deviceid。

2、離線文件激活方式。

用戶先提供文通公司含有deviceid或androidid的Excel文件(第一列為deviceid,第二列為androidid),然後文通公司提供對應設備的激活文件壓縮包,壓縮包中激活文件的數目與設備數目一致,以[deviceid]_cp.txt命名,用戶在調用程序中指定authfile參數即激活文件的路徑和名稱,首次調用時設備無需聯網。如authfile參數為null或等於””時,默認激活文件路徑為根目錄下的[deviceid]_cp.txt,當激活文件存在時做此激活操作。

3、TF卡模式。

需使用文通公司授權的TF卡。

4、 項目授權方式。

項目授權文件中限制如下內容:開發碼參數、用戶程序包名、識別核心版本號、使用截止時間、用戶程序名稱、用戶公司名稱;

開發碼與調用識別時傳遞的devcode參數比對,開發碼由文通公司與項目授權文件一並提供;

程序包名與AndroidMenifest.xml中package比對;

使用截止時間與當前系統時間比對;

授權文件中核心版本號與底層核心版本號比對, 默認限制前兩位;

項目名稱與strings.xml中app_name比對;

公司名稱與strings.xml中company_name比對;

項目授權文件需放入項目assets文件夾中。

注意:如果使用1或2 所列的激活方式,請選擇指定sn參數或authfile參數 ,不要同時指定sn參數和authfile參數,否則將只按1的方式進行激活,設置此兩個參數請參見下文代碼示例。

**采用項目授權無需調用驗證授權服務

2 拍攝注意事項

目前支持的JPEG圖像的分辨率為2048*1536像素及以下,支持圖像中車牌的默認實際寬度為80-400像素。

2.1 一般要求

圖像文字清晰,人眼可辨別;

對比度、亮度適中;

2.2對拍攝圖像的要求

拍攝時做好聚焦,以免圖像模糊不清;

拍攝時不要使車牌過度傾斜;

盡量不要使拍攝角度傾斜過大,以免造成圖像變形成梯形;

3 接口概述與集成說明

用戶可以調用Activity或Service的方式集成識別功能,識別Activity只支持JPG圖片格式,識別Service也支持JPG圖片格式,推薦使用Service方式集成;用戶可以通過調用函數的方式設置識別參數,詳情見後面章節。

注意將“plate_id_sdk集成所需文件”文件夾下的所有內容放到Android項目的根目錄下;注意拷貝assets、lib、libs及res的內容到您的項目中;注意將AndroidManifest.xml裡面的內容和res/values/strings.xml的內容合並到項目相關文件中;如果采用TF卡授權方式,請將 “TF”文件夾中的相關文件替換到項目中;如果采用序列號激活方式綁定設備,請將“序列號” 文件夾中的相關文件替換到項目中;

注意當與文通Android證件識別集成到一個項目中時,請刪除lib文件夾下的misc_crypto.jar(如果有的話),否則會引起沖突。

4 調用識別Activity(V1.3.0.5不再使用)

4.1識別參數說明

識別Activity具有如下參數:

類型

名稱

說明

示例

String

cls

接收識別返回值的包名類名

com.wintone.demo.PlateIDRunner

String

pic

圖片路徑

 

int

imageformat

圖像格式

1

int

width

圖像寬度

420

int

height

圖像高度

232

int

bVertFlip

 

0

int

bDwordAligned

 

1

boolean

GetVersion

是否需要獲取開發包的版本信息

true

String

sn

序列號,第一次調用時激活,如不設置此項需通過自動激活或手動激活頁面輸入序列號。

請輸入大寫序列號

String

authfile

激活文件路徑,激活文件中保存了用於該設備的序列號和激活碼,不用時可設置為””

 

String

userdata

用戶想在識別後和識別結果一起傳回的字符串

 

String

returntype

接收識別結果的方式

默認值””,代表用第一種方式接收識別結果;值”withvalue”代表用第二種方式。詳見示例程序章節。

4.2識別返回值說明

識別Activity具有如下返回值:

類型

名稱

說明

備注

int

nRet

識別結果標志

0成功;

1FindPlate(沒有找到車牌)

2車牌評價值(0分)

3車牌評價值(不及格)

4車牌識別分數(0分)

5車牌識別分數(不及格)

-1001 讀jpg圖片錯誤,可能是圖片超過2048*1536分辨率

-10001 未調用初始化函數

-10003 沒有激活或激活碼校驗失敗

-10004 指定序列號為null或""

-10005 未連接到服務器

-10006 獲取激活碼失敗或未連接到服務器

-10007 授權服務器無此序列號

-10008 序列號已使用

-10009 無法創建授權文件

-10010 校驗激活碼失敗

-10011 其他錯誤

-10012 未激活

-10015激活文件校驗失敗

-10401 開發碼錯誤或未找到authmode.lsc文件

-10402 設備型號未授權

-10500 未檢測到SIM卡

-1008 未讀到TF卡;

-1005 TF卡授權模式下使用了非TF卡授權的動態庫;

20 所插TF中的license\license.dat授權文件不匹配;或非TF卡授權模式下使用了TF卡模式動態庫;

-8:license\license.dat授權文件未找到

-10600 其他錯誤;

-10601 開發碼錯誤;

-10602 程序包名錯誤;

-10603 截止時間過期;

-10604 核心版本號錯誤;

-10605 項目名稱錯誤;

-10606 公司名稱錯誤。

String[]

GetFieldName

字段名

"車牌號", "車牌顏色", "車牌顏色代碼", "車牌類型代碼", "整牌可信度", "亮度評價","車牌運動方向", "車牌左上點橫坐標", "車牌左上點縱坐標", "車牌右下點橫坐標", "車牌右下點縱坐標", "時間","車的亮度", "車的顏色"

String[]

GetRecogResult

字段值

車牌顏色編碼:

0 未知

1 藍

2 黃

3 白

4 黑

5 綠

車牌類型編碼:

0 未知車牌

1 藍牌小汽車

2 黑牌小汽車

3 單排黃牌

4 雙排黃牌(大車尾牌,農用車)

5 警車車牌

6 武警車牌

7 個性化車牌

8 單排軍車

9 雙排軍車

10 使館牌

11 香港牌

12 拖拉機

車輛亮度編碼:

0 深

1 淺

車輛顏色編碼:

0 白

1 灰(銀)

2 黃

3 粉

4 紅

5 綠

6 藍

7 棕

8 黑

運動方向編碼:

1 左

2 右

3 上

4 下

String

ReturnGetVersion

取版本信息,如果定義了GetVersion為true才能取版本信息

 

String

ReturnUserData

返回用戶自定義數據參數userdata

 

String

ReturnLPFileName

用戶指定的圖像路徑

 

 

5 調用識別Service

5.1 調用Service方式概述

Service接口包括兩個Service,分別是驗證ServiceAuthService和識別Service RecogService:

驗證Service所需參數:序列號方式激活時用sn參數;激活文件方式時用authfile參數;不要同時指定sn參數和authfile參數,否則將只按序列號方式進行激活;如果未設置sn參數和authfile參數,將在根目錄尋找激活文件。

TF卡授權方式不用調用驗證Service,只調用識別Service即可。

驗證Service調用順序:bindService、激活驗證函數getAuth、unbindService;即每次產生驗證Service新實例完成驗證和激活的操作。

識別Service調用順序:在驗證Service的返回值ReturnAuthority為0時,每次識別時調用依次調用一次bondService、讀取初始化狀態函數getInitPlateIDSDK、設置識別參數的函數setRecogArgu、識別函數doRecogDetail、unbondService。

注意:Service方式支持JEPG圖像文件識別。

public String[]doRecogDetail(PlateRecognitionParameter prp)//用於識別JEPG圖片。

5.2 示例代碼

5.2.1在AndroidManifest.xml中定義Service

 

 

 

 

 

5.2.2綁定授權驗證服務

//綁定授權驗證服務

Intent authIntent = new Intent(MainActivity.this, AuthService.class);

bindService(authIntent, authConn, Service.BIND_AUTO_CREATE);

5.2.3授權驗證服務綁定後的操作

//授權驗證服務綁定後的操作

public ServiceConnection authConn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

authBinder = null;

}

 

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

Log.i(TAG, "authConn onServiceConnected");

authBinder = (AuthService.MyBinder) service;

Toast.makeText(getApplicationContext(), "授權驗證服務 綁定成功", Toast.LENGTH_SHORT).show();

try {

// sn:采用序列號方式激活時設置此參數,否則寫""

// authfile:采用激活文件方式激活時設置此參數,否則寫""

// 以上倆個參數都不為""時按序列號方式激活;當sn和authfile為""時會在根目錄下找激活文件 xxxxxxxxxxxxxxx_cp.txt

ReturnAuthority = authBinder.getAuth(sn, authfile);

if (ReturnAuthority != 0) {

recogButton.setEnabled(false);

String[] str = {"" + ReturnAuthority};

getResult(str);

Toast.makeText(getApplicationContext(), "授權驗證失敗", Toast.LENGTH_SHORT).show();

} else {

//若授權成功,則啟動識別服務

recogIntent = new Intent(MainActivity.this, RecogService.class);

//startService(recogIntent);

Toast.makeText(getApplicationContext(), "授權驗證成功", Toast.LENGTH_SHORT).show();

}

}catch (Exception e) {

e.printStackTrace();

Log.i(TAG, "e=" + e.toString());

}finally{

if (authBinder != null) {

unbindService(authConn);//解綁授權驗證服務

}

}

}

};

5.2.4綁定識別服務

//綁定識別服務

recogIntent = new Intent(MainActivity.this, RecogService.class);

bindService(recogIntent, recogConn, Service.BIND_AUTO_CREATE);

5.2.5識別服務綁定後的操作

//識別服務綁定後的操作

public ServiceConnection recogConn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

recogConn = null;

}

 

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

recogBinder = (RecogService.MyBinder) service;

 

iInitPlateIDSDK = recogBinder.getInitPlateIDSDK();

if (iInitPlateIDSDK != 0) {

 

nRet = iInitPlateIDSDK;

String[] str = { "" + iInitPlateIDSDK };

getResult(str);

} else {

 

PlateCfgParameter cfgparameter = new PlateCfgParameter();

cfgparameter.armpolice = 4;

cfgparameter.armpolice2 = 16;

cfgparameter.embassy = 12;

cfgparameter.individual = 0;

cfgparameter.nContrast = 0;

cfgparameter.nOCR_Th = 2;

cfgparameter.nPlateLocate_Th = 5;

 

cfgparameter.onlylocation = 15;

cfgparameter.tworowyellow = 2;

cfgparameter.tworowarmy = 6;

cfgparameter.szProvince = "";

cfgparameter.onlytworowyellow = 11;

cfgparameter.tractor = 8;

cfgparameter.bIsNight = 0;

recogBinder.setRecogArgu(cfgparameter, imageformat, bVertFlip,

bDwordAligned);

 

PlateRecognitionParameter prp = new PlateRecognitionParameter();

prp.height = height;

prp.width = width;

prp.pic = recogPicPath;

 

fieldvalue = recogBinder.doRecogDetail(prp);

nRet = recogBinder.getnRet();

if (nRet != 0) {

String[] str = { "" + nRet };

getResult(str);

} else {

getResult(fieldvalue);

}

 

}

 

if (recogBinder != null) {

unbindService(recogConn);

}

}

};

6調用識別參數配置函數

public void setRecogArgu(PlateCfgParameter cfgparameter, int imageformat, int bVertFlip, int bDwordAligned)

說明:本函數存在於識別Service內,參數cfgparameter見下表,其他參數請勿修改。

類型

參數名稱

取值范圍

默認值

int

nPlateLocate_Th

定位阈值 (取值范圍0-9,7:默認阈值,0:最寬松的阈值,9:最嚴格的阈值)

5

int

nOCR_Th

識別阈值(取值范圍0-9,5:默認阈值0:最寬松的阈值9:最嚴格的阈值)

2

int

bIsAutoSlope

是否要傾斜校正

1

int

nSlopeDetectRange

傾斜校正的范圍(取值范圍0-16)

0

String

szProvince

省份順序

 

int

nContrast

清晰度指數(取值范圍0-9,最模糊時設為1;最清晰時設為9)

0(不校驗)

int

bIsNight

是否夜間模式:1是;0不是

0

int

individual

是否開啟個性化車牌:0是;1不是

0

int

tworowyellow

雙層黃色車牌是否開啟:2是;3不是

3

int

armpolice

單層武警車牌是否開啟:4是;5不是

5

int

tworowarmy

雙層軍隊車牌是否開啟:6是;7不是

7

int

tractor

農用車車牌是否開啟:8是;9不是

9

int

onlytworowyellow

只識別雙層黃牌是否開啟:10是;11不是

11

int

embassy

使館車牌是否開啟:12是;13不是

13

int

onlylocation

只定位車牌是否開啟:14是;15不是

15

int

armpolice2

雙層武警車牌是否開啟:16是;17不是

17

 

public String[] doRecogDetail(PlateRecognitionParameter prp)

說明:本函數存在於識別Service內,參數prp見下表。

識別接口,該函數返回的是識別後的數據。

類型

參數名稱

 

默認值

byte[]

picByte

相機獲取的字節數組數據

 

String

pic

拍照識別,圖片的存儲路徑

 

int

width

圖像寬度

 

int

heigth

圖像高度

 

String

userdata

用戶自定義數據參數userdata

 

String

devCode

開發碼

 

String

dataFile

時間授權文件路徑

 

String

versionfile

版本授權文件路徑

 

boolean

isCheckDevType

是否檢查設備型號

false

int

plateIDCfg.bRotate

預覽圖片在進行識別時需要旋轉的角度:

0:不旋轉;1:90度;2:旋轉180;3:旋轉270

0

int

plateIDCfg.left

掃描框在預覽圖片上所對應的左坐標點

0

int

plateIDCfg.right

掃描框在預覽圖片上所對應的右坐標點

0

int

plateIDCfg.top

掃描框在預覽圖片上所對應的上坐標點

0

int

plateIDCfg.bottom

掃描框在預覽圖片上所對應的下坐標點

0

 

public int getnRet()獲取識別後的返回值 nRet (詳見4.2返回結果說明)


7序列號在線激活方式的集成步驟

7.1資源文件的拷貝

將assets文件夾、lib文件夾、libs文件夾全部按照下圖的目錄結構復制到集成的項目中:

 

先選中所有的jar包,然後add Path,右鍵lib文件夾點擊Buid Path選項並選擇config buid Path選項,點擊Order and Export選項,將android_auth.jar、ksoap2-android-assembly-2.4-jar-with-dependencies.jar、plate_id_sdk.jar、

bcprov-ext-jdk15-146.jar、pki.jar等全部勾選並點擊“確定”按鈕,如圖:

 

將res的內容合並到您的項目中;注意將AndroidManifest.xml裡面的內容和res/values/strings.xml的內容合並到項目相關文件中

7.2配置AndroidManifest.xml文件,

打開要集成的項目的AndroidManifest.xml文件,將以下權限、相應的service和activity加入其中:

 

 

 

 

 

android:name="com.wintone.plateid.AuthService"

android:enabled="true" >

 

 

android:name="com.wintone.plateid.RecogService"

android:enabled="true" >

 

 

 

android:name="com.wintone.plateid.MemoryCameraActivity"

android:label="@string/app_name"

android:configChanges="orientation|keyboard|keyboardHidden">

 

android:name="com.wintone.plateid.MemoryResultActivity">

 

android:name="com.wintone.plateid.ResultActivity"

android:screenOrientation="portrait" />

 

android:configChanges="keyboardHidden|orientation">

 

 

 

注冊時請注意更換包名!!

 

7.3 授權服務的代碼集成

授權服務的定義:(用戶需將從銷售手中獲得的25位序列號替換sn,

ReturnAuthority變量為授權服務成功與否的標志,如果為0則證明授權成功)

 

授權服務的代碼集成(具體變量的定義請詳見MainActivity.java,該代碼需在識別之前調用)

public ServiceConnection authConn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

authBinder = null;

}

 

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

authBinder = (AuthService.MyBinder) service;

Toast.makeText(getApplicationContext(), R.string.auth_check_service_bind_success, Toast.LENGTH_SHORT).show();

try {

 

PlateAuthParameter pap = new PlateAuthParameter();

pap.sn = sn;

pap.authFile = authfile;

// sn:采用序列號方式激活時設置此參數,否則寫""

// authfile:采用激活文件方式激活時設置此參數,否則寫""

// 以上倆個參數都不為""時按序列號方式激活;當sn和authfile為""時會在根目錄下找激活文件xxxxxxxxxxxxxxx_cp.txt

 

ReturnAuthority = authBinder.getAuth(pap);

if (ReturnAuthority != 0) {

Toast.makeText(getApplicationContext(),getString(R.string.license_verification_failed)+":"+ReturnAuthority,Toast.LENGTH_LONG).show();

}else{

Toast.makeText(getApplicationContext(),R.string.license_verification_success,Toast.LENGTH_LONG).show();

}

}catch (Exception e) {

Toast.makeText(getApplicationContext(), R.string.failed_check_failure, Toast.LENGTH_SHORT).show();

e.printStackTrace();

}finally{

if (authBinder != null) {

unbindService(authConn);

}

}

}

授權服務的調用:(在Activity的oncreate()中調用,必須在進入拍照界面前進行調用)

Intent authIntent = new Intent(MainActivity.this, AuthService.class);

bindService(authIntent,authConn,Service.BIND_AUTO_CREATE);

 

7.4識別方法選擇:

進入拍照識別界面代碼:

Intent cameraintent = new Intent(MainActivity.this,MemoryCameraActivity.class);

cameraintent.putExtra("camera", false);

startActivity(cameraintent);

 

進入視頻識別界面代碼:

Intent video_intent = new Intent();

video_intent.setClass(getApplicationContext(), MemoryCameraActivity.class);

video_intent.putExtra("camera", true);

startActivity(video_intent);

進入選擇識別界面代碼:

Intent selectIntent = new Intent(Intent.ACTION_GET_CONTENT);

selectIntent.addCategory(Intent.CATEGORY_OPENABLE);

selectIntent.setType("image/*");

Intent wrapperIntent = Intent.createChooser(selectIntent,"Select Picture");

startActivityForResult(wrapperIntent, SELECT_RESULT_CODE);

7.5識別服務的集成

綁定識別服務

Intent authIntent = new Intent(MemoryCameraActivity.this,

RecogService.class);

bindService(authIntent, recogConn, Service.BIND_AUTO_CREATE);

識別服務代碼

public ServiceConnection recogConn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

recogConn = null;

}

 

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

recogBinder = (RecogService.MyBinder) service;

iInitPlateIDSDK = recogBinder.getInitPlateIDSDK();

 

if (iInitPlateIDSDK != 0) {

 

nRet = iInitPlateIDSDK;

String[] str = { "" + iInitPlateIDSDK };

getResult(str);

}

// recogBinder.setRecogArgu(recogPicPath, imageformat,

// bGetVersion, bVertFlip, bDwordAligned);

PlateCfgParameter cfgparameter = new PlateCfgParameter();

cfgparameter.armpolice = 4;

cfgparameter.armpolice2 = 16;

cfgparameter.embassy = 12;

cfgparameter.individual = 0;

// cfgparameter.nContrast = 9;

cfgparameter.nOCR_Th = 0;

cfgparameter.nPlateLocate_Th = 5;

cfgparameter.onlylocation = 15;

cfgparameter.tworowyellow = 2;

cfgparameter.tworowarmy = 6;

cfgparameter.szProvince = "";

cfgparameter.onlytworowyellow = 11;

cfgparameter.tractor = 8;

cfgparameter.bIsNight = 1;

recogBinder.setRecogArgu(cfgparameter, imageformat, bVertFlip,

bDwordAligned);

 

// fieldvalue = recogBinder.doRecog(recogPicPath, width,

// height);

if (recogBinder != null) {

unbindService(recogConn);

}

}

};

7.6結束

如果通過以上步驟進行集成,並出現相應的集成問題,請及時聯系技術開發人員。

 

8.項目授權方式的集成步驟

8.1資源文件拷貝

用戶向北京文通科技有限公司的銷售提供需要綁定的一些參數,然後銷售會給用戶一個項目授權文件(authmode.lsc);然後將assets文件夾、lib文件夾、libs文件夾全部按照下圖的目錄結構復制到集成的項目中並將新得到的authmode.lsc復制進集成項目中的assets文件夾內:

 

 

先選中所有的jar包,然後add Path,右鍵lib文件夾點擊Buid Path選項並選擇config buid Path選項,點擊Order and Export選項,將android_auth.jar、ksoap2-android-assembly-2.4-jar-with-dependencies.jar、plate_id_sdk.jar、

bcprov-ext-jdk15-146.jar、pki.jar等全部勾選並點擊“確定”按鈕,如圖:

 

8.2配置AndroidManifest.xml文件

打開要集成的項目的AndroidManifest.xml文件,將以下權限、相應的service和activity加入其中:

 

 

android:name="com.wintone.plateid.MainActivity"

android:configChanges="keyboardHidden|orientation"

android:label="@string/app_name"

android:launchMode="singleTask"

android:windowSoftInputMode="adjustUnspecified|stateHidden" >

 

 

 

android:name="com.wintone.plateid.AuthService"

android:enabled="true" >

 

 

android:name="com.wintone.plateid.RecogService"

android:enabled="true" >

 

 

 

android:name="com.wintone.plateid.MemoryCameraActivity"

android:label="@string/app_name"

android:configChanges="orientation|keyboard|keyboardHidden">

 

android:name="com.wintone.plateid.MemoryResultActivity">

 

android:name="com.wintone.plateid.ResultActivity"

android:screenOrientation="portrait" />

 

android:configChanges="keyboardHidden|orientation">

 

 

 

注冊時請注意更換包名!!

然後再打開res/values/strings.xml,將以下內容復制進去,其中的內容要改成用戶提供的相應信息:

"app_name">快號通開發包

"company_name">北京文通科技有限公司

8.3識別方法選擇:

進入拍照識別界面代碼:

Intent cameraintent = new Intent(MainActivity.this,MemoryCameraActivity.class);

cameraintent.putExtra("camera", false);

startActivity(cameraintent);

 

進入視頻識別界面代碼:

Intent video_intent = new Intent();

video_intent.setClass(getApplicationContext(), MemoryCameraActivity.class);

video_intent.putExtra("camera", true);

startActivity(video_intent);

進入選擇識別界面代碼:

Intent selectIntent = new Intent(Intent.ACTION_GET_CONTENT);

selectIntent.addCategory(Intent.CATEGORY_OPENABLE);

selectIntent.setType("image/*");

Intent wrapperIntent = Intent.createChooser(selectIntent,"Select Picture");

startActivityForResult(wrapperIntent, SELECT_RESULT_CODE);

 

8.4識別服務的集成

綁定識別服務

Intent authIntent = new Intent(MemoryCameraActivity.this,

RecogService.class);

bindService(authIntent, recogConn, Service.BIND_AUTO_CREATE);

識別服務代碼

public ServiceConnection recogConn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

recogConn = null;

}

 

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

recogBinder = (RecogService.MyBinder) service;

iInitPlateIDSDK = recogBinder.getInitPlateIDSDK();

 

if (iInitPlateIDSDK != 0) {

 

nRet = iInitPlateIDSDK;

String[] str = { "" + iInitPlateIDSDK };

getResult(str);

}

// recogBinder.setRecogArgu(recogPicPath, imageformat,

// bGetVersion, bVertFlip, bDwordAligned);

PlateCfgParameter cfgparameter = new PlateCfgParameter();

cfgparameter.armpolice = 4;

cfgparameter.armpolice2 = 16;

cfgparameter.embassy = 12;

cfgparameter.individual = 0;

// cfgparameter.nContrast = 9;

cfgparameter.nOCR_Th = 0;

cfgparameter.nPlateLocate_Th = 5;

cfgparameter.onlylocation = 15;

cfgparameter.tworowyellow = 2;

cfgparameter.tworowarmy = 6;

cfgparameter.szProvince = "";

cfgparameter.onlytworowyellow = 11;

cfgparameter.tractor = 8;

cfgparameter.bIsNight = 1;

recogBinder.setRecogArgu(cfgparameter, imageformat, bVertFlip,

bDwordAligned);

 

// fieldvalue = recogBinder.doRecog(recogPicPath, width,

// height);

if (recogBinder != null) {

unbindService(recogConn);

}

}

};

 

8.5結束

如果通過以上步驟進行集成,並出現相應的集成問題,請及時聯系技術開發人員。

 

9.TF授權方式的集成步驟

9.1資源文件設置

用戶向北京文通科技有限公司的銷售索要authmode.lsc文件和TF存儲器;然後將assets文件夾、lib文件夾、libs文件夾全部按照下圖的目錄結構復制到集成的項目中並將新得到的authmode.lsc復制進集成項目中的assets文件夾內:

 

先選中所有的jar包,然後add Path,右鍵lib文件夾點擊Buid Path選項並選擇config buid Path選項,點擊Order and Export選項,將android_auth.jar、ksoap2-android-assembly-2.4-jar-with-dependencies.jar、plate_id_sdk.jar、

bcprov-ext-jdk15-146.jar、pki.jar等全部勾選並點擊“確定”按鈕,如圖:

 

9.2配置AndroidManifest.xml文件

打開要集成的項目的AndroidManifest.xml文件,將以下權限、相應的service和activity加入其中:

 

 

 

android:name="com.wintone.plateid.AuthService"

android:enabled="true" >

 

 

android:name="com.wintone.plateid.RecogService"

android:enabled="true" >

 

 

 

android:name="com.wintone.plateid.MemoryCameraActivity"

android:label="@string/app_name"

android:configChanges="orientation|keyboard|keyboardHidden">

 

android:name="com.wintone.plateid.MemoryResultActivity">

 

android:name="com.wintone.plateid.ResultActivity"

android:screenOrientation="portrait" />

 

android:configChanges="keyboardHidden|orientation">

 

 

 

注冊時請注意更換包名!!

9.3識別方法選擇:

進入拍照識別界面代碼:

Intent cameraintent = new Intent(MainActivity.this,MemoryCameraActivity.class);

cameraintent.putExtra("camera", false);

startActivity(cameraintent);

 

進入視頻識別界面代碼:

Intent video_intent = new Intent();

video_intent.setClass(getApplicationContext(), MemoryCameraActivity.class);

video_intent.putExtra("camera", true);

startActivity(video_intent);

進入選擇識別界面代碼:

Intent selectIntent = new Intent(Intent.ACTION_GET_CONTENT);

selectIntent.addCategory(Intent.CATEGORY_OPENABLE);

selectIntent.setType("image/*");

Intent wrapperIntent = Intent.createChooser(selectIntent,"Select Picture");

startActivityForResult(wrapperIntent, SELECT_RESULT_CODE);

 

9.4識別服務的集成

將示例代碼中集成所需文件夾內的TF卡授權文件夾內的授權文件復制到項目中的assets文件夾內。

9.5識別服務的代碼

綁定識別服務

Intent authIntent = new Intent(MemoryCameraActivity.this,

RecogService.class);

bindService(authIntent, recogConn, Service.BIND_AUTO_CREATE);

識別服務代碼

public ServiceConnection recogConn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

recogConn = null;

}

 

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

recogBinder = (RecogService.MyBinder) service;

iInitPlateIDSDK = recogBinder.getInitPlateIDSDK();

 

if (iInitPlateIDSDK != 0) {

 

nRet = iInitPlateIDSDK;

String[] str = { "" + iInitPlateIDSDK };

getResult(str);

}

// recogBinder.setRecogArgu(recogPicPath, imageformat,

// bGetVersion, bVertFlip, bDwordAligned);

PlateCfgParameter cfgparameter = new PlateCfgParameter();

cfgparameter.armpolice = 4;

cfgparameter.armpolice2 = 16;

cfgparameter.embassy = 12;

cfgparameter.individual = 0;

// cfgparameter.nContrast = 9;

cfgparameter.nOCR_Th = 0;

cfgparameter.nPlateLocate_Th = 5;

cfgparameter.onlylocation = 15;

cfgparameter.tworowyellow = 2;

cfgparameter.tworowarmy = 6;

cfgparameter.szProvince = "";

cfgparameter.onlytworowyellow = 11;

cfgparameter.tractor = 8;

cfgparameter.bIsNight = 1;

recogBinder.setRecogArgu(cfgparameter, imageformat, bVertFlip,

bDwordAligned);

 

// fieldvalue = recogBinder.doRecog(recogPicPath, width,

// height);

if (recogBinder != null) {

unbindService(recogConn);

}

}

};

9.6結束

如果通過以上步驟進行集成,並出現相應的集成問題,請及時聯系技術開發人員。

10.SIM卡授權方式的集成步驟(請參照序列號集成步驟)

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved