React Native 蓝牙4.0 BLE开发
使用react-native-ble-plx库进行开发
安装
yarn add react-native-ble-plx
// 辅助数据发送接收buffer工具类
yarn add buffer
react-native link react-native-ble-plx
复制代码
android
修改build.gradle中的最低sdk版本为18
android {...defaultConfig {minSdkVersion 18...
复制代码
添加权限
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- Add this line if your application always requires BLE. More info can be found on:https://developer.android.com/guide/topics/connectivity/bluetooth-le.html#permissions-->
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
复制代码
使用
android权限申请
const permissions: Permission[] = ['android.permission.ACCESS_COARSE_LOCATION'];if (Platform.OS == "android") {for (const permission of permissions) {const check = await PermissionsAndroid.check(permission);console.log(`permission ${permission} check ${check}`);if (!check) {await PermissionsAndroid.request(permission);}}
}
复制代码
实例初始化
const bleManager = new BleManager();
复制代码
打开蓝牙
const state = await this.bleManager.state();
if (state == State.PoweredOff) {if (Platform.OS == 'android') {const enable = await this.bleManager.enable();console.log(await this.bleManager.state());} else if (Platform.OS == 'ios') {// ios不能直接打开,用对话框提示打开蓝牙}
}
复制代码
扫描设备
bleManager.startDeviceScan(null, null, async (error, device) => {if (error) return console.error(error);// 打印设备名称console.log(device.name);
});
复制代码
连接设备
uuid连接
bleManager.connectToDevice(id);
复制代码
device连接
device.connect();
复制代码
获取characteristic
const serviceDevice = await device.discoverAllServicesAndCharacteristics();
const services = await serviceDevice.services();
for (const service of services) {const serviceUUID = service.uuid;// 判断service是否符合if (match) {const characteristics = await service.characteristics();for (const characteristic of characteristics) {const characteristicUUID = characteristic.uuid;// 判断characteristic是否符合if (match) {// 获取读或者写characteristic}}}
}
复制代码
数据发送
const array = [0x00, 0x01, ...];
const openValueBase64 = new Buffer(array).toString('base64');
await writeCharacteristic!.writeWithoutResponse(openValueBase64);
复制代码
数据接收
// 监听
readCharacteristic.monitor((error, characteristic) => {if (error) return console.error(error);const value = characteristic!.value!;const buffer = Buffer.from(value, 'base64');// 打印读取到的数据console.log('read', buffer);
});
复制代码
React Native 蓝牙4.0 BLE开发相关推荐
- java 蓝牙4.0_《蓝牙4.0 BLE开发完全手册---物联网开发技术实战
图书目录: 第1章 蓝牙4.0 BLE简介 1.1 无线网络数据传输协议对比 1.2 短距离无线网络的分类 1.2.1 什么是蓝牙4.0 BLE 1.2.2 蓝牙4.0 BLE的特点 1.3 蓝牙4. ...
- iOS开发 之 可穿戴设备 蓝牙4.0 BLE 开发
1 前言 当前有越来越多的可穿戴设备使用了蓝牙4.0 BLE(Bluetooth Low Energy).对于iOS开发而言,Apple之前专门推出CoreBluetooth的Framework来支持 ...
- Android蓝牙4.0 BLE开发坑总结
onServicesDiscovered 回调里不能直接执行 write /readDataFromCharacteristic() 或者 enableNotificationOfCharacteri ...
- Android开发:IBeacon系列——安卓蓝牙4.0(BLE)开发之检测IBeacon热点初步
检测ibeacon热点信号 软硬件要求:Android4.3及以上中支持BLE技术,同时蓝牙需要满足Bluetooth4.0及以上. iBeacon的工作原理是基于Bluetooth Low Ener ...
- 谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受
谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受 谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受,注明下时间:2012-10-17写的博客,后期更新的也注明了时间 ...
- 开发android蓝牙4.0 BLE低功耗应用的感受
文章转自: http://www.cnblogs.com/zdz8207/archive/2012/10/17/bluetooth_ble_android.html 谈谈几个月以来开发android蓝 ...
- 基于 React Native 的 58 同城 App 开发实践
作者简介: 彭飞,58 同城 iOS 客户端架构师.专注于新技术的研发,主要负责 App 端组件化架构以及性能优化,并已推广 React Native 在 58 同城 App 中业务场景的应用.在 M ...
- 蓝牙4.0 BLE协议结构图详解
随着智能硬件的发展,嵌入式和物联网这类专业越发受到大家的追捧,而不管是学习嵌入式还是学习物联网,蓝牙4.0 BLE协议结构都是必须重点掌握的知识点,今天和大家分享的就只这部分内容,一起来看看吧. 第一 ...
- android蓝牙4.0 BLE低功耗应用
转自 http://www.cnblogs.com/zdz8207/archive/2012/10/17/bluetooth_ble_android.html 谈谈几个月以来开发android蓝 ...
最新文章
- JAVA SE学习day_11:集合的相关应用、增强型for循环、foreach方法、数组与集合的相互转换
- selenium + python 登录页面,输入账号、密码,元素定位问题
- 修改Linux root用户名 后提示network manager启动失败修复
- HBase设计与开发性能优化(转)
- 自开发Web应用和SAP Customer Data Cloud Identity服务的集成
- python编码规范简单总结
- 用git上传自己的第一个github项目
- 如何使用内联onclick属性停止事件传播?
- 阿里、Uber都在用的Flink你了解多少?
- 也谈谈让好马吃回头草
- 面试逻辑题 三个精灵说真话假话的判断难题
- 大数据在高校中的应用
- 【R语言】【1】初学R语言语法使用Rstudio编辑
- JavaScript Reflect 学习笔记
- 谷歌 Android 13 曝光
- 嵌入式linux pam,PAM介绍(一)
- 一键非自锁开关电路设计
- VMware下CentOS7最小化安装及配置
- 【解决方案】互联网+时代如何通过EasyCVR将安防视频/视频文件融合,打造智能IPTV电视系统?
- 电子商务复习笔记二:电子商务相关知识与技术
热门文章
- 现代中小企业IT基础平台建设 - 完整案例实战(00_序)
- javaScript变量、作用域链
- Java Bean Validation 最佳实践
- 《.NET应用架构设计:原则、模式与实践》新书博客--试读-持续更新
- java-第九章-编写程序,打印如图案,要求图案的行数由用户输入.
- SAP CRM 使用Javascript触发SAP Server Event
- 不自由な放課後 + 正しいメイドの躾かた 汉化补丁
- 数据库事务转载基础一:oarcle事务
- 【从零入门 Web 前端】HTML5 + CSS 简明教程
- 【年度盘点】最受欢迎的5大Java练习项目