基于藍(lán)牙傳輸?shù)碾娮又讣y鎖操作APP設(shè)計(jì)課件_第1頁
基于藍(lán)牙傳輸?shù)碾娮又讣y鎖操作APP設(shè)計(jì)課件_第2頁
基于藍(lán)牙傳輸?shù)碾娮又讣y鎖操作APP設(shè)計(jì)課件_第3頁
基于藍(lán)牙傳輸?shù)碾娮又讣y鎖操作APP設(shè)計(jì)課件_第4頁
基于藍(lán)牙傳輸?shù)碾娮又讣y鎖操作APP設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于藍(lán)牙傳輸?shù)碾娮又讣y鎖操作APP設(shè)計(jì)學(xué)校名稱:

指導(dǎo)老師

報(bào)告人目錄CONTENTPART

ONEPART

TWOPART

THREE工具介紹總體方案各模塊介紹學(xué)校名稱:PART

ONE工具介紹學(xué)校名稱:開發(fā)工具eclipse簡(jiǎn)介eclipse開放源代碼、基于Java的可擴(kuò)展開發(fā)平臺(tái)。其中,AndroidApplicationProject用于安卓軟件的開發(fā)。AndroidApplicationProject各文件夾介紹放置所有Java代碼,主要MainActivity.javasrc主要有一個(gè)R.java文件,各資源相應(yīng)的資源idgen存放隨程序打包的文件assets編譯時(shí)自動(dòng)產(chǎn)生的文件,安裝包就在這個(gè)錄下Bin(binary)第三方Jar包放在該目錄下libs(library)存放圖片、布局、字符串等資源,布局放在layout目錄下Res(resource)123456Layout與Activity的關(guān)系A(chǔ)ctivity即活動(dòng),是一個(gè)應(yīng)用程序組件,提供一個(gè)屏幕,用戶可以用來交互為了完成某項(xiàng)任務(wù)。

Layout目錄下存放布局文件,定義了界面layout:

Activity:PART

TWO總體方案學(xué)校名稱:PART

THREE各模塊介紹學(xué)校名稱:指紋采集模塊指紋儀主板功能介紹指紋采集指紋注冊(cè)指紋比對(duì)特征值a環(huán)形b弓形c螺旋形主要功能主要功能功能實(shí)現(xiàn)指紋采集模塊主要功能如下:用戶注冊(cè)采集用戶的指紋用以比對(duì)指紋比對(duì)待比對(duì)指紋被錄入,比對(duì)成功,執(zhí)行開鎖指令。開鎖比對(duì)成功時(shí),執(zhí)行開鎖指令,否則開鎖失敗功能分塊介紹用戶注冊(cè)指紋儀的注冊(cè)模板(特征值)是通過三次特征值合成的調(diào)用商家提供的SDK中的函數(shù)FP_FeatureAndImageExtract獲取特征值并在界面顯示指紋信息

核心代碼:nResult=fingerprintJni.FP_FeatureAndImageExtract(feature,imageBuffer,TESOimageBuffer,ImageAttr);intresult=fingerprintJni.FP_FeatureTempletExtract(feature0,feature1,feature2,feature_templet);用戶注冊(cè)流程圖:功能分塊介紹指紋比對(duì)

將現(xiàn)有指紋的特征值與已有模板的特征值進(jìn)行比對(duì),比對(duì)得到的結(jié)果符合預(yù)設(shè),則比對(duì)成功,并執(zhí)行開鎖指令,否則開鎖失敗核心代碼:feature_templet=FPutil.readByteArrayFromFile(files[i]);score=fingerprintJni.FP_FeatureMatch(feature,feature_templet);if(score>xx){mhandler.sendMessage(msg); mhandler.sendEmptyMessage(2);}switch(msg.what){case2:showOKTip();}用戶比對(duì)流程圖功能分塊介紹開鎖我們?cè)O(shè)計(jì)了兩個(gè)界面分別表示開鎖成功和失敗比對(duì)成功--開鎖成功比對(duì)失敗--開鎖失敗核心代碼:privatevoidshowOKTip(){ViewlayoutTip=inflater.inflate(R.layout.layout_toast,(ViewGroup)findViewById(R.id.lay_tip));}//layout_toast是.xml文件lay_tip是整個(gè)布局的id名指紋管理模塊實(shí)現(xiàn)功能:1.用戶注冊(cè)2.查詢已注冊(cè)用戶3.刪除用戶4.直接開鎖5.處理從指紋采集模塊發(fā)送到指紋管理端收到的數(shù)據(jù)用戶注冊(cè)原理在指紋管理端輸入用戶名,點(diǎn)擊注冊(cè)按鈕,發(fā)送指令到指紋采集端,指紋采集端注冊(cè)完后,返回結(jié)果給指紋管理端,指紋管理端將該名字以文件的形式保存起來.格式發(fā)送數(shù)據(jù)的格式:操作類型|輸入的用戶名例如注冊(cè)的數(shù)據(jù)格式:0|輸入的用戶名.//需要發(fā)送的信息“0”代表的是注冊(cè)操作//輸入的用戶名:reg_name.getText().toString()Stringtext="0|"+reg_name.getText().toString();

//發(fā)送數(shù)據(jù)到指紋采集模塊os.write(text.getBytes("UTF-8"));判斷藍(lán)牙連接s未連接輸出:“請(qǐng)連接藍(lán)牙!”s判斷是否輸入用戶名s未輸入輸出:"請(qǐng)輸入待注冊(cè)用戶名!"發(fā)送數(shù)據(jù)到指紋采集模塊s查詢已注冊(cè)用戶原理查詢相應(yīng)目錄下的文件名(因?yàn)樽?cè)的時(shí)候是以文件的形式保存用戶名),通過textView將所有名字展示出來.//讀取文件夾下文件for(inti=0;i<files.length;i++){ if(i==files.length-1) user=user+files[i]; else user=user+files[i]+"\n";

}

//textView將名字展示出來,user是所有注冊(cè)用戶的名字search_name.setText(user);判斷查詢的用戶名是否為空s為空輸出“沒有已注冊(cè)用戶”展示文件s不為空讀取文件s刪除用戶原理指紋管理端發(fā)送指令給指紋采集模塊;指紋采集模塊刪除相應(yīng)的文件后,返回結(jié)果給指紋管理端,指紋管理端也將相應(yīng)的路徑下的文件刪除.(刪除全部則是刪除路徑下的所有文件.)

//發(fā)送相應(yīng)的指令給指紋采集模塊if(os!=null){Stringtext="";if(str.equals("*"))text="2|"+str;//類型2代表刪除全部用戶elsetext="1|"+str;//類型1刪除單個(gè)用戶

//發(fā)送到指紋采集模塊os.write(text.getBytes("UTF-8"));判斷刪除的用戶名是否存在s不存在輸出“沒有可刪除用戶”接收到返回信息并刪除信息s存在讀取文件并發(fā)送指令s直接開鎖原理指紋管理端發(fā)送相應(yīng)的指令到指紋采集模塊,指紋采集端提示開鎖界面.//發(fā)送相應(yīng)的指令給指紋采集模塊if(os!=null){ Stringtext="3|open"; os.write(text.getBytes("UTF-8"));}

判斷藍(lán)牙連接s沒有連接輸出“請(qǐng)連接藍(lán)牙!”刪除信息s發(fā)送指令到指紋采集模塊處理從指紋采集模塊發(fā)送到指紋管理端收到的數(shù)據(jù)返回的格式:操作類型|OK例如注冊(cè)的返回?cái)?shù)據(jù)格式:0|OK接收到信息s判斷指令類型執(zhí)行相應(yīng)操作s

//注冊(cè)用戶 case0//創(chuàng)建文件;以相應(yīng)的名字命名 file2.createNewFile(); Runtime.getRuntime().exec("sync");Toast.makeText(MainActivity.this,"注冊(cè)成功!",0).show( )Toast.makeText(MainActivity.this,"刪除成功!",0).show();//刪除某個(gè)用戶 case1//刪除文件file.delete();//刪除全部用戶 case2

//刪除目錄下所有的文件 for(inti=0;i<file.length;i++) { file[i].delete(); Toast.makeText(MainActivity.this,"刪除成功!",0).show(); }//直接開鎖 case3Toast.makeText(MainActivity.this,"開鎖成功!",0).show();藍(lán)牙傳輸模塊Android中藍(lán)牙開發(fā)步驟

1、檢查是否支持藍(lán)牙設(shè)備:我們通過BluetoothAdapter這個(gè)類去獲取適配器,如果沒有則不支持藍(lán)牙通信,也就是該設(shè)備沒有藍(lán)牙模塊。2、判斷藍(lán)牙可不可用(有沒有打開?打開藍(lán)牙)判斷藍(lán)牙有沒有打開的話,可以通過適配器的isEnable()方法來判斷。3、根據(jù)不同的角色,明確需求這里面的角色,只有兩種,要么是客戶端,要么是服務(wù)端。4、發(fā)數(shù)據(jù)和接收數(shù)據(jù)客戶端:可以通過getInputStream(),來獲取輸入流,用getOutputStream來接收輸出流。服務(wù)端:InputStreaminputStream=socket.getInputStream();OutputStreamoutputStream=socket.getOutputStream();PARTTHREE研究方法1、檢查是否支持藍(lán)牙設(shè)備

mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter==null){returnfalse;}else{returntrue;}}2、判斷藍(lán)牙是否可用即能否搜索到想進(jìn)行連接的設(shè)備的信息。直到我們建立bluetoothSocket連接之前,都要不斷操作它。

如果是客戶端,則要找到服務(wù)端,獲取服務(wù)端,再配對(duì)并連接。socket=mBluetoothDevice.createRfcommSocketToServiceRecord(UUID.fromString(UUID_STR));clientSocket.connect();//向服務(wù)端發(fā)送連接os=clientSocket.getOutputStream();//獲取到輸出流os,向外寫數(shù)據(jù)3、根據(jù)不同的角色,明確需求3、根據(jù)不同的角色,明確需求如果是服務(wù)端,就要被客戶端掃描到。打開藍(lán)牙,并等待連接。serverSocket=mBlueto

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論