使用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开发相关推荐

  1. 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. ...

  2. iOS开发 之 可穿戴设备 蓝牙4.0 BLE 开发

    1 前言 当前有越来越多的可穿戴设备使用了蓝牙4.0 BLE(Bluetooth Low Energy).对于iOS开发而言,Apple之前专门推出CoreBluetooth的Framework来支持 ...

  3. Android蓝牙4.0 BLE开发坑总结

    onServicesDiscovered 回调里不能直接执行 write /readDataFromCharacteristic() 或者 enableNotificationOfCharacteri ...

  4. Android开发:IBeacon系列——安卓蓝牙4.0(BLE)开发之检测IBeacon热点初步

    检测ibeacon热点信号 软硬件要求:Android4.3及以上中支持BLE技术,同时蓝牙需要满足Bluetooth4.0及以上. iBeacon的工作原理是基于Bluetooth Low Ener ...

  5. 谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受

    谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受 谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受,注明下时间:2012-10-17写的博客,后期更新的也注明了时间 ...

  6. 开发android蓝牙4.0 BLE低功耗应用的感受

    文章转自: http://www.cnblogs.com/zdz8207/archive/2012/10/17/bluetooth_ble_android.html 谈谈几个月以来开发android蓝 ...

  7. 基于 React Native 的 58 同城 App 开发实践

    作者简介: 彭飞,58 同城 iOS 客户端架构师.专注于新技术的研发,主要负责 App 端组件化架构以及性能优化,并已推广 React Native 在 58 同城 App 中业务场景的应用.在 M ...

  8. 蓝牙4.0 BLE协议结构图详解

    随着智能硬件的发展,嵌入式和物联网这类专业越发受到大家的追捧,而不管是学习嵌入式还是学习物联网,蓝牙4.0 BLE协议结构都是必须重点掌握的知识点,今天和大家分享的就只这部分内容,一起来看看吧. 第一 ...

  9. android蓝牙4.0 BLE低功耗应用

    转自    http://www.cnblogs.com/zdz8207/archive/2012/10/17/bluetooth_ble_android.html 谈谈几个月以来开发android蓝 ...

最新文章

  1. JAVA SE学习day_11:集合的相关应用、增强型for循环、foreach方法、数组与集合的相互转换
  2. selenium + python 登录页面,输入账号、密码,元素定位问题
  3. 修改Linux root用户名 后提示network manager启动失败修复
  4. HBase设计与开发性能优化(转)
  5. 自开发Web应用和SAP Customer Data Cloud Identity服务的集成
  6. python编码规范简单总结
  7. 用git上传自己的第一个github项目
  8. 如何使用内联onclick属性停止事件传播?
  9. 阿里、Uber都在用的Flink你了解多少?
  10. 也谈谈让好马吃回头草
  11. 面试逻辑题 三个精灵说真话假话的判断难题
  12. 大数据在高校中的应用
  13. 【R语言】【1】初学R语言语法使用Rstudio编辑
  14. JavaScript Reflect 学习笔记
  15. 谷歌 Android 13 曝光
  16. 嵌入式linux pam,PAM介绍(一)
  17. 一键非自锁开关电路设计
  18. VMware下CentOS7最小化安装及配置
  19. 【解决方案】互联网+时代如何通过EasyCVR将安防视频/视频文件融合,打造智能IPTV电视系统?
  20. 电子商务复习笔记二:电子商务相关知识与技术

热门文章

  1. 现代中小企业IT基础平台建设 - 完整案例实战(00_序)
  2. javaScript变量、作用域链
  3. Java Bean Validation 最佳实践
  4. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-持续更新
  5. java-第九章-编写程序,打印如图案,要求图案的行数由用户输入.
  6. SAP CRM 使用Javascript触发SAP Server Event
  7. 不自由な放課後 + 正しいメイドの躾かた 汉化补丁
  8. 数据库事务转载基础一:oarcle事务
  9. 【从零入门 Web 前端】HTML5 + CSS 简明教程
  10. 【年度盘点】最受欢迎的5大Java练习项目