Android:wifi&蓝牙一起搜索

时间:2013-01-03 09:40:13

标签: android bluetooth wifi bonjour

目前我有一个关于一起使用Android Wifi,蓝牙API的问题。

(请注意,它在应用开发方面存在问题,而不是普通用户指南)

搜索设备时出现问题'通过蓝牙搜索设备同时通过Wifi提供服务。

有关详细信息:

  • 在wifi搜索中,我使用Bonjour协议(Apple的Zeroconf实现,它可以帮助定位本地网络设备提供的服务)。我使用的Java工具是jmdns。在搜索会话期间,我创建了一个MulticastLock以接收Bonjour的多播包。

  • 在蓝牙搜索中,我只需将BluetoothAdapter与BroadcastReceiver一起使用即可获取蓝牙设备信息。

搜索结果出现问题,只要同时执行上述两个搜索会话,Bonjour(Wifi)搜索的mysearch结果就不会像执行时那样得到。

Ex: Bonjour搜索只获得1而不是2个设备'与蓝牙一起搜索时的服务。然而,蓝牙搜索结果总是足够的。

这已尝试多次,我肯定确认没有任何与网络'相关的内容。力量问题。

有没有人遇到过这个问题?

即使您的情况是关于将Wifi与蓝牙一起使用,任何经验或客人对我都非常有帮助!

胡维。

1 个答案:

答案 0 :(得分:0)

我正在做你正在做的几乎相同的事情。 我的经历不同:

  • 我不使用蓝牙发现,因为我知道我想要连接的设备。我只是发起客户端连接。
  • 我使用Asynctasks进行后台操作。你在用什么?

两个可能的问题:

  1. 由于Android执行错误,多个Asynctasks没有并行执行。在将我的Android API目标设置为最新的SDK之后,我遇到了类似的错误(这是最佳做法)。现在,在API13之后,Android Asynctask实现发生了变化,并且任务不再并行执行(因此我的wifi线程从未启动过,例如,如果蓝牙线程正在运行!!!)。修复方法是放置几行代码以使默认执行程序再次并行,或者只使用API​​11或更低版本作为目标版本。有关详细信息,请参阅此thread

  2. OverTheAir之间的干扰。据我所知,蓝牙发现是您可以对蓝牙进行的最昂贵的操作。因此,2.4GHz多用途芯片可能会在空中淹没。在内部,它与WiFi和BT共存。请记住2.4GHz重叠的WiFi和蓝牙通道。所以我所说的同时在相同的主频率上进行发现可能不会起作用那么好。你应该调查一下......