缺少android方法:ScanRecord.parseFromBytes
我浏览了android 22的源代码,将代码更改为新的BLE扫描,并遇到了ScanRecord类。当我打开ScanRecord的源代码(sources/android-22/android/bluetooth/le/ScanRecord.java)时,我看到有一个parseFromBytes函数:缺少android方法:ScanRecord.parseFromBytes,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我浏览了android 22的源代码,将代码更改为新的BLE扫描,并遇到了ScanRecord类。当我打开ScanRecord的源代码(sources/android-22/android/bluetooth/le/ScanRecord.java)时,我看到有一个parseFromBytes函数: /** * Parse scan record bytes to {@link ScanRecord}. * <p> * The format is defined in Bluet
/**
* Parse scan record bytes to {@link ScanRecord}.
* <p>
* The format is defined in Bluetooth 4.1 specification, Volume 3, Part C, Section 11 and 18.
* <p>
* All numerical multi-byte entities and values shall use little-endian <strong>byte</strong>
* order.
*
* @param scanRecord The scan record of Bluetooth LE advertisement and/or scan response.
* @hide
*/
public static ScanRecord parseFromBytes(byte[] scanRecord)
/**
*将扫描记录字节解析为{@link ScanRecord}。
*
*蓝牙4.1规范第3卷C部分第11节和第18节定义了该格式。
*
*所有数字多字节实体和值应使用小尾数字节
*秩序。
*
*@param scanRecord蓝牙LE广告和/或扫描响应的扫描记录。
*@隐藏
*/
公共静态扫描记录parseFromBytes(字节[]扫描记录)
但是如果我尝试在代码中使用它,它就找不到函数。此外,如果我检查API,则根本不提及该函数
我使用的是Android Studio 1.3.1和CompileSDK版本22、MinSDK版本18、TargetSDK版本22和buildToolsVersion 22.0.1
我错过了什么?为什么我不能使用这个函数,尽管它是android源代码的一部分
感谢您的澄清。ScanRecord类已添加到API级别21中。 您可以从 代码:
在该对象实例上,公共函数可用。我遇到了同样的问题,希望使用ScanRecord.parseFromBytes。在谷歌搜索了很多次之后,我注意到它有一个标记“@hide”,它可以有效地向编译器隐藏它。看
我不太想使用反射,但我想访问ScanRecord中的字段(例如TxPower)谢谢,但这并不能真正回答我的问题。我问为什么parseFromBytes函数即使声明为公共静态也无法访问,而不是我如何从ScanResult访问ScanRecord。谢谢,这就解释了这一点。我最终编写了自己的解析函数,因为我只对ScanRecord的一个字段感兴趣。
ScanCallback leScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
ScanRecord record = result.getScanRecord();
}
}