写给自己的总结,不是教学文章,仅供参考。
先是蓝牙编程基础,参考之前写的这篇:
http://blog.csdn.net/xzongyuan/article/details/39319691
这篇主要总结BluetoothSocket的编程经验,因为在这块花了好几天去调试。
首先,Android的Setting app会自动连接已经Pair过的蓝牙。但是它连的只是之前连接过的协议。而且,如果你关了蓝牙,却没关APP,会出现很多奇怪现象。例如:通过Socket端口的OutputStream写数据,时会报错,写不入。原因如下:
/*如果出现写入错误,那肯定是写入了先前没有关闭的Socket。
* 这种情况出现在:
*关闭了蓝牙,但是APP还开着,这时Socket处于disConnect状态,但Socket及其对应的OutputStream都不为null。
*所以当你再次点击按钮,就会显示写入错误。这时,外围蓝牙设备状态是怎样的?当你关闭蓝牙,外围设备的Socket已经重设为null,
*没有对应先前的Socket了,即使你再次开蓝牙,系统自动连接,也只是连接了音频,而SPP还是需要重连的。
*重连的办法就是先close现在拥有的Scoket,然后自动重连。这时因为音频socket已经自动连上了,ConnectThread中
*连接A2DP的部分就不会有什么影响,只会完成新socket的连接。
*/
这样一个小问题,直接影响了App的人性化设计。