低功耗蓝牙BLE以及iBeacon的开发笔记

本文介绍了作者在开发低功耗蓝牙BLE和iBeacon项目中的经历,详细阐述了BLE设备的使用步骤,包括理解profile、service、characteristic和UUID的重要性,以及如何读取蓝牙设备内部数据。提供了谷歌的BLE Demo作为参考资料,并分享了在解析广播数据和与设备交互过程中的关键点。
摘要由CSDN通过智能技术生成

题记:不要放弃自己进步的机会

背景

公司刚接了一个大项目,其中涉及低功耗蓝牙BLE,使用ibeacon设备来与微信的摇一摇功能互动,达到宣传,以及用户在厅店参加活动的效果.
那么刚好我上一个项目完结,落到我头上了,本来已经抱着辞职的心态来做了,是在是不会不会啊.
甲方要招标,使用它们提供的标准生产设备,要求我写一个控制软件

1.挣扎的开始

各种百度,google,发现国内资料很少,有的也是商业公司提供的sdk,这并不符合我需要,
google倒是不少,然而以我的英语水平,望洋兴叹罢了@
不发牢骚了:

首先你需要了解这些资料
1、profile
profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力。

2、service
service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据

3、characteristic
characteristic特征值,ble主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。

4、UUID
UUID,统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识
PS: 百度到的,我以一个过来人的身份保证这个很重要

2.资料,准备

资料看这里:

  • 这也是最重要的资料来源
    Android SDK 中的doc文档

  • 接上文,说完资料,

    这是一个很好的demo
    sdk\samples\android-22\connectivity\BluetoothLeGatt

该目录下为谷歌提供的demo,我的应用也是在它的基础上改进而成的.
由以下部分组成:
1.一个服务 BluetoothLeService,主负责与蓝牙设备进行数据交换

2.两个activity:DeviceControlActivity,DeviceScanActivity
见名知意,一个负责扫描设备,而两外一个与设备进行交互

3.一个SampleGattAttributes
主要是存储了一些UUID,我对它进行了加强

3.BLE设备的使用步骤概况

1.首先要说明的一点是,要求Android版本为4.3及其以上
接着确认设备支持

/**
 * 支持BLE
 *  check to determine whether BLE is supported on the device
 */
public void isSupported(){
     if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
            Toast.makeText(this, "设备不支持BLE功能", Toast.LENGTH_SHORT).show();
        }
    }
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值