无法断开连接并重新连接到BLE工具android

时间:2018-05-21 07:25:03

标签: android bluetooth-lowenergy

我在我的应用中处理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);}

1 个答案:

答案 0 :(得分:1)

我认为Android实际上并没有断开BLE链接,而是停止将BLE事件传播到您的应用程序。这只是我曾经读过的东西,所以一定要带上一粒盐。