Android藍芽接收分包資料

2021-09-29 00:09:59 字數 1598 閱讀 8424

最近在開發乙個安卓和藍芽光譜儀裝置通訊的程式,用的是傳統藍芽,下位機藍芽傳送的光譜資料比較大,分成了15個包傳送。

其中14個包大小290個byte,最後1個包大於100個byte,而且一整個資料報由資料頭、資料長度、資料、資料尾這幾個部分組成,所以接受的時候做了乙個判斷,定義了乙個大容量陣列,用笨方法迴圈拼接。

/**

* 用於接收藍芽傳入的byte並拼接包

* 同時傳送廣播

*/public

void

run(

)//較短的資料直接輸出,不用拼包

//大的資料分為三種情況拼包,開頭的、中間的、末尾的

byte

tmp=

newbyte

[count]

; bytes = mminstream.

read

(tmp);if

(tmp[0]

==(byte

)0xbd

&&tmp[count-1]

==(byte

)0xbe

) log.e(

"gotmsg"

,"message size 讀取到位元組"

+ bytes);}

else

if(tmp[0]

==(byte

)0xbd

&&tmp[count-1]

!=(byte

)0xbe

)continue;}

else

if(tmp[0]

!=(byte

)0xbd

&&tmp[count-1]

==(byte

)0xbe

) bytes=

5000

; message message = mhandler.

obtainmessage

(constant.msg_got_data, longbuffer)

; mhandler.

sendmessage

(message)

; log.e(

"gotmsg"

,"message size 讀取到位元組應該是"

+ bytes)

; longbuffer=

newbyte

[5000];

times=1;

}else

if(tmp[0]

!=(byte

)0xbd

&&tmp[count-1]

!=(byte

)0xbe

) times++

;continue;}

}catch

(ioexception e)

}}

android中資料的分包

之前在開發中,遇到了乙個問題,就是在專案assets下有乙個apk需要在應用啟動時安裝到裝置中,實現的思路是需要首先將apk拷貝到sdcard中,然後執行安裝操作,還有乙個問題就是專案中的資料庫也需要放在sdcard中,這個apk大約有5m左右,我的資料庫大約有30m左右,接下來我就按照普通的i o...

c 讀藍芽資料 C 如何接收藍芽字元資料

公司買了個藍芽吊秤,想將重量傳到系統,我在網上找了一些資料,有以下一段 裝置是之前與藍芽匹配了的,可以找到 藍芽guid也是正確的 但在接收資料時,在這句 停住了,也不報其它錯誤 bluetoothclient bluetoothlistener.acceptbluetoothclient 應該是不...

Android分包方案multidex

我們的demo圖如下,我們根據該圖和dex檔案反編譯的結果分析分包情況。或者這樣解決 一些在二級dex載入之前,可能會被呼叫到的類 比如靜態變數的類 需要放在主dex中.否則會classnotfounderror.通過修改gradle,可以顯式的把一些類放在main dex中.afterevalua...