自从最近发布Android 5.0Lollipop以来,我在Nexus 4设备中体验到了蓝牙低能耗API的糟糕性能。在之前的操作系统版本(Android 4.4.4 Kit-Kat)中,它的工作非常有魅力,而在5.0上运行的同一个应用程序具有以下行为:
>
它通常不会检测到来自外围设备的任何广告包。
外围设备的ADVERTISING_INTERVAL为20ms,因此应用程序应该在最坏的情况下在60ms内检测到至少一个广告。我尝试过BluetoothLeScanner
(具有SCAN_MODE_LOW_LATENCY设置)不使用已弃用的mBluetoothAdapter.startLeScan(mLeScanCallback)
但没有成功。
当它这样做时,当我尝试连接到GATT服务器时,它很少这样做。
我已经用BLE嗅探器检查过,CONNECTION\u请求数据包甚至没有发送到外围设备。
似乎我不是唯一一个出现这种错误的人,其他一些用户也发布了类似的问题。有人知道发生了什么事吗?
--
更新1:(2014年12月17日)
我还测试了相同的应用程序,其中Nexus 5运行Lollipop,它很少连接到GATT服务器。每次我发送连接请求时,它都不会发送,因为外围设备没有收到数据包。在将Nexus 5升级为Lollipop之前,它在Kit Kat 4.4.4上运行得非常好。
更新2: (2014/12/17)
Android 5.0.1根本没有解决问题。
更新3: (2015/04/23)
Android 5.1也不能解决这个问题。今天我有机会在三星Galaxy S4上测试了Android 5.0.1,它运行良好。我还使用新的Android 5.1安装在Nexus 5上进行了测试,它也运行良好。问题仍然存在于Nexus 4中。他们在Android 5.0和后续版本的固件上做了一些奇怪的事情,打破了Android 4.4.4与蓝牙API的完美兼容性。
我想我可能已经找到了答案
我也有同样的问题,升级到Lollipop后需要2-5分钟才能连接到我的设备,这在升级之前需要5秒钟。
修复:旧代码:
mBluetoothGatt = mBluetoothDevice.connectGatt(this, true, mGattCallbackSync);
新代码:
<代码>mBluetoothGatt=mBluetoothDevice。connectGatt(this,false,mGattCallbackSync);
我刚刚将自动连接参数改为false。现在连接需要5秒钟。
我希望这对你有用。
重新编辑得到更清晰的答案
>
上周升级到5.0后,我在bt上遇到了一些问题。也许你可以在“设置”中的应用程序中停止bt进程,它可能会重置所有设置,就像这样:
设置-
众所周知,在某些情况下,在实例化这些服务时关闭这些服务可以解决此问题。如果更清楚,您也可以点击此链接:
http://www.gottabemobile.com/2014/12/01/nexus-lollipop-problems-fixes/
就我而言,我也不是蓝牙专家,但经过多次试验,我确实解决了这个问题。我发现从电脑上拆下bt加密狗也有帮助。
通常不建议在不检查蓝牙能力的情况下这么快升级。据我所知,bt在每次升级时都会出现问题
祝你好运。如果这个答案还不够,我希望你能从其他人那里得到帮助。
jd.readBLECharacteristicValue(Object object) 读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持 read 才可以成功调用。 参数名 类型 默认值 必填 说明 deviceId string 是 蓝牙设备 id serviceId string 是 蓝牙特征值对应服务的 uuid characteristicId string 是 蓝牙
最近,我买了一台iBeacon设备,打算创建Android应用程序,以便识别和使用它。我是一个在Android应用程序中使用蓝牙的新手,有很多事情我还不知道。在互联网和本论坛中,我找到了使用Radius Networks的Android IBeacon库的建议,但是,唉,现在它不再可用了: https://github.com/RadiusNetworks/android-ibeacon-serv
每当设备断开连接时,我确保对BluetoothGatt对象调用close()并将其设置为null。有什么见解吗? 编辑: 日志转储:对于这些日志,我将我的电话根目录化,并提高了/etc/bluetooth/bt_stack.conf中相关项的跟踪级别 成功连接-重新启动手机并安装应用程序后的第一次尝试。我能够连接,发现所有的服务/特性,并读/写。
我得到一些信息,Android设备现在可以在蓝牙低能耗(BLE)外围模式下运行。应用程序可以使用此功能从Android L中的New向附近的设备广播它们的存在。 我已经全部配置好了(即蓝牙LE广告和广告数据的设置要在广告包中进行广告),当我开始发送时,我发现我无法监听传入的连接。谁能帮我? 我是一个基于l-开发者-预览-参考的API(Added Package:android.bluetooth.
我目前正在开发一个应用程序,将使用蓝牙低能耗。 我正在使用以下链接, http://developer.android.com/samples/BluetoothLeGatt/src/com.example.android.bluetoothlegatt/DeviceScanActivity.html 我无法扫描周围的BLE设备。 要扫描设备,
问题内容: 我正在编写一个Android BLE应用程序,并且试图获得某个特性的权限。我已经设法通过character.getProperties()获取特征属性,并且它返回非零值,但是,即使我确定特征具有PERMISSION_WRITE_ENCRYPTED_MITM(0x00000040,当我使用getPermission()方法时,它也会返回0。 )。 这是一个代码片段 难道我做错了什么?是否