Android蓝牙低功耗:characteristic.getPermissions()返回0?

时间:2014-05-15 09:45:15

标签: java android bluetooth bluetooth-lowenergy android-bluetooth

我正在编写一个Android BLE应用程序,我正在尝试获取某个特性的权限。我已经设法使用characteristic.getProperties()获取特性属性,并返回非零值,但是,当我使用getPermission()方法时,它返回0,即使我确定该特性具有PERMISSION_WRITE_ENCRYPTED_MITM(0x00000040) )。

以下是代码段

    // properties
    int properties = ch.getProperties();
    DebugWrapper.infoMsg("properties: " + properties, TAG); //returns non-zero value

    // permissions      
    int permissions = ch.getPermissions();  
    DebugWrapper.infoMsg("permissions: " + permissions, TAG); //returns zero value

我做错了吗?是否有特定的方法来获取特性的权限,或者这是android api的问题?

我正在使用API​​ 19并在Samsung Galaxy Note 3上测试我的程序。

我感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

这看起来像底层框架的问题。 This link显示了框架在发现远程设备上的服务/特征时执行的代码块。您可以看到创建新BluetoothGattCharacteristic的时间,权限参数始终以0传递。

此外,即使稍后读取特征,也只更新特征值,不会在对象上重置其他参数。

相反,Android似乎试图在trial and error的基础上处理身份验证/权限问题。换句话说,框架总是尝试基本的读/写,如果由于认证原因而失败,它会自动再次尝试请求MITM认证。