Android蓝牙BLE低功耗相关简单总结
在看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低功耗相关简单总结的更多相关文章
- Android蓝牙BLE开发,扫描、连接、发送和读取信息;
1.BLE开发权限 Android蓝牙BLE开发须打开蓝牙权限和6.0位置权限: <uses-permission android:name="android.permission.B ...
- Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)
背景 在学习BLE的过程中,积累了一些心得的DEMO,放到Github,形成本文.感兴趣的同学可以下载到源代码. github: https://github.com/vir56k/bluetooth ...
- Android 蓝牙 BLE 开发笔记
最近公司头戴换了一块蓝牙4.0 BLE模块,所以我们Android组要适配 BLE.Android BLE 需要 4.3 以上系统,api 还是非常简单的, 第一步就是扫描, 扫描到设备后就可以连接了 ...
- Android -BLE蓝牙小DEMO
代码地址如下:http://www.demodashi.com/demo/13890.html 原文地址: https://blog.csdn.net/vnanyesheshou/article/de ...
- 深入了解Android蓝牙Bluetooth ——《总结篇》
在我的上两篇博文中解说了有关android蓝牙的认识以及API的相关的介绍,蓝牙BLE的搜索,连接以及读取. 没有了解的童鞋们请參考: 深入了解Android蓝牙Bluetooth--<基础篇& ...
- 【转】蓝牙ble app开发(三) -- 抓包
原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...
- Android低功耗蓝牙(BLE)开发的一点感受
最近一段时间,因为产品的需要我做了一个基于低功耗蓝牙设备的Android应用,其中碰到了一些困难,使我深深体会到Android开发的难处:不同品牌,不同型号和不同版本之间的差异使得Android应用适 ...
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 : -- 官方文档 : https://develope ...
- Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...
随机推荐
- WebLogic使用总结(六)——WebLogic创建虚拟主机和修改启动端口号
一.在WebLogic中创建一个虚拟主机 找到虚拟主机面板,如下图所示:
- WebLogic使用总结(三)——WebLogic配置JNDI数据源
一.在WebLogic新建针对Oracle数据库的JNDI数据源 进入weblogic管理控制台,此处是远程访问:http://192.168.1.144:7001/console 点击左侧[ 域结构 ...
- 在ASP.NET MVC实现购物车,尝试一种不同于平常的购物车显示方式
通常,我们看到的购物车是这样的: 虽然这种购物车显示方式被广泛运用,但我个人觉得不够直观.如果换成这样呢? 本篇的源码放在了:https://github.com/darrenji/ShoppingC ...
- self.xxx = nil 可以等效于[_xxx release] _xxx= nil 么
如果属性是copy.retain的话是等价的.如下: - (void)setXXX:(NSString*)axx { if (_xxx != axx) { [_xxx release]; _xxx = ...
- Windows:chm 文件打开出现“已取消到该网页的导航”的解决方案
症状 解决方案
- Linux学习12-CentOS设置多个tomcat开机自启动
前言 一台服务器上有多个tomcat环境,重启服务器后,每次需要手动一个个启动服务,非常麻烦,于是可以设置tomcat开机自启动. tomcat开机自启动非常慢,可以修改jvm下配置解决tomcat开 ...
- 用TexturePacker打图集用于UGUI中
UGUI的原理则是,让开发者彻底模糊图集的概念,让开发者不要去关心自己的图集.做界面的时候只用小图,而在最终打包的时候unity才会把你的小图和并在一张大的图集里面.Editor->Projec ...
- 新闻编辑室第三季/全集The Newsroom迅雷下载
第三季 The Newsroom Season 3 (2014)看点:今日他们终于公布了续订第三季的消息,但同时也宣称第三季将会是<新闻编辑室>的最终季,对剧迷们来说可谓苦乐参半.讲述了一 ...
- unity 打包资源及网络请求资源包
第一步 导包 在Assets新建一个Editor目录 新建一个Test类 using UnityEngine; using System.Collections; using UnityEditor; ...
- Eclipse 汉化的和修改字体的方法
先进入 http://www.eclipse.org/babel/downloads.php 找到自己对应版本的网址,然后复制下来. 然后,进入eclipse.点工具栏上的Help - Install ...