插件cordova官网cordova-plugin-ble-central

1.开启本机蓝牙

ble.enable(
  function() {
    console.log("Bluetooth is enabled");
  },
  function() {
    console.log("The user did *not* enable Bluetooth");
  }
);

这方法是开启蓝牙功能的方法,在android上会弹出是否开启蓝牙的提示框,确定会开启蓝牙功能,iOS上有提示,但是点击确定也不会打开,好像是iOS的权限不允许,坑,

2.扫描蓝牙

ble.scan([], 10, function (device) {//成功的回调函数
  $scope.devices = [];
  $scope.devices.push(device);
  $scope.$apply(function () {
    $scope.devices.push(device);
  });

  return $scope.devices;
  }, function(){

    //失败的回调函数

  }

);

蓝牙扫描的方法,第二个参数10指的扫描时间,单位是秒,device是扫描的设备

3.连接其他设备蓝牙

$scope.connectFun=function(device){

  ble.connect(device.id, $scope.onConnected, $scope.onError);

}

连接蓝牙的方法,第一个参数是你扫描到的设备的id,后面的是成功和失败的回调

4.读取数据

readCounter = setInterval(function () {
  ble.read(device.id, $scope.serviceUUID, $scope.counterCharacteristic, $scope.onDataReader, $scope.onReadError);
}, 1000);

读取已连接蓝牙的数据,我用了个定时器,1秒读一次,

device.id:蓝牙id,同第3的device.id

$scope.serviceUUID:蓝牙的UUID,具体不懂,每个蓝牙都有,但是这个值需要注意的地方就是它在android和ios上的写法不一样,比如在android上它的值是xxxxfff0-xxxx-xxxx-xxxx-xxxxxxxxxxx,那么它在ios上就是FFF0,这个可以用ionic.Platform.isAndroid()进行平台判断

$scope.counterCharacteristic:蓝牙的特性值,写法跟UUID类似,在android和ios的差异写法也跟UUID一样,刚开始我在android上写好功能后在iOS上连不上蓝牙问题就出在了这里

$scope.onDataReader:成功的回调,可以进行读取数据

$scope.onReadError:失败的回调

5.读取数据扩充

$scope.onDataReader=function(buffer){

  //buffer就是蓝牙读取的数据,但是需要转换才能被引用

  var data = new Uint8Array(buffer);//Uint8Array对象:8 位无符号整数值的类型化数组。内容将初始化为 0。如果无法分配请求数目的字节,则将引发异常。

  //这里可以一步步打印data然后按需要转出所需的数据

  //将值赋值给页面上绑定的变量时,如果变量没有变化,试着用

  $scope.$apply(function(){

    //将计算后的数据给变量赋值,要用$apply涉及到了ng的脏值检查机制,有兴趣可以去搜搜相关资料

  })

}

6.断开蓝牙

ble.disconnect(device.id, function(){
  //do something

}, function(){
  //do something
});

功能相似的话,记得断开后停止定时器

ionic蓝牙用法的更多相关文章

  1. ionic 侧栏菜单用法

    第一步: 引入js和css文件我这里是直接引入的cdn,ionic是基于angular的,bundle.min.js把常用angular的js已经压缩到一起,可以直接引入.bundle.min.js, ...

  2. iOS 蓝牙的GameKit用法

    一.连接蓝牙 显示可以连接的蓝牙设备列表 - (IBAction)buildConnect:(id)sender { // 创建弹窗 GKPeerPickerController *ppc = [[G ...

  3. Ionic2系列——Ionic 2 Guide 官方文档中文版

    最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...

  4. ionic 踩过的坑

    内联模板 : script可能你没有注意过,HTML中常用的script标签在AngularJS中被重新定义了: 除了原来的脚本声明功能之外,如果script元素的type属性 定义为text/ng- ...

  5. 2.OC蓝牙功能

    一.  最早的蓝牙框架是GameKit,iOS7之前用的比较多,它有只能支持iOS设备间的传输,但是使用步骤简单,我们只需要搞清楚两个类就可以了. GKPeerPickerController:熟称浏 ...

  6. ionic单页面应用中微信分享的问题总结

    首先说一下 ionic 是单页面应用,也就是说整个项目就有一个index.html, 那么问题就就来了, 如果我们不同的页面要分享给大家的是不同的链接和图片,应该怎么去做呢? 这就是我们今天要总结的东 ...

  7. Ionic学习笔记三 Gulp在ionic中的使用

    简介 Gulp是一个基于流的自动化构建器. 安装 npm config set registry http://registry.npm.taobao.org ---最好用国内源 npm instal ...

  8. 原 ng-include用法分析以及多标签页面的简单实现方式

    Demo:http://webenh.chinacloudsites.cn/Default/Demo2 在平时的项目开发中,应该会经常遇到上图所示的需求,就是在一个页面中有多个标签,被选中的标签颜色会 ...

  9. ionic 总结

    希望大家都能有了好东西分享出来,单单就ionic来说,我是刚接触,现在用的人不是很多. 我认为如果大家能 有了好的东西或者好的方案 不藏着掖着,分享出来,那么我们的社区会更加活跃,用的人会越来越多,解 ...

随机推荐

  1. SharePoint项目实践中如何实现非打破继承看上去很美的权限控制

    首先对于比较机密的数据,打破继承还是必须要的. 但是对于一些普通申请单据,虽然客户也希望用户不要看到其他人的申请单据,但是我还是不推荐打破继承,应为打破继承一方面会造成网站的权限管理特别的凌乱,另一方 ...

  2. eclipse启动时报错 Could not create the java virtual machine

    eclipse启动的时候 报错 这是系统为eclipse分配的内存不足,需要去修改  eclipse.ini文件 eclipse.ini是eclipse 内存分配之类的配置文件   对java虚拟机的 ...

  3. Android Studio 导入百度地图jar和so的正确方式

    //这部分内容在百度地图的官方文档中写的比较模糊 //感觉在这种事情上浪费实际很不好,遂记录如下 //以下仅是方法之一 step1 下载sdk后解压,并把libs中的全部内容拷贝到app/libs目录 ...

  4. 2014年年度工作总结--IT狂人实录

    2014年也是我人生最重要的一年,她见证了我的成长与蜕变,让我从一个迷茫的旅者踏上一条柳暗花明的路. 春宇之行 从春宇短暂的9个月,却经历常人难以想想的风风雨雨,首先要感谢春宇公司给我带来了安逸宽松的 ...

  5. 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

  6. yii2缓存的介绍和使用

    作者:白狼 出处:http://www.manks.top/yii2_cache.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律 ...

  7. [AlwaysOn Availability Groups]排查:Primary上的修改无法在Secondary体现

    排查:Primary上的修改无法在Secondary体现 客户端进程在primary上修改成功,但是在Secondary上却无法看到修改结果.这个case假设你的可用性组有同步的健康问题.很多情况下这 ...

  8. 【WPF系列】基础学习-WPF架构概览

    引言 WPF从.net framewok3.0加入以来,经历了很多跟新.每次更新都给用户带来了新的功能或者优化性能.下面我们首先看下WPF再.netFramework中的位置,接着介绍下WPF的架构框 ...

  9. [转]ASP.NET Core 中间件详解及项目实战

    本文转自:http://www.cnblogs.com/savorboard/p/5586229.html 前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际 ...

  10. 理解浮动和position定位

    前言 为了更好理解浮动和position,建议先看看我写的这篇文章<Html文档流和文档对象模型DOM理解> 正文 一.浮动 CSS设计float属性的主要目的,是为了实现文本绕排图片的效 ...