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