Android藍芽通訊(三) 藍芽通訊的實現

2021-08-09 22:45:48 字數 1936 閱讀 1046

在前兩篇部落格中大致介紹了藍芽相關的基礎知識,不了解的朋友可以檢視前兩篇部落格:

android藍芽通訊(一)————藍芽功能的相關許可權

android藍芽通訊(二)————藍芽的相關操作

在本篇部落格中我將介紹如何實現兩個藍芽裝置之間的通訊,藍芽的通訊類似於socket的通訊,在藍芽通訊中沒有絕對的裝置充當server角色,基本上就是傳送連線請求的裝置充當client角色,而server一般會在開闢乙個子執行緒,在子執行緒中不斷迴圈監測是否有client的請求連線,**如下:

private

class

acceptlistener

extends

thread

@override

public

void

run() }}

} catch (ioexception e)

}}

這是server在監聽client的連線請求,在**中乙個acceptlistener 執行緒只會監聽乙個請求連線,只要連線成功,server將不再監聽client的連線請求,**也不接簡潔,就不介紹了!

下面來看客戶端的連線請求,**如下:

private

class

connectthread

extends

thread catch (ioexception e)

}@override

public

void

run() catch (ioexception e)

i++;

try catch (interruptedexception e)

}while(connected && i<10);

connected(mclientsocket);

}}

我們通過bluetootdevice獲取乙個bluetoothsocket,通過這個socket傳送連線請求,在**中,我們嘗試10次連線,如果十次連線都沒有連線成功,也就不再連線了!連線成功之後,那麼這個socket我們就可以正常使用了,通過socket與伺服器端進行通訊!!

資訊傳送**:

private

class

datathread

extends

thread catch (ioexception e)

setstate(state_connected);

}@override

public

void

run()

bundle data = new bundle();

data.putstring("bluetooth_message",sb.tostring());

message m = message.obtain();

m.setdata(data);

m.what = mainactivity.update_bluetooth_message;

mhandler.sendmessage(m);

} catch (ioexception e) }}

public

void

write(byte buffer) catch (ioexception e)

}public

void

close()

if(mout != null)

if(min != null)

} catch (ioexception e)

}}

通過socket獲取outputstream和inputstream,通過使用輸入/輸出流進行訊息的傳遞!在使用read方法時,沒有有效的資料時會阻塞執行緒!!

實際測試可以進行簡單的通訊,完整**可以在github上獲取,有興趣的朋友可以關注我一下,有什麼問題大家相互討論一下!!!

android 藍芽 通訊 bluetooth

此例子基於 android demo android 的藍芽開發,雖然不多用,但有時還是會用到,android 對於藍芽開發從 2.0版本的 sdk才開始支援,而且模擬器不支援,測試需要兩部手機 由於公司用到了藍芽,所以學習了一下,也和大家分享一下!總體來說和網路 socket 很相似,監聽,連線,...

android 藍芽 通訊 bluetooth

此例子基於 android demo android 的藍芽開發,雖然不多用,但有時還是會用到,android 對於藍芽開發從 2.0版本的 sdk才開始支援,而且模擬器不支援,測試需要兩部手機 由於公司用到了藍芽,所以學習了一下,也和大家分享一下!總體來說和網路 socket 很相似,監聽,連線,...

android 藍芽通訊(一)

android name android.permission.bluetooth admin android name android.permission.bluetooth bluetoothadapter代表了移動裝置的本地的藍芽介面卡,通過該藍芽介面卡可以對藍芽進行基本操作,例如 啟動裝置...