草庐IT

bluetooth-gatt

全部标签

android - 蓝牙 GATT - onServicesDiscovered(BluetoothGatt gatt, int status) 不包含所有服务

我有代码连接到广告自定义服务的自定义BLE服务器设备,然后尝试发现它提供的所有服务。代码适用于Android5.1的Nexus5三星SM-T320Android4.4.2ZTEBladeVec4GAndroid4.4.2代码不工作三星SM-T360Android4.4.4三星GT-I9195Android4.4.2在出现故障的设备上,它通常会发现一个(两个)设备上的所有BLE服务,这些设备通告相同的BLE服务。重新启动Android设备和/或摆弄wifi/bt使其发现其他BLE设备上的所有服务,但不是第一个(!)。有人知道三星设备关于BLE服务发现的一个突出错误吗?拥有所有服务:04-

android - Android 蓝牙 Gatt 服务器/客户端同时连接的问题

我正在努力创建一个应用程序,它可以同时充当gatt连接的客户端和服务器,但每次运行服务器时我都会收到未知状态和断开连接状态,同时它作为客户端运行。这是现在的过程:1)启动一台手机作为服务器(Phone1)2)启动另一部手机作为客户端(Phone2)3)将Phone2连接到Phone1并接收有关当前时间的通知更新。4)在Phone2上启动服务器gatt服务器,这是我的蓝牙gatt回调的未知状态。首先它断开Phone2与Phone1的连接(断开gatt连接),然后Phone2的BluetoothGattCallBack的onConnectionStateChange返回断开连接状态和状态代

安卓 2.1 : Bluetooth Encryption

Android设备和笔记本电脑之间的蓝牙连接是否默认加密?蓝牙服务器在安卓智能手机上启动,因此,连接由笔记本电脑发起。谢谢,彼得 最佳答案 这个问题的答案是肯定的......以及为什么可以在这里看到评论:BluetoothSecure?如果您真的想深入了解蓝牙安全性,请访问HowStuffWorks 关于安卓2.1:BluetoothEncryption,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

android - 使用绑定(bind)设备时的 gatt.writeDescriptor 错误状态回调

我正在开发一个需要自动连接到蓝牙外设的应用。我有一个执行以下操作的粘性服务:在绑定(bind)设备中寻找所需的设备如果设备(第一次)没有正常运行,则扫描它并使用device.createBond()绑定(bind)它,通过收听ACTION_BOND_STATE_CHANGED广播等待绑定(bind)完成使用device.connectGatt(ctx,true,callback)连接到它等待带有连接状态的onConnectionStateChange回调使用gatt.discoverServices()开始服务发现等待onServicesDiscoverd回调通过使用gatt.writ

android - 连接到无法在 Samsung Galaxy Core Prime (Android 5.1.1) 上运行的 gatt 服务器

我有一个BLE应用程序可以在Android6.0及更高版本的设备上运行,但我在SamsungGalaxyCorePrime(Android5.1.1)上遇到问题。调用connectGatt后没有任何反应,回调仅接收断开连接状态。我已经剪下了合适的代码:BluetoothManagerbluetoothManager=(BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);BluetoothAdapterbluetoothAdapter=bluetoothManager.getAdapter();finalBluetoo

java - 如何提高 Android 低功耗蓝牙 GATT 吞吐量?

我在使用AndroidBLEAPI进行多次连续GATT读取时遇到性能问题。我可以在大约5或6秒内每秒读取大约10个数据包。在我读取~65的数据包后,吞吐量下降到每1.5秒大约1个数据包。我做了几次测试,似乎内部BLE变得非常慢。在这种情况下,从JavaGATT读取调用外围设备(外围设备没有瓶颈)大约需要750毫秒,返回JavaAPI回调大约需要750毫秒。在我看来,BLE堆栈实现很差,因为当我断开与设备的连接(可能清理了一些资源)然后重新连接回来时,我可以重现同样的问题:第一次读取大约10个数据包/秒仅5或6秒(~65个数据包读取),然后变慢。我用GalaxyS4和Nexus4设备对其

android - 多次重新连接后 onConnectionStateChange 中的状态为 GATT_FAILURE

我通过以下方式连接到ble设备:mBluetoothGatt=device.connectGatt(this.context,false,mGattCallback);比mBluetoothGatt.disconnect();但如果我做的很快,那么我会在mGattCallback的onConnectionStateChange中收到status=BluetoothGatt.GATT_FAILURE然后我无法再次连接到GATT,即使关闭/打开蓝牙也是如此。只有应用强制停止才能解决问题 最佳答案 通过在状态为STATE_DISCONNE

android - Bluetooth LE 外围设备在与 Bluetooth LE 中央设备连接时停止广告

我想开发像蓝牙LE外围设备这样的应用程序,它停止在与蓝牙LE中央设备连接时做广告,并限制与多个蓝牙LE中央设备连接的蓝牙LE外围设备。一个蓝牙LE外围设备一次只能与一个蓝牙LE中心连接。BluetoothLEperipheral与BluetoothLEcentral成功连接后,其他BluetoothLEcentral设备无法扫描直到现在我尝试下面的代码:privatefinalBluetoothGattServerCallbackmGattServerCallback=newBluetoothGattServerCallback(){@OverridepublicvoidonServi

java - BLE设备与同一设备上不同Android应用程序之间的通信

我是AndroidBLE的新手,所以我的问题在某些方面可能不正确或幼稚。如果是这种情况,请解释我哪里错了,并请告诉我处理这种情况的正确方法。场景如下:我的Android应用程序使用BLE特性与BLE设备通信,发送命令并从设备获取答案。顺序是:设备唤醒应用(调用onConnectionStateChange方法)我的应用程序在特征中写入命令(我调用writeCharacteristic将命令放在value参数中)。设备将命令的答案发回我的应用程序(onCharacteristicChanged方法被触发并且value参数包含答案)唤醒应用程序后,设备不会执行任何操作,直到通过writeC

java - Secure.getString(mContext.getContentResolver(), "bluetooth_address") 在 Android O 中返回 null

当我尝试通过这种方式在AndroidO设备上获取蓝牙地址时:privateStringgetBlutoothAddress(ContextmContext){//CheckversionAPIAndroidBluetoothAdaptermyBluetoothAdapter;StringmacAddress;intcurrentApiVersion=android.os.Build.VERSION.SDK_INT;if(currentApiVersion>=android.os.Build.VERSION_CODES.M){macAddress=Settings.Secure.getS