我无法通过蓝牙连接两个Android设备,只有在配对之前才会发生此问题。我运行一个作为服务器,另一个作为客户端。Android蓝牙接受()/连接()与已配对的设备
这里的东西在服务器端的顺序:
检查各种蓝牙状态(可用适配器,启用等)。
用我选择的预定义的UUID调用listenUsingRfcommWithServiceRecord()。
请求使设备可发现
由于可发现异步发生,我调用accept()并等待传入连接。
在客户端:
检查各种蓝牙状态(适配器可用,启用等)。
getBondedDevices()中的每个设备,我将getName()与服务器名称进行比较。如果匹配,请跳到步骤6.
开始BT发现
对于每个发现的设备(请注意2a的配对设备不会在此显示),请将设备名称与服务器名称进行比较。如果存在匹配,则转到步骤6。
取消发现
在那个从步骤2中找到的装置,呼叫createRfcommSocketToServiceRecord()与已在服务器侧使用的相同的预先定义的UUID。
调用connect()并等待它返回连接的套接字。
当客户端和服务器之前从未配对时,上述过程对我来说工作得非常好。但是,在Android注册到设备列表中后,它们将不可避免地在connect()/ accept()阶段超时。
反射方法不为我工作的。看起来connect()会立即返回,但是当我尝试getOutputStream()时,我得到一个异常。在accept()方面,它甚至不记录有人试图连接。我认真需要一些帮助或指示让设备建立连接,一旦他们以前配对。
下面是有关设备的一些信息:
我测试服务器和客户端上的两个LG G2X手机。
他们都在Android 2.3.3上运行,这对应于API级别10.
同样,上述工作在我在设置中手动解除设备配对后运行。
谢谢你提前。我大约在2周内使用Android和蓝牙,因此如果您看到任何缺少的步骤或最佳做法,请将它们指出。
2012-02-14
o.c.