SDK 18现在支持它。文件在这里:
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
在我的Nexus 4上进行测试会导致蓝牙堆栈崩溃。
正如所发现的那样,4.3支持BLE,但它已经破坏了,尤其是在Nexus设备上。 在我看来,它尚未准备好投入生产。
遗憾的是,由于Android目前根本不支持蓝牙低功耗,因此没有Android原生GATT API。这可能会在即将发布的Android版本中发生变化,但今天制造商却将第三方蓝牙堆栈与高通,Broadcom或CSR等厂商的低能耗支持相集成。那些带有自己的API集合,显然限制了与使用该特定供应商堆栈的电话集的兼容性。 好消息是,在iOS或Windows 8等其他平台上都有原生的GATT BLE API,并且这些API得到了很好的支持。对于Android,我们将不得不等到Google决定将已在BLE上完成的Linux / BlueZ工作与Android集成。
自去年以来,HTC已经获得了HTL One X +,Droid DNA以及HTC One的BLE支持。最初HTC BLE API是根据要求提供的,但现在可以免费下载了 http://htcdev.com 。
是的,Android API Level 18中来自Google的新标准Android BLE API即将推出(请参阅IO视频的预览) - 但您可以以兼容的方式包装第三方API(HTC,Samsung等)以支持新的标准API因为所有API在支持GATT配置文件方面非常相似(类似于IOS)。
BluetoothGatt api在andorid中可用
https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html
经过一些研究,我只能这样说:
摩托罗拉支持Broadcom开发专有API。它似乎非常有限,因为它表示只支持现有的配置文件。看看这个 这里 。
三星未能提供有关其BLE API的任何信息, 的 我可以验证存在,称为samsung.bluetoothle 强> 。我实际上反编译了Google Play中使用SGSIII的BLE功能的一些应用程序,并发现了Android的原生BT API中不存在的一些方法,并且他们的名字清楚地表明它们与BLE相关。我试过通过java反射使用它们,目前正在研究开发库的可能性。但到目前为止我已经进行的测试充其量只能获得成功。在三星的开发者论坛上也有一个帖子,我建议施压 这里 如果你有兴趣
谷歌在这方面几乎没有发表任何言论。有个 线 关于Galaxy Nexus中的这个问题,你应该出演,有很多人在抱怨。可以找到最接近Google答案的内容 这里 。
的 [UPDATE] 强>
三星还修改了几个Android的类,更具体地说:
BluetoothAdapter
BluetoothDevice
由于缺乏谷歌和三星的支持,我暂时把这个问题放在一边,我会发布到目前为止我学到的东西:
BluetoothAdapter 新方法:
public boolean android.bluetooth.BluetoothAdapter.leTestEnd() public boolean android.bluetooth.BluetoothAdapter.setAvStreaming(boolean) public boolean android.bluetooth.BluetoothAdapter.setScanLE(boolean) public void android.bluetooth.BluetoothAdapter.setScoPathChange(int) public boolean android.bluetooth.BluetoothAdapter.startLeDiscovery()
要使用它们,请执行以下操作:
BluetoothAdapter ba = new BluetoothAdapter(); Method starteLeDiscoveryMethod = null; starteLeDiscoveryMethod = ba.class.getMethod("startLeDiscovery"); starteLeDiscoveryMethod.invoke(ba);
注意:此方法特别有点像常规方法 startDiscovery() 但是,至少对我来说,它在5次中发现了BLE设备2。 和 的 记得 强> ,这只是为了 的 SGSIII 强> 。我还没有开始提取新的方法 BluetoothDevice 但是当我这样做时,我会把它们发布在这里。
startDiscovery()