【发布时间】:2017-02-10 21:57:09
【问题描述】:
我正在玩一个适用于 Android 和 iOS 的实验性Bluetooth LE 程序,现在我在 Android 端过滤 iOS 端发出的信标广告时遇到了一些问题。 Android 具有通过带有掩码的 UUID 过滤广告的功能(我需要这个,因为我试图让 UUID 以特定值开头)但我无法让它工作。这是我正在尝试的:
private void freshen() {
// kill current scanner
if (mLEScanner != null)
mLEScanner.stopScan(mScanCallback);
// set new one to be a match scanner
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
List<ScanFilter> filters = new ArrayList<>();
// create data uuid starting with the value 1
ParcelUuid data = ParcelUuid.fromString("10000000-0000-0000-0000-000000000000");
// create a mask to ensure only that value is searched
ParcelUuid mask = ParcelUuid.fromString("10000000-0000-0000-0000-000000000000");
// build the filter
ScanFilter.Builder builder = new ScanFilter.Builder();
builder.setServiceUuid(data, mask);
ScanFilter filter = builder.build();
// add the filter to the scanner
filters.add(filter);
mLEScanner.startScan(filters, settings, mScanCallback);
}
它产生的结果为零。即使我将所有掩码值设置为 0(这是忽略的数字),它仍然会产生零结果。当我删除过滤器时,会出现大量以 1 开头的结果。这在当前版本的 Android 中是否存在问题?
【问题讨论】:
标签: java android filter bluetooth-lowenergy