关于Android蓝牙中Service discove…

最有一段时间没有update了,一是因为近期末了,有些考试要准备,二是在尝试为女朋友写个小游戏作为元旦礼物,所以花了更多时间去看一些关于android游戏开发的书。技术类的书籍,我宁愿看英文原版的,虽然都是又厚又难读,但是我觉得有些中文翻译确实会感觉很奇怪、生硬,而且很多书都没有中文翻译。

前段时间实验室项目中的蓝牙连接问题,因为无论是我自己写的程序或者是论坛、安卓市场上比较成熟的软件都无法连接到我们的蓝牙模块,所以在BluetoothSSP作者李坚的介绍下在网上订购了另一款蓝牙模块,现在已经能够连上,虽然还有一点点问题,但是就在刚才,连接成功了,数据能够进行传输,虽然这还只是第一步,但是超级激动、以及巨大的成就感!

在程序调试过程中,DDMS中还曾看到过一个Service discovery failed的问题。在网上找了很久,印象最深刻的是CSDN上的一篇文章,这位兄弟的解决方法很复杂,所以让我印象深刻。或许因为太复杂了,所以我没有理解好,所以我没能用他的问题解决问题。

后来我找android自带的Bluetooth sample来看,按照sample中类似的方法,终于解决了bug。具体如下:

//我原来的代码:

BluetoothSocket socket;

try {
BluetoothDevice device = foundDevices.get(params[0]);
socket = device.createRfcommSocketToServiceRecord(uuid);
socket.connect();
} catch (IOException e) {
Log.d("BLUETOOTH_CLIENT", e.getMessage());
}
return null;
}

//参照sample中的例子,修改后的代码:

BluetoothDevice device = foundDevices.get(params[0]);
BluetoothSocket tmp = null;

try {
tmp = device.createRfcommSocketToServiceRecord(uuid); //应该是这里导致Service discovery failed问题

} catch (IOException e) {
Log.d("BLUETOOTH_CLIENT", e.getMessage());
}
socket = tmp;
// return null;
try{
socket.connect();
} catch (IOException e) {
Log.d("BLUETOOTH_CLIENT", e.getMessage());
}
return null;
}

只是这样的小改动,竟然就能够实现连接正常,有时候bug的事真是很无奈。share出来仅供有类似问题的兄弟参考。

这周过得真快,一下子就到周四了,法语落下好几天了,要赶上,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值