Android蓝牙4.0之玩爆智能穿戴、家具(一)

科技评论

目前智能时代已经到来,智能穿戴,智能家居,一切都是智能的了,很幸运,我做的也是智能行业,所以发表点观点也是可以的,以我见到的,所谓智能穿戴,智能家居,无非都是用手机中的软件作为媒介,把手机和智能设备联系到了一起,那么联系到一起的方式就是我们很熟悉的蓝牙了,或者是无线网,但是大多数都使用的是蓝牙,包括很出色的Garmin智能手表,手环,也是通过蓝牙4.0让手机软件和手表硬件进行通信的,所以我们能够掌握蓝牙的技能显得格外重要,也并不是说他就是未来,谁也说不准,下一个替代者将会出现,但是目前好像还没有发现,在智能行业里,这就是必需品,但是据我估计,在未来5年内,不会有变动,蓝牙也在继续完善,传输效率更高了,总之优点还是很多的。智能让生活变得很神奇,虽然我身处在这个行业里,但是我也会感到很是神奇,列位,擦亮眼睛,让我们一起来完爆它吧

效果演示

扫盲

  1. 蓝牙有传统蓝牙(3.0以下)和低功耗蓝牙(ble,又称蓝牙4.0)之分

  2. android手机必须系统版本4.3及以上才支持BLE API。低功耗蓝牙较传统蓝牙, 传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电极低等等优点,这也是为什么近年来智能穿戴的东西越来越多,越来越火

  3. 传统蓝牙与低功耗蓝牙通信方式也有所不同,传统的一般通过socket方式,而低功耗蓝牙是通过Gatt协议来实现

  4. 低功耗蓝牙也叫BLE

蓝牙的组成

一、 请先看一张图


二、解释:

  1. BLE分为ServiceCharacteristicDescriptor三部分,每个部分都拥有不同的 UUID来标识

  2. 一个BLE设备可以拥有多个Service,一个Service可以包含多个Characteristic, 一个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value

  3. 通信数据一般存储在Characteristic内,目前一个Characteristic中存储的数据最大为20 byte

  4. 与Characteristic相关的权限字段主要有READ、WRITE、WRITE_NO_RESPONSE、NOTIFY。 Characteristic具有的权限属性可以有一个或者多个

介绍完了我们就开始看如何开发蓝牙4.0和开发流程

开发步骤

1. 检查该设备是否支持BLE设备
谷歌在Android4.3才开始支持BLE设备


2. 拿到蓝牙管理器
一个Android系统只有一个BluetoothAdapter

3. 打开蓝牙


4. 扫描附近蓝牙设备
注意:扫描蓝牙是耗较好资源的,所以扫描一段时间后应该及时关闭扫描

5. 实现扫描结果的回调

在第4步的时候在开始扫描的bluetoothAdapter.startLeScan(mLeScanCallback)中的mLeScanCallback,就是我们要实现的回调BluetoothAdapter.LeScanCallback,扫描的所有结果都会出现在回调里


6. 连接蓝牙设备

连接时应关闭扫描,连接是通过获取到设备的mac地址进行连接的


7. 实现连接成功或者失败状态的回调

点击要连接的设备之后,系统都会调用BluetoothGattCallback回调,在这里我定义的是mBluetoothGattCallback,然后在实现回调里的onConnectionStateChange方法,一旦设备的连接状态发生变化,系统会自动调用此方法


8. 连接成功后发现设备的所有服务

连接成功后紧接着就得去发现连接设备中的所有服务Service,为什么要发现服务?看下前面的第一张图你就明白了,继续实现BluetoothGattCallback中的onServicesDiscovered方法,因为一旦设备连接成功之后,系统会自动调用此方法


9. 向蓝牙设备发送数据

连接成功之后,我们总不能什么都不做吧,要做的就是和设备通信啊,也就是向设备发送数据喽,一般数据都会写在蓝牙设备的某个服务中的一个特征characteristic中,然后发送出去,当然这还得具体看厂家的蓝牙协议


一般硬件里读出写入的数据为二进制类型,所以要熟悉整型,字符串,二进制,十六进制等它们之间的转换,这些我会在蓝牙进阶里再展开,还有如何不停的写数据和读取数据,一并会在蓝牙进阶中给出最佳方案
10. 发送数据后的回调

蓝牙采用的是一应一答的模式,就是说,你给他发送了一个数据,不管你是发送失败还是成功,蓝牙都会给你应答一下,我们暂且这样理解,我们肯定也是希望我们自己能够监视自己到底有没有把数据发送出去,那么此时就应该重写BluetoothGattCallback中的onCharacteristicWrite方法


要注意的:
需要注意的是,蓝牙采用的是一应一答模式,也就是说,只要你对他做了操作之后,那么蓝牙设备都会响应你,就拿写入数据来说,只有当第一条数据写入完毕之后,才能写入第二条数据,换句话说,只有当这个回调中的onCharacteristicWrite方法执行完之后,才能继续写入数据,具体我们如何知道蓝牙什么时候响应和在什么地方响应,那么此时BluetoothGattCallback就显得尤为重要,蓝牙设备的所有响应都会在BluetoothGattCallback回调,并且执行相应的方法,下面我们就给出BluetoothGattCallback的解释和说明

11. BluetoothGattCallback

BluetoothGattCallback一共有9个方法,那么只有当你调用或者和连接的设备发生互动的时候,他的与之对应的方法才会回调,下面就是方法的对应

  1. notification对应onCharacteristicChanged;gatt.setCharacteristicNotification(characteristic, true);

  2. readCharacteristic对应onCharacteristicRead;gatt.readCharacteristic(characteristic);

  3. writeCharacteristic对应onCharacteristicWrite;gatt.wirteCharacteristic(mCurrentcharacteristic);

  4. 连接蓝牙或者断开蓝牙 对应 onConnectionStateChange;

  5. readDescriptor对应onDescriptorRead;

  6. writeDescriptor对应onDescriptorWrite;gatt.writeDescriptor(descriptor);

  7. readRemoteRssi对应onReadRemoteRssi;gatt.readRemoteRssi()

  8. executeReliableWrite对应onReliableWriteCompleted;

  9. discoverServices对应onServicesDiscoveredgatt.discoverServices()

结尾

  1. 完成了以上的10步,就算对蓝牙什么都不知道,那么你也能做出一个蓝牙的Demo,其中更详细的代码可以参照Demo中的源码

  2. 这只是蓝牙的初级阶段,但是已经很厉害了好么

  3. 当然你要是和蓝牙进行通信的话,这些东西还不止,你还需要掌握更多的知识,才能完全的玩转蓝牙4.0

  4. 以后我会把蓝牙的完整解决方案都会展示出来,为大家作为参考

  5. 原文可看到详细的源码

  6. 原文地址:

http://blog.csdn.net/fussenyu/article/details/53054637

遗留的问题

  1. 如何读取蓝牙给我们返回的数据,在什么地方读取?什么时候读取?

  2. 如何将很多条数据同时发给蓝牙设备?

  3. 如何解析蓝牙返回的数据,在什么地方解析?什么时候解析?

  4. 如何能将蓝牙的部分形成一个完整的方案,直接拿来用,而不是还要我自己去搭建!

  5. 列位,让我们一起期待蓝牙4.0的进阶篇吧

欢迎长按下图->识别图中二维码或者扫一扫关注我们的公众号:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容