使用react native ble manager获取可用蓝牙设备的列表
Getting a list of available bluetooth devices using react-native-ble-manager
如何使用react native ble manager获取可用蓝牙设备的列表?
我最近不得不使用这个库,这对我来说很有效:
import { NativeModules, NativeEventEmitter } from 'react-native';
import BleManager from 'react-native-ble-manager';
const BleManagerModule = NativeModules.BleManager;
const bleManagerEmitter = new NativeEventEmitter(BleManagerModule);
...
state = {
peripherals: new Map(),
};
componentDidMount() {
BleManager.start({ showAlert: false })
this.handlerDiscover = bleManagerEmitter.addListener(
'BleManagerDiscoverPeripheral',
this.handleDiscoverPeripheral
);
this.handlerStop = bleManagerEmitter.addListener(
'BleManagerStopScan',
this.handleStopScan
);
this.scanForDevices(); // I chose to start scanning for devices here
}
scanForDevices() {
BleManager.scan([], 15);
}
handleDiscoverPeripheral = (peripheral) => {
const { peripherals } = this.state;
if (peripheral.name) {
peripherals.set(peripheral.id, peripheral.name);
}
this.setState({ peripherals });
};
handleStopScan = () => {
console.log('Scan is stopped. Devices: ', this.state.peripherals);
}
编辑:别忘了申请位置许可!
-
首先你应该:
import BleManager from 'react-native-ble-manager';
别忘了:
import { NativeAppEventEmitter } from 'react-native'
-
然后,在你的组件内部(我在
componentDidMount
上做):2.1在
'BleManagerDiscoverPeripheral'
事件上向NativeAppEventEmitter
添加句柄:NativeAppEventEmitter.addListener('BleManagerDiscoverPeripheral',(data) => { console.log(data) // Name of peripheral device });
2.2.启动您的BleManager经理:
BleManager.start({showAlert: false});
2.3.
BleManager.scan([], 30)
,其中第一个值是一个数组(如果服务UUID),第二个值是扫描将运行的时间(秒)
您可以在官方lib的页面react native ble manager 上找到原始示例
要扫描附近的设备,请使用以下代码,
scanNearByDevices(serviceUUIDList, duration, isAllowDuplicates) {
bleManager
.scan(serviceUUIDList, duration, isAllowDuplicates)
.then(results => {
console.log('Scanning...');
// this.setState({scanning: true});
});
}
之后使用以下代码获取发现设备列表,
getDiscoverdDevices() {
return new Promise((resolve, reject) => {
bleManager
.getDiscoveredPeripherals()
.then(devices => {
console.log('Discovered devices:', devices);
this.deviceMap.set(device.id, device);
}
resolve(devices);
})
.catch(error => {
console.log('error fail: ', error);
reject(error);
});
});
}
如果您在android上运行应用程序,请确保您已授予应用程序的位置权限
相关文章:
- 要求输入在数据列表中
- 从javascript创建一个列表
- 如何使用jQuery选择下拉列表的值
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 接受不在列表中的值-引导组合框
- 禁用jQuery中的下拉列表
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 如何在javascript中迭代数字列表
- 如何在按钮中显示下拉列表中选定的元素
- 将 Picker 绑定到 React Native 中的 Picker.Item 列表
- react native:可选择的部分列表视图出现错误
- React Native Firebase搜索列表视图
- 使用react native ble manager获取可用蓝牙设备的列表
- 如何增加列表视图行滑动的“反应本机滑动”上的按钮宽度(React Native)