我在我的应用中处理BLE连接。一切正常,直到我按下后退按钮。按下后退按钮时,BLE连接应断开连接并再次进行活动加载它会尝试连接到该工具。当活动加载时,我仍然得到gatt!= null为true。我无法找到问题所在。我认为我的代码在onConnectionStateChanged()中存在一些问题,服务已断开连接。我将在下面发布我的代码。请看看。
llBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fragmentManager = mContext.getSupportFragmentManager();
BleUtil.disconnect_tool();
fragmentManager.popBackStack();
mContext.recreate();
}
在BleUtil课程中:
public static void disconnect_tool()
{
mBluetoothGatt.disconnect();
}
OnConnectionStateChaged():
private BluetoothGattCallback gattCallback =
new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState)
{
if (newState == STATE_CONNECTED) {
gattInterface.onToolConnected();
gatt.discoverServices();
Toast.makeText(activity,"Connected",Toast.LENGTH_SHORT).show();
} else if (newState == STATE_DISCONNECTED) {
//disconnect_tool();
gatt.close();
mBluetoothGatt.close();
gatt = null;
mBluetoothGatt = null;
gattInterface.onToolDisconnected();
Log.d("checkdisco","disconn");
// mConnectionState = STATE_DISCONNECTED;
Toast.makeText(activity,"Disconnected",Toast.LENGTH_SHORT).show();
// gatt.close();
if(gatt != null) {
gatt.close();
gatt = null;
}
}
}
@Override
public void onServicesDiscovered(final BluetoothGatt gatt, final int status) {
if (status == BluetoothGatt.GATT_SUCCESS) { gattInterface.onservicefound(gatt);}
答案 0 :(得分:1)
我认为Android实际上并没有断开BLE链接,而是停止将BLE事件传播到您的应用程序。这只是我曾经读过的东西,所以一定要带上一粒盐。