可以破解Android中的BLE外设模式支持吗?

时间:2013-12-17 21:20:25

标签: android bluetooth bluetooth-lowenergy ibeacon-android

此半径网络blog post讨论了Android设备如何用作iBeacons(AKA:BLE外设模式),即使设备的硬件支持BLE,因为Android没有API用于BLE外设模式。

注意:BLE表示低功耗蓝牙

阅读完本节后,我会提出一些愚蠢的建议

  

因为他们的SDK只支持中心角色,“广告”a   作为中央服务器的服务意味着只能安静地坐着   向另一个人透露(或“宣传”)其服务特征   已建立连接后,设备处于外围模式。   此连接建立需要另一个设备来实现   广播广告第一。三星的SDK不会这样做。

是否有可能以中央模式(三星手机)欺骗设备,使其认为外围模式下的其他设备已与其建立连接,然后获得中央模式“广告”。你可以通过伪造软件连接来欺骗手机吗?

可能是一个愚蠢的想法,可能是以中央模式欺骗设备,但“广告”不是BLE外围模式广告,并且不会像外围模式中的iBeacon。

我非常需要Android的BLE外设模式支持,目前我可以通过黑客攻击,希望Android最终支持这个功能集,BTW已经是feature request

1 个答案:

答案 0 :(得分:2)

我不认为这种技术会起作用,即使有可能“欺骗”Android认为它与另一个BLE设备有连接。虽然这个问题与三星BLE SDK有关,但我认为同样的答案适用于从Android 4.3开始发售的专用Android BLE API(android.bluetooth.BluetoothAdapter)。

让我们暂时搁置欺骗部分 - 即使Android实际上确实与另一个BLE设备有连接,你可以让它做广告吗?如果通过“广告”表示将其服务透露给其他设备,答案是肯定的。但是这种无线电传输是通过两个设备之间的专用信道进行的,并且无法通过BLE扫描以与iBeacon广告相同的方式进行拾取。它根本不是一个广告 - 这就是为什么我在博客文章中说三星文档有误导性。因此,如果您无法通过真实连接执行此操作,则欺骗连接也无效。

我对蓝牙堆栈的理解是有限的,但我认为扫描可以接收的实际无线电广播广告是由硬件BLE芯片组控制的,这意味着你必须能够访问蓝牙堆栈的部分,告诉它实现这一目标的硬件。我不认为三星BLE SDK或Android SDK中有任何故意允许这样做。

另一种方法是对BlueDroid堆栈进行直接JNI调用。我不确定Android权限是否允许这样做,或者甚至是否在BlueDroid堆栈中实现了广告。

更新:现在可以在Android 4.4.3和Android L中传输为pheripheral。See here.