Android 4.0中的蓝牙智能(4.0)/ GATT支持?

我正试图find使用现代Android智能手机的蓝牙4.0(AKA蓝牙智能)设备的方法,即 – HTC One V.

据我所知,由于API限制,即使在带有蓝牙4.0硬件的Android 4.0中也存在使用GATT配置文件的一些问题。

我看到摩托罗拉发布了自己的BT LE API,但不确定它是否适用于其他厂商。 我的目标是通过适当的硬件为所有智能手机提供普遍支持。

任何解决方案的建议都非常感谢。

阿列克谢

PS:是的,我看过用于HDP的Android API,但它似乎只用于’经典’蓝牙设备(不像BT LE那样低功耗)。

Solutions Collecting From Web of "Android 4.0中的蓝牙智能(4.0)/ GATT支持?"

遗憾的是,由于Android目前根本不支持蓝牙低功耗,因此没有Android原生GATT API。 这可能会在即将发布的Android版本中发生变化,但今天制造商却将第三方蓝牙堆栈与高通,Broadcom或CSR等厂商的低能耗支持相集成。 那些带有自己的API集合,显然限制了使用特定供应商堆栈的手机集的兼容性。 好消息是,在iOS或Windows 8等其他平台上有原生的GATT BLE API,并且这些API得到了很好的支持。 对于Android,我们将不得不等到Google决定将已在BLE上完成的Linux / BlueZ工作与Android集成。

经过一些研究,我只能这样说:

  • 摩托罗拉支持Broadcom开发专有API。 它似乎非常有限,因为它表示只支持现有的配置文件。 看看这里 。

  • 三星未能提供有关其BLE API的任何信息, 我可以validation该信息存在并称为samsung.bluetoothle 。 我实际上反编译了来自Google Play的一些使用SGSIII的BLEfunction的应用程序,并发现了Android的原生BT API中不存在的几种方法,并且他们的名字清楚地表明它们与BLE相关。 我试过通过javareflection使用它们,目前我正在研究开发库的可能性。 但到目前为止我已经进行的测试充其量只能获得成功。 在三星的开发者论坛上也有一个post,如果你有兴趣,我建议你在这里施压。

  • 谷歌在这方面几乎没有发表任何言论。 关于Galaxy Nexus中的这个问题有一个线索 ,你应该为很多人抱怨而出演。 可以在此处find最接近Google答案的内容。

[UPDATE]

三星还修改了几个Android的类,更具体地说:

  • BluetoothAdapter
  • BluetoothDevice

[UPDATE]

由于缺乏谷歌和三星的支持,我暂时搁置了这个问题,我将发布到目前为止我所学到的内容:

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提取新方法,但是当我这样做时,我会在这里发布它们。

SDK 18现在支持它。 文档在这里:

http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

在我的Nexus 4上进行测试会导致蓝牙堆栈崩溃。

自去年以来,HTC已经获得了HTL One X +,Droid DNA以及HTC One的BLE支持。 最初HTC BLE API是根据要求提供的,但现在可以在http://htcdev.com免费下载。

是的,Android API Level 18中来自Google的新标准Android BLE API即将推出(请参阅IOvideo的预览) – 但您可以以兼容的方式包装第三方API(HTC,Samsung等)以支持新的标准API因为所有API在支持GATT配置文件方面非常相似(类似于IOS)。

如发现的那样,4.3支持BLE,但它已经破坏了,尤其是在Nexus设备上。 在我看来,它尚未准备好投入生产。