我无法通过蓝牙连接两台

Android设备,只有在之前配对时才会发生.我正在运行一个作为服务器,另一个作为客户端.

以下是服务器端的一系列事项:

>检查各种蓝牙状态(适配器可用,已启用等).

>使用我选择的预定义UUID调用listenUsingRfcommWithServiceRecord().

>请求使设备可被发现

>由于可被发现异步发生,我调用accept()并等待传入​​连接.

在客户端:

>检查各种蓝牙状态(适配器可用,已启用等).

>对于getBondedDevices()中的每个设备,我将getName()与服务器名称进行比较.如果匹配,请跳至步骤6.

>开始BT发现

>对于每个已发现的设备(请注意,2a中的配对设备未显示在此处),请将设备名称与服务器名称进行比较.如果匹配,请转到步骤6.

>取消发现

>在从步骤2找到的设备上,使用服务器端使用的相同预定义UUID调用createRfcommSocketToServiceRecord().

>调用connect()并等待它返回连接的套接字.

当客户端和服务器之前从未配对时,上述过程对我来说非常好.但是,Android在设备列表中注册后,它们将不可避免地在connect()/ accept()阶段超时.

反射方法对我也不起作用.似乎connect()会立即返回,但是当我尝试getOutputStream()时,我得到一个异常.在accept()方面,它甚至没有注册有人试图连接.我认真地需要一些帮助或指针来让设备在之前配对后建立连接.

以下是有关设备的一些信息:

>我正在测试两台LG G2X手机上的服务器和客户端.

>它们都运行在Android 2.3.3上,对应于API级别10.

>再次,上述工作在我在设置中手动取消配对后工作.

提前谢谢你.我在Android和蓝牙方面大约有两周的时间,所以如果您发现任何缺失的步骤或最佳做法,请同时指出它们.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐