Android:wifi和蓝牙一起搜索
目前我有一个关于一起使用Android Wifi,蓝牙API的问题。
(请注意,这是应用程序开发中的问题,而不是普通的用户指南)
搜索设备'通过Wifi同时通过蓝牙搜索设备时遇到问题。
欲了解更多信息:
在wifi搜索上,我使用了Bonjour协议(苹果的Zeroconf实现,可以帮助定位本地网络设备提供的服务)。 我使用的Java工具是jmdns。 在搜索会话期间,我创建了一个MulticastLock以接收Bonjour的多播包。
在蓝牙搜索,我只需使用BluetoothAdapter和BroadcastReceiver一起获取蓝牙设备信息。
搜索结果出现问题时,只要同时执行两次以上搜索会话,Bonjour(Wifi)搜索的搜索结果就没有像仅在执行搜索时那样获得足够的搜索结果。
例如:当与蓝牙一起搜索时,Bonjour搜索仅获得1而不是2个设备的服务。 然而,蓝牙搜索结果总是足够的。
这被尝试了很多次,我肯定确认没有任何事情与网络的力量问题有关。
有没有人遇到过这个问题呢?
即使你的情况是关于使用Wifi和蓝牙,任何经验或客人都对我非常有帮助!
科伊。
我正在做与你正在做的很相似的事情。 我的经验不同之处在于:
两个可能的问题:
由于Android错误实现,多个Asynctasks不能并行执行 。 将我的Android API目标设置为最新的SDK后,我遇到了类似的错误(因为这是最佳实践)。 现在,在API13之后,Android Asynctask实现改变了,并且任务并没有被并行执行(所以我的wifi线程从未开始,例如,如果蓝牙线程正在运行!!!)。 解决方法是放置几行代码,使默认执行程序再次平行,或仅使用API11或更低版本作为目标版本。 查看这个线程的详细信息。
过度空气之间的干扰2 。 就我所知,蓝牙发现是您可以在蓝牙上执行的最昂贵的操作。 所以2.4GHz的多用途芯片可能会被空中淹没。 在内部它有WiFi和BT共存。 记住2.4GHz重叠的WiFi和蓝牙信道。 因此,我所说的在同一时间在同一主频率上进行发现可能不会那么好 。 你应该调查...