首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓BLE setReportDelay()

安卓BLE setReportDelay()
EN

Stack Overflow用户
提问于 2015-04-13 18:43:40
回答 2查看 3K关注 0票数 2

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

我从安卓文档中读到,我可以在扫描设置生成器中使用setReportDelay()来延迟扫描结果,并使用BatchScanResults()来获取所找到的设备的批次/列表。

但是,当我尝试使用扫描设置构建器中的setReportDelay()时,扫描根本不会启动,并且我得到以下错误。

代码语言:javascript
运行
复制
04-13 16:03:19.887    8454-8454/com.example.sasnee_lab2.sasbeacon D/BluetoothLeScanner﹕ could not find callback wrapper

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

代码语言:javascript
运行
复制
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);


}

这是扫描回调。

代码语言:javascript
运行
复制
  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);
        }


        }


    };

如果我在这里的实现中做错了什么,请告诉我。谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2015-12-10 04:52:38

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

票数 2
EN

Stack Overflow用户

发布于 2020-05-13 17:29:35

使用以下命令:

Java

代码语言:javascript
运行
复制
boolean f = adapter.isOffloadedScanBatchingSupported();
if (!f) builder.setReportDelay(0) else builder.setReportDelay(1)

Kotlin

代码语言:javascript
运行
复制
val f: Boolean = adapter.isOffloadedScanBatchingSupported
if (!f) builder.setReportDelay(0) else builder.setReportDelay(1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29603396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档