我正试图找到使用现代Android智能手机的蓝牙4.0(AKA蓝牙智能)设备的方法,即 - HTC One V.
据我了解,由于API限制,即使在Android 4.0中使用蓝牙4.0硬件,也存在使用GATT配置文件的一些问题。
我看到摩托罗拉发布了自己的BT LE API,但不确定它是否适用于其他厂商。 我的目标是通过适当的硬件为所有智能手机提供普遍支持。
任何有关解决方案的建议都受到高度赞赏。
阿列克谢
PS:是的,我看过用于HDP的Android API,但它似乎只用于'经典'蓝牙设备(不像BT LE那样低功耗)。答案 0 :(得分:26)
不幸的是,由于Android目前根本不支持蓝牙低功耗,因此没有Android原生GATT API。这可能会在即将发布的Android版本中发生变化,但今天制造商却将第三方蓝牙堆栈与高通,Broadcom或CSR等厂商的低能耗支持相集成。那些带有自己的API集合,显然限制了与使用该特定供应商堆栈的电话集的兼容性。 好消息是,在iOS或Windows 8等其他平台上都有原生的GATT BLE API,并且这些API得到了很好的支持。对于Android,我们将不得不等到Google决定将已在BLE上完成的Linux / BlueZ工作与Android集成。
答案 1 :(得分:13)
经过一番研究后我才能说出来:
摩托罗拉支持Broadcom开发专有API。它似乎非常有限,因为它表示只支持现有的配置文件。请查看here。
三星未能提供有关其BLE API的任何信息,我可以验证的存在,称为samsung.bluetoothle 。我实际上反编译了Google Play中使用SGSIII的BLE功能的一些应用程序,并发现了Android的原生BT API中不存在的一些方法,并且他们的名字清楚地表明它们与BLE相关。我试过通过java反射使用它们,目前正在研究开发库的可能性。但到目前为止我已经进行的测试充其量只能获得成功。三星的开发者论坛上还有一个帖子,如果你有兴趣,我建议你施压here。
谷歌在这方面几乎没有发表任何言论。在Galaxy Nexus中有一个关于这个问题的thread,你应该为很多人抱怨。可以找到最接近Google答案的内容here。
<强> [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
中提取新方法,但是当我这样做时,我会在这里发布它们。
答案 2 :(得分:2)
SDK 18现在支持它。文档在这里:
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
在我的Nexus 4上进行测试会使蓝牙堆崩溃。
答案 3 :(得分:1)
是的,Android API Level 18中来自Google的新标准Android BLE API即将推出(请参阅IO视频的预览) - 但您可以以兼容的方式包装第三方API(HTC,Samsung等)以支持新标准API,因为所有API在支持GATT配置文件方面非常相似(类似于IOS)。
答案 4 :(得分:0)
BluetoothGatt api在android中可用
https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html
答案 5 :(得分:0)
正如所发现的那样,4.3支持BLE,但它已经破坏了,尤其是在Nexus设备上。 在我看来,它还没有为生产做好准备。