Android 使用BLE与客户机/服务器进行双向通信

Android 使用BLE与客户机/服务器进行双向通信,android,bluetooth-lowenergy,android-bluetooth,Android,Bluetooth Lowenergy,Android Bluetooth,假设我有两个用户A和B在各自的安卓设备上androidA和androidB。我希望双方都能打开一个应用程序,按下该应用程序中的一个按钮,启动BLE,然后让双方向对方发送各自的用户id。因此,androidA接收b和androidB接收a。我知道这可以通过回调实现,我可以通过单向通信实现。也就是说,我可以使用androidB作为外围设备,androidA作为中心设备,因此a接收b的用户id 双向沟通可能吗?如果不是,等待回调是否明智,一旦回调发生,让他们切换角色?在这方面,我只需要检查一下,以确保

假设我有两个用户
A
B
在各自的安卓设备上
androidA
androidB
。我希望双方都能打开一个应用程序,按下该应用程序中的一个按钮,启动BLE,然后让双方向对方发送各自的
用户id
。因此,
androidA
接收
b
androidB
接收
a
。我知道这可以通过回调实现,我可以通过单向通信实现。也就是说,我可以使用
androidB
作为外围设备,
androidA
作为中心设备,因此
a
接收
b
用户id


双向沟通可能吗?如果不是,等待回调是否明智,一旦回调发生,让他们切换角色?在这方面,我只需要检查一下,以确保当
androidA
由于在
androidB
范围内而得到回调时,
androidB
也会得到某种响应来采取行动。

实际上,在Android中双向通信是不可能的。只有它可以读取广告包。因此,您需要一些其他设备来传输BLE广告数据包,这些设备可以是estimote、radiusnetwork等公司提供的任何信标,也可以是iOS设备。检查此链接

然而,三星声称,其中一些设备可以配置为传输可屏蔽广告包的设备。检查此链接

检查本文档中的问题12.iBeacon兼容设备


希望这对您的问题有所帮助。

我发现上述答案部分不正确,基本上,这取决于您希望实现的通信类型、每个设备的操作系统等

从棒棒糖开始,我们有了一套新的API,允许我们在API文档中定义的两个设备之间进行广告和真正的双向通信。引用谷歌的话

截至2014年12月,只有Nexus 6和Nexus 9设备是已知的 具有支持蓝牙低能耗外围设备模式的固件

另外,在使用棒棒糖API构建时,请注意一些iBeacon兼容性库中概述的警告,并确保:​

BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
boolean isHardwareLCompat bluetoothAdapter != null
            && bluetoothAdapter.isOffloadedFilteringSupported()
            && bluetoothAdapter.isOffloadedScanBatchingSupported();
测试是否有真正的L支持。例如,htconem8developerEdition有一个新的API,但它不完全支持新的API


我希望这有助于

进一步搜索显示,我甚至可能无法将设备用作外围设备……但iBeacons无法发送唯一的信息。我钻研BLE而不是iBeacons(构建于BLE之上)的意义在于,我希望能够传递的不仅仅是像“嘿,我在这里!!!”这样的警报。尽管如此,我可能不得不悲哀地使用蓝牙。蓝牙很好,但如果我必须与设备配对,它将变得很麻烦,我将不得不探索不同的途径。是的,iBeacons无法发送,但基于中央外围设备和使用服务器,我认为你可以实现你的目标。然而,BLE比普通蓝牙更受欢迎。但数据传输并不依赖于网络。如果我能找到一种通过使用两个中央处理器以某种方式互相发送数据的方法,我会这样做。。。但是不能将安卓设备作为外围设备是没有帮助的。David,Central只连接到外围设备,所以安卓上的stock实现不会让两个Central互相对话。您是否考虑过使用class Bluetooth设置PAN或使用NFC?另外,当Android上可以安装外设时,您将无法(快速)发送大量数据。发送130kb的信息需要60秒到15分钟(基于连接间隔、每个连接间隔允许的数据包等)。