在看Android4.42的源代码时看到有加入对BLE设备的处理。看的一头雾水,多方百度,最终有种柳暗花明的感觉。

本文总结来源于百度多篇文章,欢迎转载。分享交流

BLE蓝牙概念

BLE:Bluetooth low Energy  低能耗蓝牙,实现低成本,短距离的无线传输。传输速率于传统蓝牙同样位2.4GHZ。採用很高速的连接方式,适用于发送数据量少并且发送次数较少的蓝牙通信

相比于传统蓝牙

  • BLE蓝牙设备的传输距离最远可达100米
  • 发送数据所需时间短(<3ms)
  • 响应延时时间短(6ms)
  • 低能耗
  • 主要应用于仅仅能穿戴,汽车。家用电子等

BLE通信协议

在进行BLE通信时通信两方分为外围(Periphery)和中央(Central)

1,外围用于提供数据

2。中央用于接收和处理数据

相当于集中式布局。中央可接收多个外围的数据,但外围仅仅能向一个中央发送数据,也就是说一个中央同一时候可连接多个外围设备,但一个外围设备仅仅能连接一个中央

3,主要类

i>,BluetoothGattServer:外围设备要发送的数据

ii>。BluetoothServerCallback:返回外围设备的状态

iii>,BluetoothGatt:中央使用和处理数据

iv>。BluetoothGattCallBack:返回中央设备的状态

使用ble通信能够包括多个Profile,一个profile能够包括多个service。一个service能够包括多个特征characteristic。

眼下所使用的Android手机仅仅能作为中央使用和处理数据,接下来介绍下怎样去创建一个中央

创建中央(Central)

  • 在配置文件里加入蓝牙的权限
  • 获取本地蓝牙适配器mBluetoothAdapter = BluetoothAapter.getDefaultAdapter()
  • 扫描附近可用的BLE蓝牙设备mBluetoothAdapter.startLeScan(mLeScanCallback);传入的參数对象为BluetoothAdapter.LeScanCallback。
  • 搜索到ble设备时会回调onLeScan方法,获取到BluetoothDevice
  • 利用所获取的device调用连接方法device.connectGatt(......)方法。方法返回BluetoothGatt对象

/**
*第一个參数为上下文,context
*第二个參数为autoConnect。布尔值
*第三个參数为BluetoothAdapter.LeScanCallback对象,连接后回调,在回调中能够获取到手机的蓝牙连接状态
*/
mBluetoothGatt = device.connectGatt(BluetoothCODAService.this, false, mGattCallback);

  • 在连接成功后就能够搜索服务进行通信了。利用获取到的BluetoothGatt对象。mBluetoothGatt.discoveryServices()能够搜索服务。在搜索到服务后会触发onServicesDiscovered()方法。若status位BluetoothGatt.GATT_SUCCESS代表搜索成功
  • 在搜索到服务后调用mBluetoothGatt.getService()来获取BluetoothGattService列表
  • 单个BluetoothGattService对象调用gattService.getCharacteristics()方法获取到BluetoothGattCharacteristic列表
  • 获取到特征之后能够调用API的方法来获取所须要的信息

Android蓝牙BLE低功耗相关简单总结的更多相关文章

  1. Android蓝牙BLE开发,扫描、连接、发送和读取信息;

    1.BLE开发权限 Android蓝牙BLE开发须打开蓝牙权限和6.0位置权限: <uses-permission android:name="android.permission.B ...

  2. Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)

    背景 在学习BLE的过程中,积累了一些心得的DEMO,放到Github,形成本文.感兴趣的同学可以下载到源代码. github: https://github.com/vir56k/bluetooth ...

  3. Android 蓝牙 BLE 开发笔记

    最近公司头戴换了一块蓝牙4.0 BLE模块,所以我们Android组要适配 BLE.Android BLE 需要 4.3 以上系统,api 还是非常简单的, 第一步就是扫描, 扫描到设备后就可以连接了 ...

  4. Android -BLE蓝牙小DEMO

    代码地址如下:http://www.demodashi.com/demo/13890.html 原文地址: https://blog.csdn.net/vnanyesheshou/article/de ...

  5. 深入了解Android蓝牙Bluetooth ——《总结篇》

    在我的上两篇博文中解说了有关android蓝牙的认识以及API的相关的介绍,蓝牙BLE的搜索,连接以及读取. 没有了解的童鞋们请參考: 深入了解Android蓝牙Bluetooth--<基础篇& ...

  6. 【转】蓝牙ble app开发(三) -- 抓包

    原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...

  7. Android低功耗蓝牙(BLE)开发的一点感受

    最近一段时间,因为产品的需要我做了一个基于低功耗蓝牙设备的Android应用,其中碰到了一些困难,使我深深体会到Android开发的难处:不同品牌,不同型号和不同版本之间的差异使得Android应用适 ...

  8. 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)

    转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 :  -- 官方文档 : https://develope ...

  9. Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址

    Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...

随机推荐

  1. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  2. 有谁知道Delphi中"窗口"的创建过程?

      求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatPara ...

  3. Delphi加载驱动

    program Project2; uses Windows, Native, JwaWinType, Unit_Driver; function Is2KXp(): Boolean; var OSV ...

  4. Quartz 定时任务设置某个时间区间每隔一定时间触发的cron表达式

    原文:https://blog.csdn.net/yansong_8686/article/details/46991189 Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间 ...

  5. 用 setMessage 方法灵活复用 UIAlertView

  6. java使用反射强制给private字段赋值

    今天项目中遇到了一个问题,要调用一个类,并获取这个类的属性进行赋值然后将这个类传递到方法中做为参数. 实际操作时才发现,这个类中的字段属性是私有的,不能进行赋值!没有提供公有的方法.而这个类又是打包成 ...

  7. JAVA变成把一个整数分解成多个质数的积

    /* * TestTengXun.java * Version 1.0.0 * Created on 2017年12月2日 * Copyright ReYo.Cn */ package reyo.sd ...

  8. Windows下LuaJIT的编译和使用

    1.下载LuaJIT,download>> 2.编译 开始 –> 程序 –> Microsoft Visual Studio xx –> Visual Studio To ...

  9. 记录一个简单的vue页面实现

    <template> <div class="userView"> <!-- 页眉颜色统一 --> <div class="bu ...

  10. Python 模块 re (Regular Expression)

    使用 Python 模块 re 实现解析小工具   概要 在开发过程中发现,Python 模块 re(Regular Expression)是一个很有价值并且非常强大的文本解析工具,因而想要分享一下此 ...