我希望我的应用程序作为蓝牙设备运行,并且应该对具有我的应用程序名称的其他设备可见并与其他设备共享数据

问题描述

我希望我的应用程序作为蓝牙设备运行,并且应该对其他使用我的应用程序名称的设备可见。 为此,我正在使用 react-native-ble-manager。

我还想将数据共享到连接的设备。但是,当我尝试获取连接的外围设备详细信息(例如其名称、ID)时,控制台日志中没有任何信息。 用于它的代码是...

    const startScan = () => {

      
      // skip if scan process is currenly happening
      if (isScanning) {
        console.log(isScanning) //true
        console.log('scaning')
        return;
      }
  
      // first,clear existing peripherals
      peripherals.clear();
      setList(Array.from(peripherals.values()));
  
      // then re-scan it
      BleManager.scan([],30,true)
        .then(() => {
          console.log('Scanning...');
          setIsScanning(true);
        })
        .catch((err) => {
          console.error(err);
        });
        console.log('########################')
       console.log(list)
        console.log(peripherals)
    };

在 useEffect 中,我使用 bleEmitter 调用函数..

 BleManager.start({ showAlert: false });

    // add ble listeners on mount
     bleEmitter.addListener('BleManagerdiscoverPeripheral',handlediscoverPeripheral);
     bleEmitter.addListener('BleManagerStopScan',handleStopScan);
    // bleEmitter.addListener('BleManagerdisconnectPeripheral',handledisconnectedPeripheral);
    // bleEmitter.addListener('BleManagerDidUpdateValueForCharacteristic',handleUpdateValueForCharacteristic);

    // check location permission only for android device
    if (Platform.OS === 'android' && Platform.Version >= 23) {
      PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION).then((r1) => {
        if (r1) {
          console.log('Permission is OK');
          return;
        }

        PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION).then((r2) => {
          if (r2) {
            console.log('User accept');
            return
          }
         console.log('User refuse');
        });
      });
    }

handlediscoverPeripheral 包含外围细节,代码是...

 const handlediscoverPeripheral = (peripheral) => {
      console.log('Got ble peripheral',peripheral);
  
      if (!peripheral.name) {
        peripheral.name = 'NO NAME';
      }
  
      peripherals.set(peripheral.id,peripheral);
      setList(Array.from(peripherals.values()));
    };

但是我的代码没有通过这个 handlediscoverPeripheral 。它直接移动到下一个函数,即handleStopScan函数..

而且我也无法获得附近蓝牙设备的列表。

任何人都可以在这种情况下帮助我,我想将数据从我的应用程序发送到我通过它与蓝牙连接的设备..

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...