最近在開發乙個安卓和藍芽光譜儀裝置通訊的程式,用的是傳統藍芽,下位機藍芽傳送的光譜資料比較大,分成了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...