首页 文章

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

提问于
浏览
2

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

注意:BLE表示低功耗蓝牙

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

因为他们的SDK仅支持中心角色,所以将服务“广告”为中央服务器意味着安静地坐着,只有在已经 Build 连接之后才将其服务特性暴露(或“宣传”)到外围模式中的另一个设备 . 此连接 Build 需要另一个设备首先进行实际的无线电广告 . 三星的SDK不会这样做 .

是否有可能欺骗设备在中央模式(三星手机)认为外围模式下的另一台设备已 Build 连接,然后获得中央模式“广告” . 你可以通过伪造软件连接来欺骗手机吗?

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

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

1 回答

  • 2

    我不认为这种技术会起作用,即使有可能认为它与另一个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堆栈中实现了广告 .

    UPDATE: 现在可以在Android 4.4.3和Android L中作为pheripheral进行传输See here.

相关问题