Android藍芽近距離通訊

2021-10-06 17:24:29 字數 3644 閱讀 4940

1.許可權

在androidmanifest.xml中申請許可權:

2.介面3.**

devicelist:藍芽搜尋裝置

藍芽搜尋主要是要實現乙個broadcastreceiver 廣播接收者。

首先註冊廣播,新增藍芽裝置action_found。

之後就是廣播接收,開啟廣播搜尋之後,如果找到裝置,接受到actoin_found的資訊,把bluetoothdevice.extra_device中的搜尋資訊,顯示到螢幕上。如果沒有找到裝置,discovery_finished,結束搜尋。

public

void

onreceive

(context context, intent intent)

}else

if(bluetoothadapter.action_discovery_finished

.equals

(action))}

}

chatservice:藍芽連線

建立監聽執行緒,準備接受新連線。使用阻塞方式,使用bluetoothserversocket accept函式,收到連線,則保持此連線傳給 connectedthread

private

class

acceptthread

extends

thread

catch

(ioexception e)

mmserversocket = tmp;

}public

void

run(

)catch

(ioexception e)

if(socket != null)

catch

(ioexception e)}}

}public

void

cancel()

catch

(ioexception e)

}}

createrfcommsockettoservicerecord 根據uuid 發起連線,連線成功則將連線傳入connectedthread

private

class

connectthread

extends

thread

catch

(ioexception e)

mmsocket = tmp;

}public

void

run(

)catch

(ioexception e)

catch

(ioexception e2)

return;}

synchronized

(chatservice.

this

)connected

(mmsocket,mmdevice);}

}

管理連線好的雙方,進行資料通訊。輸入輸出流,接收資料,傳送資料

private

class

connectedthread

extends

thread

catch

(ioexception e)

mminstream = tmpin;

mmoutstream = tmpout;

}public

void

run(

)catch

(ioexception e)}}

public

void

write

(byte

buffer)

catch

(ioexception e)

mhandler.

obtainmessage

(bluetoothchat.message_write,buffer)

.sendtotarget()

;}public

void

cancel()

catch

(ioexception e)

}}

bluetoothchat:藍芽聊天

使用handler物件在ui主線程與子執行緒之間傳遞訊息

private

final handler mhandler=

newhandler()

break

;case message_write:

byte

writebuf =

(byte

)msg.obj;

string writemessage=

newstring

(writebuf)

; mconversationarrayadapter.

add(

"我: "

+ writemessage)

;break

;case message_read:

byte

readbuf =

(byte

)msg.obj;

string readmessage=

newstring

(readbuf,

0,msg.arg1)

; mconversationarrayadapter.

add(mconnecteddevicename+

": "

+readmessage)

;break

;case message_device_name:

mconnecteddevicename=msg.

getdata()

.getstring

(device_name)

; toast.

maketext((

),"鏈結到"

+mconnecteddevicename,toast.length_short)

.show()

;break

;case message_toast:

toast.

maketext((

),msg.

getdata()

.getstring

(toast)

,toast.length_short)

.show()

;break;}}};

單詞最近距離

有一篇文章內含多個單詞,現給定兩個單詞,請設計乙個高效演算法,找出文中這兩個單詞的最短距離 即最少相隔的單詞數,也就是兩個單詞在文章中位置的差的絕對值 給定乙個string陣列article,代表所給文章,同時給定文章的單詞數n和待查詢的兩個單詞x和y。請返回兩個單詞的最短距離。保證兩個單詞均在文中...

附近距離計算

之前寫附近資訊的時候需要在資料庫專門制定合適的演算法,在網上也看了各位前輩的一些sql。不過總覺得那些sql執行的結果不是很滿意,精度不是很高,取得的資料與目的有差異。所以自己寫了乙個,今天在這裡分享出來。select abs lng blng 111 abs lat blat 111 abs co...

無線感測網 近距離通訊技術

在通訊和資訊科技的不斷發展,近距離的無線通訊技術 只要通訊收發雙方通過無線電波傳輸資訊且傳輸距離限制在較短範圍 幾十公尺 以內,就可稱為短距離無線通訊。目前我們所看到的短距離無線技術都有其立足的特點,或基於傳輸速度 距離 耗電量的特殊要求 或著眼於功能的擴充性 或符合某些單一應用的特別要求 或建立競...