實現android藍芽聊天通訊
用到的原理:通過利用藍芽socket通訊的方式實現兩個android裝置的訊息傳輸。
功能流程:
1.首先搜尋可以進行藍芽配對的裝置
2.請求藍芽配對建立裝置之間的連線
3.連線成功後,實現裝置之間訊息傳輸
藍芽配對部分的實現
註冊廣播,以便找到可配對的藍芽裝置後傳送廣播。包括開始搜尋,搜尋結束,找到裝置三個廣播。
intentfilter filter =
newintentfilter
(bluetoothdevice.action_found)
;registerreceiver
(mreceiver, filter)
; filter =
newintentfilter
(bluetoothadapter.action_discovery_finished)
;registerreceiver
(mreceiver, filter)
; mbtadapter = bluetoothadapter.
getdefaultadapter()
; set
paireddevices = mbtadapter.
getbondeddevices()
;if(paireddevices.
size()
>0)
}else
開啟對其他藍芽裝置的搜尋。
mbtadapter.
startdiscovery()
;
定義廣播接收者,處理掃瞄藍芽裝置的結果。
private
final broadcastreceiver mreceiver =
newbroadcastreceiver()
}else
if(bluetoothadapter.action_discovery_finished.
equals
(action))}
}};
服務類的實現
監聽執行緒,準備接收新的連線
// 建立監聽執行緒,準備接受新連線。使用阻塞方式,呼叫 bluetoothserversocket.accept()
private
class
acceptthread
extends
thread
catch
(ioexception e)
mmserversocket = tmp;
}@override
public
void
run(
)catch
(ioexception e)
if(socket != null)
catch
(ioexception e)
break;}
}}}}
public
void
cancel()
catch
(ioexception e)
}}
連線後一直執行的執行緒,利用inputstream和outputstream接收和傳送新的訊息
private
class
connectedthread
extends
thread
catch
(ioexception e)
mminstream = tmpin;
mmoutstream = tmpout;
}@override
public
void
run(
)catch
(ioexception e)}}
public
void
write
(byte
buffer)
catch
(ioexception e)
}public
void
cancel()
catch
(ioexception e)
}}
連線時,用於處理連線裝置發出藍芽連線的請求
private
class
connectthread
extends
thread
catch
(ioexception e)
mmsocket = tmp;
}@override
public
void
run(
)catch
(ioexception e)
catch
(ioexception e2)
chatservice.
this
.start()
;return;}
synchronized
(chatservice.
this
)connected
(mmsocket, mmdevice);}
public
void
cancel()
catch
(ioexception e)
}}
配對完傳送訊息
private
void
sendmessage
(string message)
if(message.
length()
>0)
}
所必要的許可權
Android藍芽通訊(三) 藍芽通訊的實現
在前兩篇部落格中大致介紹了藍芽相關的基礎知識,不了解的朋友可以檢視前兩篇部落格 android藍芽通訊 一 藍芽功能的相關許可權 android藍芽通訊 二 藍芽的相關操作 在本篇部落格中我將介紹如何實現兩個藍芽裝置之間的通訊,藍芽的通訊類似於socket的通訊,在藍芽通訊中沒有絕對的裝置充當ser...
android 藍芽 通訊 bluetooth
此例子基於 android demo android 的藍芽開發,雖然不多用,但有時還是會用到,android 對於藍芽開發從 2.0版本的 sdk才開始支援,而且模擬器不支援,測試需要兩部手機 由於公司用到了藍芽,所以學習了一下,也和大家分享一下!總體來說和網路 socket 很相似,監聽,連線,...
android 藍芽 通訊 bluetooth
此例子基於 android demo android 的藍芽開發,雖然不多用,但有時還是會用到,android 對於藍芽開發從 2.0版本的 sdk才開始支援,而且模擬器不支援,測試需要兩部手機 由於公司用到了藍芽,所以學習了一下,也和大家分享一下!總體來說和網路 socket 很相似,監聽,連線,...