首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免使用react-native- BLE -plx复制ble设备

避免使用react-native- BLE -plx复制ble设备
EN

Stack Overflow用户
提问于 2018-12-21 17:31:13
回答 2查看 1.2K关注 0票数 2

我正在使用react-native-ble-plx在我的应用程序中实现蓝牙

蓝牙扫描运行良好,但是它在安卓中包含副本,而在iOS中运行良好,因为allowDuplicates在iOS中默认为false。

在android中,缺省值为true。请提供使用react-native-ble-plx的allowDuplicates属性过滤重复项的解决方案

文档中startDeviceScan的语法:-

代码语言:javascript
复制
bleManager.startDeviceScan(
  UUIDs: ?Array<UUID>,
  options: ?ScanOptions,
  listener: (error: ?Error, scannedDevice: ?Device) => void
)

https://github.com/Polidea/react-native-ble-plx/wiki/Bluetooth-Scanning

我的代码:-

代码语言:javascript
复制
    this.manager.startDeviceScan(null, {allowDuplicates:false}, (error, device) => { 
//2nd parameter is scanOptions
        if (error) {
            // Handle error (scanning will be stopped automatically)
            return
        }
       this.state.count++
        if(this.state.count>10)
        {
          this.manager.stopDeviceScan();
        }
        console.log("id",device.id) 
}

请告诉我是否仍然存在语法错误

EN

回答 2

Stack Overflow用户

发布于 2019-07-30 19:42:10

此设置仅适用于iOS,也不会阻止在其中显示重复项。您必须使用集合或等效集合,以确保仅在应用程序中显示/使用唯一的集合

票数 1
EN

Stack Overflow用户

发布于 2021-01-06 19:44:55

我使用包含创建的设备名称的列表,并使用includes()方法检查重复项

代码语言:javascript
复制
  refreshScreen(device){
    if(!this.state.dataNames.includes(device.name)){
      let dataNow = this.state.data;
      dataNow.push(element);
      let names = this.state.dataNames;
      names.push(element.name);
      this.setState(
        {
          refreshing: false,
          data: dataNow,
          dataNames: names, 
        }
      );
    }
  }

此函数用于添加不在列表dataNames中的设备

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53882250

复制
相关文章

相似问题

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