在這裏只是說一下本身遇到的一些問題git
1.本次的任務是基於socket的2進制通訊,在這裏不得不先聲明下,要用字節流InputStream,OutputStream,若是你用了字符流,你就哭着去調試吧。
2.將socket通訊和其餘的分離,儘可能減少耦合度,方便調試,在這裏我是用了service,只是和其餘交互的時候比較麻煩。
3. 二進制之間的轉換,好比int---->byte,在這裏就貼上代碼
// 維度
gps[6] = (byte) ((longitude & 0xff000000) >> 24);
gps[7] = (byte) ((longitude & 0x00ff0000) >> 16);
gps[8] = (byte) ((longitude & 0x0000ff00) >> 8);
gps[9] = (byte) (longitude & 0x000000ff);
// 經度
gps[10] = (byte) ((latitude & 0xff000000) >> 24);
gps[11] = (byte) ((latitude & 0x00ff0000) >> 16);
gps[12] = (byte) ((latitude & 0x0000ff00) >> 8);
gps[13] = (byte) (latitude & 0x000000ff);
// 方向
gps[14] = (byte) ((bearing & 0x0000ff00) >> 8);
gps[15] = (byte) (bearing & 0x000000ff);
// 速度
gps[16] = (byte) ((speed & 0x0000ff00) >> 8);
gps[17] = (byte) (speed & 0x000000ff);
若是是byte----int---》int len = ((buff[0] & 0xFF) << 8) | (buff[1] & 0xFF);
若是是byte-------long--------->long t = byte[0]*256 + byte[1];我這裏是根據通訊協議的,這些網上均可以查到。
其餘的雷同。
4.存儲文件
4.1 小米無外置SD的時候
小米的內置路徑是"/data/sdcard/"
4.2 酷派無外置SD卡的時候
可已將臨時數據寫在包文件中/data/data/project/...
注意文件的讀寫權限
5.在GPS補傳的時候,須要將信息寫到文件中,有一個夠着函數頗有用FileInputStream in = new FileInputStream(file,true);這個事在文件的最後一個字符,繼續寫數據
其中socket通訊比較重要的是異常的捕捉,以及處理,因爲小米是定製手機,這個手機系統和其餘手機有不少的不一樣,特別是存儲文件的時候,第一次搞小米的都很蛋疼,還有一個就是注意內存的泄露,注意釋放內存