我开始使用ibeacon和android。但是有一些问题需要你的帮助。在blutoothGatCallback上,我实现onConnectionStateChange并调用discoverServices()。尽管discoverServices()返回true,但没有任何回调执行,我希望OnServicesDiscovery被调用,但没有。
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status,
int newState) {
Log.i(TAG, "onConnectionStateChange : " + status + " newState : "
+ newState);
if (newState == BluetoothProfile.STATE_CONNECTED) {
boolean isdiscover= mBluetoothGatt.discoverServices();
if(isdiscover){
mConnected = true;
}
}
}
状态为133,newstate已连接。状态是否使其无法获取回调
状态133可以指示您尝试在非主线程上执行bt命令。
BTLE回调是从android-bt-binder线程调用的。
所以
<代码>mBluetoothGatt。discoverServices()
在活页夹线程上运行,它应该在GUI/主线程上运行
请提供更多信息,您能提供收到的广告数据吗?
以下只是一个猜测,因为Android BLE存在广泛的问题,但是我在意外发出BR/EDR连接到Beacon时已经看到了这个一般的133错误。
由于Android在GATT服务器设备宣布支持BR/EDR连接时默认为BR/EDR连接,因此您可以尝试在connectGatt()中明确设置transport to transport\LE,但由于此参数仅在隐藏版本中可用,因此需要使用反射。
尝试这样发出连接:
private BluetoothGatt mGatt;
private final BluetoothGattCallback gattCallback = new BluetoothGattCallback() { ... }
public void connectToDevice(BluetoothDevice device) {
try {
Method m = device.getClass().getDeclaredMethod("connectGatt", Context.class, boolean.class, BluetoothGattCallback.class, int.class);
int transport = device.getClass().getDeclaredField("TRANSPORT_LE").getInt(null);
mGatt = (BluetoothGatt) m.invoke(device, this, false, gattCallback, transport);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
这样你至少可以确定它与这种Android行为无关。
我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定
问题内容: 我是spring的新手,我使用https://start.spring.io/创建了一个新的spring boot项目,没有更多依赖关系,解压缩了zip文件并在IntelliJ IDEA中打开了该项目。我没有做任何进一步的配置。我现在正在尝试使用@PostConstruct方法设置bean-但是,该方法从未被spring调用。 这些是我的课程: SpringTestApplicatio
我正在使用JSF 2.0创建页面: 我期待在单击复选框时被调用。但是,加载页面时调用一次setMyCheckboxValue()。 如果我写 每次点击都会收到警报。 我的问题是:当我收到警报时,为什么每次onclick事件都不调用? 注意:我也尝试过AJAX,但复选框保持不变。
问题内容: 我有一个简单的程序,其中显示了一些项目的列表,单击其中的一个后,单击的项目将传递回附件。当用户取消对话框时,我还想执行一些默认处理(使用 后退按钮 )-更具体地说,在这种情况下,我想向活动传递一个空字符串。 但是,如果将对话框放在(来自 兼容性包 )中, 则使用后退按钮关闭对话框时不会调用 。我究竟做错了什么? 问题答案: 这可能与您的代码中没有显式调用的事实有关。该OnCancelL
每当字符串发生更改时,就会调用。 现在,当我启动新的并通过发送数据时,不会被调用。