Android BLE蓝牙4.0开发详解

Android BLE蓝牙4.0开发详解

一、简介
    1、蓝牙版本介绍:
    蓝牙发展至今经历了8个版本的更新。1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2。那么在1.x~3.0之间的我们称之为传统蓝牙,4.x开始的蓝牙我们称之为低功耗蓝牙(即蓝牙ble),当然4.x版本的蓝牙也是向下兼容的。android手机必须系统版本4.3及以上才支持BLE API。

    2、蓝牙低功耗芯片有两种模式:单模和双模。
    单模:只能执行低功耗协议栈,也就是只支持ble。
        双模:支持传统蓝牙以及ble的使用。
   
    3、传统蓝牙低功耗蓝牙区别:
    1)低功耗蓝牙较传统蓝牙,传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电极低等等优点。这也是为什么近年来智能穿戴的东西越来越多,越来越火。
    2)还有传统蓝牙与低功耗蓝牙通信方式也有所不同,传统的一般通过socket方式,而低功耗蓝牙是通过Gatt协议来实现。若是之前没做过传统蓝牙开发,也是可以直接上手低功耗蓝牙开发的。因为它们在通信协议上都有所改变,关联不大。
    3)低功耗蓝牙也叫BLE,下面都称之为BLE

二、关键术语和概念:
1、Gatt:(Generic Attribute Profile)—通用属性配置文件,用于在ble链路上发送和接收被称为“属性”的数据块。目前所有的ble应用都是基于GATT的。一个设备可以实现多个配置文件。

2、ble交互的桥梁是Service、Characteristic、Desciptor。

3、Characteristic:可以理解为一个数据类型,它包括一个value和0至多个对此characteristic的描述(Descriptor)。

4、Descriptor:对Characterisctic的描述,如范围、单位等。

5、Service:Characteristic的集合。它可以包含多个Characteristic。

6、BLE分为三部分:Service,Characteristic,Descriptor。这三部分都用UUID作为唯一标识符。UUID为这种格式:0000ffe1-0000-1000-8000-00805f9b34fb。比如有3个Service,那么就有三个不同的UUID与Service对应。这些UUID都写在硬件里,我们通过BLE提供的API可以读取到。
    一个BLE终端可以包含多个Service, 一个Service可以包含多个Characteristic,一个Characteristic包含一个value和多个Descriptor,一个Descriptor包含一个Value。Characteristic是比较重要的,是手机与BLE终端交换数据的关键,读取设置数据等操作都是操作Characteristic的相关属性。
    比如我有个BLE的硬件,我们可以用android 版本的light blue去连接上这个硬件,进入应用,就可以扫描到你的BLE设备,点击就会连接上,然后我们可以看到UUID列表,这里每一行的UUID都代表一个Service,再点击任意一行进去,又可以看到一个UUID列表,这里每一行的UUID都代表一个Characteristic,再点击任意一行进去,即可以操作这个Characteristic,比如写入数据或者读出数据等。

7、UUID(Universally Unique Identifier),含义是通用唯一识别码,它是在一定范围内唯一的机器生成的标识符。标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。

8、ble中有四个角色:

广播者(Braodcaster):广播发送者,是不可连接的设备。

观察者(Observer):扫描广播,不能够启动连接。

广播者和观察者不能建立连接。应用:温度传感器和温度显示器。

---------------------------------------------------------------------

外围(periphery):广播发送者,可连接的设备,在单一链路层作为从机。

中央(central):扫描广播,启动连接,在单一或多链路层作为主机。

中央和外围可以进行配对、连接、数据通信。应用:手机和手表。

一个中央可以同时连接多个周边,但是一个周边只能连接一个中央(但是我测试,周边可以连接多个中央设备,并且能正常通信)。


三、BLE蓝牙4.0 android开发(中央设备)


注意:Android 4.3(API 18)引入ble相关接口。
相关类
目录:frameworks/base/core/java/android/bluetooth/
BluetoothGatt:中央使用和处理数据;
BluetoothGattCallback:中央的回调。

BluetoothGattServer:周边提供数据;
BluetoothGattServerCallback:周边的回调

BluetoothGattService:Gatt服务
BluetoothGattCharacteristic:Gatt特性
BluetoothGattDescriptor:Gatt描述


1、首先在程序里我们要开启蓝牙权限
<uses-permission android:name="android.permission.BLUETOOTH"/>  
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

如果你想声明你的应用程序只能在支持BLE的设备上运行,可以将下面声明包含进你的应用程序manifest文件中:
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"></uses-feature>


2、判断设备是否支持蓝牙ble:
getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)


3、获取蓝牙适配器BluetoothAdapter
    final BluetoothManager bluetoothManager =(BluetoothManager) getSystemService(Context
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值