Android 4.3 LE蓝牙客户端服务器冲突
我使用的是运行安卓4.3的三星Galaxy S4 我正在尝试将一个运行在三星LEB API上的应用程序转换为Android 4.2.2。 我可以发现并连接(Android 4.3 LE蓝牙客户端服务器冲突,android,bluetooth-lowenergy,android-4.3-jelly-bean,Android,Bluetooth Lowenergy,Android 4.3 Jelly Bean,我使用的是运行安卓4.3的三星Galaxy S4 我正在尝试将一个运行在三星LEB API上的应用程序转换为Android 4.2.2。 我可以发现并连接(connectGatt)到外围设备,并成功运行所有“客户端”代码,前提是我不尝试作为服务器连接 无论何时我连接 mBluetoothGattServer = mBluetoothManager.openGattServer(this, mGattServerCallbacks); LogCat表示与BluetoothGatt的通信已停止 在
connectGatt
)到外围设备,并成功运行所有“客户端”代码,前提是我不尝试作为服务器连接
无论何时我连接
mBluetoothGattServer = mBluetoothManager.openGattServer(this, mGattServerCallbacks);
LogCat表示与BluetoothGatt的通信已停止
在发现所有Gatt服务后,我尝试打开GATTServer
。我尝试在GattServerCallback
onConnectionStateChange
中添加服务。代码运行,但我没有得到onServiceAdded回调
我的应用程序中的“gatt客户端”和“gatt服务器”代码都无法运行
我确实得到了这两种方法的onConnectionStateChange
回调
如何、何时和何地(main活动
或BLEService
)实例化mbluetothgattserver
这有文件记录吗?用一些示例代码
我问题的第一部分暂时得到解决。我启动了一个新线程,添加了一秒钟的延迟,然后调用openGattServer。我的“客户机”代码现在运行良好。(我对此不满意-这是出于沮丧而进行的一次尝试-如果我能让服务器代码正常工作,我可以尝试使用队列)
对于onConnectionStateChange
,我确实得到了一个GattServerCallback
但是,我似乎还没有运行任何“服务器”代码。我找到了一个临时解决方案。 当我实例化mBluetoothGattServer对象时,在mBluetoothGattServer=null(仍然)时调用了回调“onConnectionStateChange”。这是一个惊喜,因为实例化对象导致注册回调。我在onConnectionStateChange的代码中添加了一个延迟,直到MBlueTothGattServer!=null(尝试次数有适当限制),并且能够成功添加服务。在撰写本文时,我似乎必须一次添加一个服务,并在添加每个服务之前等待onServiceAdded回调(这尚未测试)
我必须说三星BLE SDK更容易理解和管理 在任何
蓝牙设备上调用connectGatt
之前,应初始化BluetoothGattServer
:
mBluetoothGattServer = mBluetoothManager.openGattServer(self, mGattServerCallbacks);
mBluetoothGatt = device.connectGatt(this, false, mGattCallbacks);
事实上,您只需要一个BluetoothGattServer
实例,mGattServerCallbacks
中的回调将与mGattCallbacks
中的回调同时被调用
连接设备时,在两个回调包装器中都将调用名为onConnectionStateChange
的方法。有更新吗?我在Nexus9上遇到了同样的问题,已经一年多了