做的一个Android程序,需要调用手机上的BlueTooth与一个蓝牙模块连接,以接受北斗模块的数据并解析。
本来在一个开发手机HTC Desire HD A9191(Android 2.3.5)上可以连接成功,并且可以接收到数据,软件没有问题,但是在自己的手机Lenovo
S899t(Android 4.0.3)上却一直连接不成功,查看Error 报错提示如下:
java.io.IOException: Connection refused,后来在网上查看到原因:
sdk 2.3以上的用createRfcommSocketToServiceRecord方法连接不上,须采用createInsecureRfcommSocketToServiceRecord方法(此方法需sdk2.3以上才有)。故需要将程序的SDK版本改至2.3以上。
代码改之后:
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); int sdk = Integer.parseInt(Build.VERSION.SDK); if(sdk >= 10){ //sdk 2.3以上需要用此方法连接,否则连接不上,会报 java.io.IOException: Connection refused 异常 socket = device.createInsecureRfcommSocketToServiceRecord(uuid); }else { socket = device.createRfcommSocketToServiceRecord(uuid); }
参考:http://blog.csdn.net/zshq280017423/article/details/7645622