Android 有时找不到可编程设备
我正在开发安卓系统。 我的问题是: 断开Ble设备的连接后,程序将调用.startedscallback查找Ble设备并重新连接。 但有时,程序试图扫描,但找不到任何设备。我猜这是由于Ble协议栈混乱造成的。 我说得对吗?如果Ble协议栈混乱了,那么发生什么会使Ble协议栈混乱呢? 谁能给我一些提示吗?谢谢 --有扫描代码:Android 有时找不到可编程设备,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在开发安卓系统。 我的问题是: 断开Ble设备的连接后,程序将调用.startedscallback查找Ble设备并重新连接。 但有时,程序试图扫描,但找不到任何设备。我猜这是由于Ble协议栈混乱造成的。 我说得对吗?如果Ble协议栈混乱了,那么发生什么会使Ble协议栈混乱呢? 谁能给我一些提示吗?谢谢 --有扫描代码: private void startBLEScan() { if (isBLEScanStarted) { return; }else {
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);
}
}
我不知道是不是同样的问题,因为这个问题是在我升级到安卓5.1之后才出现的。我可以将设备连接并绑定到我的Android,但当涉及到重新连接时,扫描将找不到任何已经绑定的设备 我的代码在安卓5.0中运行良好,蓝牙低能耗的唯一变化是扫描方法。现在我必须使用BluetoothScanner类,不再从BluetoothAdapter类调用StartedScan方法,因为它已被弃用 问题可能来自数据包的长度,因为当设备绑定或未绑定时,广告名称会发生变化。
另一个想法是,谷歌在连接已绑定的设备时会更改安全性,但通常情况下,扫描不会影响发现。这是什么类型的BLE设备?当连接丢失时,你是否尝试用另一台设备找到它?我尝试用另一台手机找到它,并且可以连接到BLE设备。嗯。。对不起,我不太明白那是什么类型的BLE设备…意味着它是从哪里制造的还是其他的?不,像是健身设备吗?大多数这些BLE设备在长时间不使用时会关闭。是的,但是当我断开与BLE设备的连接时。我找不到任何设备。我认为,如果只是关闭设备,我仍然可以得到其他人的mac,但它不是..所以我猜一些错误的步骤会使Ble协议栈混乱。发布一些代码,没有这些我们无法帮助。