【发布时间】:2015-08-28 10:37:38
【问题描述】:
我正在开发 Android-Ble 。 我的问题是: 当 Ble 设备断开连接时,程序会调用 .startLeScan(callback) 来查找 Ble 设备并重新连接。 但有时,程序试图扫描但找不到任何设备。我猜这是由于 Ble 协议栈混乱造成的。 我对吗?而如果 Ble 协议栈乱了,那么会发生什么让 Ble 协议栈乱呢? 谁能给我一些建议?谢谢。
---有扫码:
private void startBLEScan() {
if (isBLEScanStarted) {
return;
}else {
isBLEScanStarted = true;
}
if (mBluetoothAdapter != null) {
boolean startResult = mBluetoothAdapter.startLeScan(mLeScanCallback);
System.out.println("BlueToothScan: startLeScan "+startResult);
startBLEScanTimeoutTimer(1000 * 60); //When scan time reach 60s , stop scan and rescan after 5s.
}
else {
System.out.println("BlueToothScan: adapter is null");
}
}
---有gatt回调.OnConnectionStateChange:
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status,
int newState) {
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED) {
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
broadcastUpdate(intentAction);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
mBluetoothGatt.discoverServices();
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
intentAction = ACTION_GATT_DISCONNECTED;
mConnectionState = STATE_DISCONNECTED;
if(mBluetoothGatt != null){
mBluetoothGatt.close();
mBluetoothGatt = null;
}
broadcastUpdate(intentAction);
}
}
【问题讨论】:
-
那是什么类型的 BLE 设备?您是否尝试在连接断开时使用其他设备找到它?
-
我已经尝试用另一部手机找到它,并且可以连接到 BLE 设备。呃.. 对不起,我不太了解那是什么类型的 BLE 设备.. .意味着它是从哪里制成的或其他的?
-
不,是健身设备吗?大多数这些 BLE 设备在长时间不使用时会关闭。
-
是的,但是当我失去与 BLE 设备的连接时。我无法获得任何设备。我想如果只是设备关闭我仍然可以得到其他的mac,但它不是......所以我猜一些错误的步骤会使Ble协议栈混乱。
-
发布一些代码,我们无能为力。
标签: android bluetooth-lowenergy