赞
踩
本来想开发一款蓝牙软件,因为网上已经有各种教程,所以本来是没必要继续开一编文章来说些什么的,但是亲自体验过后发现,实际上Android与Android之间的蓝牙通讯实在有不少坑,唯有自己总结一下并记录下来
//采用端口进行链接,这里值得注意的是,网上基本上第二个参数都表示1,其实这个数值可以是1-30,表示通过1-30之间的某个端口来进行连接
Device.getClass().getMethod("createRfcommSocket", new Class[]{int.class}); method.invoke(device, 1);
如果手机之间通过蓝牙通信,那么必须服务器先以UUID来创建,客户端才可以用createRfcommSocketToServiceRecord…..UUID来链接获得socket,否则永远timeout,除非使用上述的端口连接,既然使用蓝牙端口连接,那么同样的道理服务端也应使用端口创建
常用的服务器名:bpssp
手机作为服务器的话,soctet.getInputStream()
会累积所有未接收的数据流缓存
蓝牙多机链接的话,允许6-8台机器对服务器进行连接,此时服务器应存在一条线程专门负责接收其他机器的链接信息,另一条线程负责处理对应机器的业务
class OtherServer implements Runnable {
@Override
public void run() {
try {
createLog("createing server");
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
serverSoctet = bluetoothAdapter.listenUsingRfcommWithServiceRecord("btspp", UUID.fromString(uuid));
while (true) {
createLog("waiting connection");
BluetoothSocket soctet = serverSoctet.accept();
new Thread(new ServerThread(soctet)).start();
}
} catch (Exception e) {
}
}
}

亲测4.0的蓝牙传输距离在无障碍的环境下,可以达到数十米
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。