美文网首页
Android 蓝牙开发清除GATT缓存

Android 蓝牙开发清除GATT缓存

作者: GODANDDEVIL | 来源:发表于2021-09-24 14:03 被阅读0次

    “android.bluetooth.BluetoothGatt”类中有一个“refresh”方法,该方法是清理GATT层缓存的方法,但是该方法是隐藏的,隐藏的方法我们是无法直接调用的,如果非要使用,可以采用java的反射机制进行调用,实现如下:

        /**
         * Clears the internal cache and forces a refresh of the services from the
         * remote device.
         */
        public boolean refreshDeviceCache() {
            if (mBluetoothGatt != null) {
                try {
                    BluetoothGatt localBluetoothGatt = mBluetoothGatt;
                    Method localMethod = localBluetoothGatt.getClass().getMethod(
                            "refresh", new Class[0]);
                    if (localMethod != null) {
                        boolean bool = ((Boolean) localMethod.invoke(
                                localBluetoothGatt, new Object[0])).booleanValue();
                        return bool;
                    }
                } catch (Exception localException) {
                    Log.i(TAG, "An exception occured while refreshing device");
                }
            }
            return false;
        }
    
    

    其中,“mBluetoothGatt”是在连接建立的时候设置的,另外对于该方法的使用,最好在断开连接成功的回调方法中使用,即在你自己实现的“BluetoothGattCallback”对象的“onConnectionStateChange”方法中判断“status”是“BluetoothProfile.STATE_DISCONNECTED”的时候调用。

    相关文章

      网友评论

          本文标题:Android 蓝牙开发清除GATT缓存

          本文链接:https://www.haomeiwen.com/subject/ghrzgltx.html