在这里只是说一下本身遇到的一些问题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通讯比较重要的是异常的捕捉,以及处理,因为小米是定制手机,这个手机系统和其余手机有不少的不一样,特别是存储文件的时候,第一次搞小米的都很蛋疼,还有一个就是注意内存的泄露,注意释放内存