Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 4.3 LE蓝牙客户端服务器冲突_Android_Bluetooth Lowenergy_Android 4.3 Jelly Bean - Fatal编程技术网

Android 4.3 LE蓝牙客户端服务器冲突

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的通信已停止 在

我使用的是运行安卓4.3的三星Galaxy S4 我正在尝试将一个运行在三星LEB API上的应用程序转换为Android 4.2.2。 我可以发现并连接(
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上遇到了同样的问题,已经一年多了