android ble监听断开,Android:捕获BLE连接失败/断开连接?

所以我能够在正常情况下连接到BLE设备.我想要做的是处理异常情况,如当一个设备连接失败或已建立的连接丢失(也许它得到扔下悬崖或车撞)

我正在使用CyPress BLE模块对此进行测试,我正在做的其中一项测试是从模块上移除电源.但是,onConnectionStateChange永远不会被调用!我所看到的只是成功的联系.它将花费数小时尝试连接,并且永远不会放弃.我会延迟取消连接尝试,但是没有办法取消BluetoothDevice上的连接尝试(我知道)!据我所知,它会继续尝试,直到电池电量耗尽.

这就是我的onConnectionStateChange现在在Gatt回调中的样子.请注意,我正在尝试捕获并记录任何类型的回调涉及任何类型的连接状态更改…除非连接成功,否则永远不会被调用.请注意,这是代码不在活动本身.它在一个由单身人士持有的物体中. (我希望保持多个活动之间的连接)

@Override

public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {

mGatt = gatt;

Logy.CallPrint(LOGY_ENABLE, CLASSNAME, "Status: "+status+ " Newstate: "+newState);

switch(status)

{

case BluetoothGatt.GATT_SUCCESS:

mReconnectAttempts = MAX_ATTEMPTS;

if(newState == BluetoothGatt.STATE_CONNECTED)

{

DispatchEvent(Event.Type.BT_ON_CONNECT);

bIsConnected = true;

gatt.discoverServices();

} else if (newState == BluetoothGatt.STATE_DISCONNECTED)

{

DispatchEvent(Event.Type.BT_ON_DISCONNECT);

bIsConnected = false;

}

break;

default:

if(newState == BluetoothGatt.STATE_DISCONNECTED)

{

bIsConnected = false;

if(mReconnectAttempts > 0)

{ // if we have attempts left, auto attempt to reconnect

DispatchEvent(Event.Type.BT_RECONNECTING);

mReconnectAttempts--;

gatt.connect();

bIsConnected = false;

}

else

{

mReconnectAttempts = MAX_ATTEMPTS;

DispatchEvent(Event.Type.BT_ON_CONNECT_FAIL);

bIsConnected = false;

}

} else {

Logy.CallPrint(LOGY_ENABLE, CLASSNAME, "onConnectionStateChange: Failed?");

}

}

super.onConnectionStateChange(gatt, status, newState);

}

无法检测断开是我的代码中的其他问题,例如我显示进度对话框,指示应用程序正在连接到BLE设备.那个对话永远不会消失,因为事件“On Connect Fail”永远不会被抛出.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值