gpt4 book ai didi

Android BLE setReportDelay()

转载 作者:行者123 更新时间:2023-11-29 00:12:01 25 4
gpt4 key购买 nike

我正在尝试实现一个 BLE 扫描应用程序,我希望在单次扫描中列出附近的所有设备,而不是一次获取一个 BLE 设备。

我从 Android 文档中了解到,我可以在 Scan Setting Builder 中使用 setReportDelay() 来延迟扫描结果,并使用 BatchScanResults() 来获取找到的设备批处理/列表。

但是,当我尝试在“扫描设置”构建器中使用 setReportDelay() 时,扫描根本没有开始,并且出现以下错误。

04-13 16:03:19.887    8454-8454/com.example.sasnee_lab2.sasbeacon D/BluetoothLeScanner﹕ could not find callback wrapper

这是我的带有扫描设置的 StartScan 函数

public void startScan(BluetoothLeScanner scanner)
{
ScanFilter filter = new ScanFilter.Builder().setDeviceName(null).build();

ArrayList<ScanFilter> filters = new ArrayList<ScanFilter>();
filters.add(filter);

ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).setReportDelay(1l)
.build();

Log.i(TAG,"The setting are "+settings.getReportDelayMillis());
scanner.startScan(filters,settings,BLEScan);


}

这是扫描回调。

  private ScanCallback BLEScan = new ScanCallback() {

@Override
public void onBatchScanResults(List<ScanResult> results) {

Log.i(TAG,"The batch result is "+results.size());
}

@Override
public void onScanResult(int callbackType, ScanResult result) {

Log.i(TAG,"******************************************");
Log.i(TAG,"The scan result "+result);
Log.i(TAG,"------------------------------------------");
}


@Override
public void onScanFailed(int errorCode) {
super.onScanFailed(errorCode);
}


}


};

如果我在此处的实现中做错了什么,请告诉我。谢谢。

最佳答案

您必须通过BluetoothAdapter.isOffloadedScanBatchingSupported()检查您的硬件是否支持扫描批处理.如果返回 false,那么您不应尝试设置报告延迟。

关于Android BLE setReportDelay(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29603396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com