# BLE
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/880ed281aff445f890766ccccbe81d7d)](https://www.codacy.com/app/xiaoyaoyou1212/BLE?utm_source=github.com&utm_medium=referral&utm_content=xiaoyaoyou1212/BLE&utm_campaign=Badge_Grade) [![License](https://img.shields.io/badge/License-Apache--2.0-green.svg)](https://github.com/xiaoyaoyou1212/BLE/blob/master/LICENSE) [![API](https://img.shields.io/badge/API-18%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=18)
**Android BLE基础操作框架,基于回调,操作简单。包含扫描、多连接、广播包解析、服务读写及通知等功能。**
- **项目地址:** [https://github.com/xiaoyaoyou1212/BLE](https://github.com/xiaoyaoyou1212/BLE)
- **项目依赖:** `compile 'com.vise.xiaoyaoyou:baseble:2.0.6'`
## 功能
- **支持多设备连接管理;**
- **支持广播包解析;**
- **支持自定义扫描过滤条件;**
- **支持根据设备名称正则表达式过滤扫描设备;**
- **支持根据设备信号最小值过滤扫描设备;**
- **支持根据设备名称或 MAC 地址列表过滤扫描设备;**
- **支持根据设备 UUID 过滤扫描设备;**
- **支持根据指定设备名称或 MAC 地址搜索指定设备;**
- **支持连接设备失败重试;**
- **支持操作设备数据失败重试;**
- **支持绑定数据收发通道,同一种能力可绑定多个通道;**
- **支持注册和取消通知监听;**
- **支持配置最大连接数,超过最大连接数时会依据 Lru 算法自动断开最近最久未使用设备;**
- **支持配置扫描、连接和操作数据超时时间;**
- **支持配置连接和操作数据重试次数以及重试间隔时间。**
## 简介
打造该库的目的是为了简化蓝牙设备接入的流程。该库是 BLE 操作的基础框架,只处理 BLE 设备通信逻辑,不包含具体的数据处理,如数据的分包与组包等。该库提供了多设备连接管理,可配置最大连接数量,并在超过最大连接数时会依据 Lru 算法自动断开最近最久未使用设备。该库还定制了常用的扫描设备过滤规则,也支持自定义过滤规则。该库所有操作都采用回调机制告知上层调用的结果,操作简单,接入方便。
## 版本说明
[![LatestVersion](https://img.shields.io/badge/LatestVersion-2.0.6-orange.svg)](https://github.com/xiaoyaoyou1212/BLE/blob/master/VERSION.md)
最新版本更新记录
- V2.0.6(2018-04-25)
- 增加字节数组与整型数转换方法;
- 增加间隔扫描的配置;
- 增加获取服务、特征值、属性的方法。
## 安装包下载
[BLE_V2.0.6.apk](https://github.com/xiaoyaoyou1212/BLE/blob/master/screenshot/BLE_V2.0.6.apk)
## 代码托管
[![JCenter](https://img.shields.io/badge/JCenter-2.0.6-orange.svg)](https://jcenter.bintray.com/com/vise/xiaoyaoyou/baseble/2.0.6/)
## 常见问题
[![FAQ](https://img.shields.io/badge/FAQ-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98-red.svg)](https://github.com/xiaoyaoyou1212/BLE/blob/master/FAQ.md)
## 效果展示
![BLE效果](https://github.com/xiaoyaoyou1212/BLE/blob/master/screenshot/screenshot.gif)
## 使用介绍
### 权限配置
蓝牙操作针对 6.0 以下系统需要配置如下权限:
```
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
```
而 6.0 以上系统还需要增加模糊定位权限:
```
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
```
为了简便操作,库中对蓝牙操作需要的权限都做了相关设置不需要重复设置,但 6.0 以上系统需要动态申请模糊定位权限。
### 引入 SDK
在工程 module 的 build.gradle 文件中的 dependencies 中添加如下依赖:
```
compile 'com.vise.xiaoyaoyou:baseble:2.0.5'
```
构建完后就可以直接使用该库的功能了。
### 初始化
在使用该库前需要进行初始化,初始化代码如下所示:
```
//蓝牙相关配置修改
ViseBle.config()
.setScanTimeout(-1)//扫描超时时间,这里设置为永久扫描
.setConnectTimeout(10 * 1000)//连接超时时间
.setOperateTimeout(5 * 1000)//设置数据操作超时时间
.setConnectRetryCount(3)//设置连接失败重试次数
.setConnectRetryInterval(1000)//设置连接失败重试间隔时间
.setOperateRetryCount(3)//设置数据操作失败重试次数
.setOperateRetryInterval(1000)//设置数据操作失败重试间隔时间
.setMaxConnectCount(3);//设置最大连接设备数量
//蓝牙信息初始化,全局唯一,必须在应用初始化时调用
ViseBle.getInstance().init(this);
```
初始化可以是在 Application 中也可以是在 MainActivity 中,只需要是在使用蓝牙功能前就行。还有需要注意的是,蓝牙配置必须在蓝牙初始化前进行修改,如果默认配置满足要求也可以不修改配置。
### 设备扫描
库中针对设备扫描定义了几种常用过滤规则,如果不满足要求也可以自己定义过滤规则,下面针对库中提供的过滤规则使用方式一一介绍:
- 扫描所有设备
```
ViseBle.getInstance().startScan(new ScanCallback(new IScanCallback() {
@Override
public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) {
}
@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
}
@Override
public void onScanTimeout() {
}
}));
```
- 扫描指定设备 MAC 的设备
```
//该方式是扫到指定设备就停止扫描
ViseBle.getInstance().startScan(new SingleFilterScanCallback(new IScanCallback() {
@Override
public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) {
}
@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
}
@Override
public void onScanTimeout() {
}
}).setDeviceMac(deviceMac));
```
- 扫描指定设备名称的设备
```
//该方式是扫到指定设备就停止扫描
ViseBle.getInstance().startScan(new SingleFilterScanCallback(new IScanCallback() {
@Override
public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) {
}
@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
}
@Override
public void onScanTimeout() {
}
}).setDeviceName(deviceName));
```
- 扫描指定 UUID 的设备
```
ViseBle.getInstance().startScan(new UuidFilterScanCallback(new IScanCallback() {
@Override
public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) {
}
@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
}
@Override
public void onScanTimeout() {
}
}).setUuid(uuid));
```
- 扫描指定设备 MAC 或名称集合的设备
```
ViseBle.getInstance().startScan(new ListFilterScanCallback(new IScanCallback() {
@Override
public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) {
}
@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
}
@Override
public void onScanTimeout() {
}
}).setDeviceMacList(deviceMacList).setDeviceNameList(deviceNameList));
```
- 扫描指定信号范围或设备正则名称的设备
```
ViseBle.getInstance().startScan(new RegularFilterScanCallback(new IScanCallback() {
@Override
public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) {
}
@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
}
@Override
public void onScanTimeout() {
}
}).setDeviceRssi(rssi).setRegularDeviceName(regularDeviceName));
```
其中扫描到的设备列表由 `BluetoothLeDeviceStore` 管理,而单个设备信息都统一放到`BluetoothLeDevice`中,其中包含了设备的所有信息,如设备名称、设备地址�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
近期为公司开发低功耗蓝牙模块的功能,由于是跨行进入就找了一些BLE开发的demo源码参考,有我自己写的也有找的大牛的demo,也有安卓官方蓝牙源码,都是android studio工程,主要部分蓝牙搜索,蓝牙通知的读写,有的能用有的不能用但有参考价值。我主要实现的功能是获取BLE的通知信息,大概流程就是先通过广播获取到你要的设备,然后连接设备后调用BluetoothGattCallback回调函数,onConnectionStateChange判断状态启动服务,然后onServicesDiscovered中根据特定uuid设置值BLE执行的操作,onCharacteristicChanged中获取到通知数据。这个流程我在压缩包中的BLueToothNotify的程序里实现的,写的最简便有注释,当然也有也写不合适的地方,我新手如门安卓做的这个不对的地方还望谅解。
资源推荐
资源详情
资源评论
收起资源包目录
低功耗蓝牙BLE开发Demo源码,安卓 (2000个子文件)
R.java 678KB
R.java 571KB
R.java 513KB
R.java 429KB
R.java 410KB
R.java 376KB
R.java 144KB
R.java 120KB
R.java 114KB
R.java 114KB
R.java 106KB
R.java 92KB
R.java 89KB
R.java 86KB
R.java 47KB
BluetoothLeService.java 46KB
GattAttributes.java 40KB
DeviceMirror.java 38KB
CompanyIdentifierResolver.java 36KB
GattDetailActivity.java 32KB
GattAttributeResolver.java 26KB
Utils.java 24KB
MainActivity.java 23KB
R.java 23KB
R.java 22KB
BleControl.java 20KB
R.java 19KB
BleFragment.java 19KB
BluetoothChatService.java 18KB
DeviceControlActivity.java 17KB
BluetoothChatFragment.java 15KB
SppBlueThoothActivity.java 14KB
Constants.java 13KB
DeviceControlActivity.java 13KB
DeviceControlActivity.java 13KB
BluetoothLeDevice.java 13KB
BluetoothLeService.java 13KB
BluetoothLeService.java 12KB
R.java 12KB
R.java 12KB
R.java 12KB
R.java 12KB
SppConnectService.java 11KB
UpdateActivity.java 11KB
UUIDDatabase.java 11KB
SppFragment.java 11KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
DeviceScanActivity.java 10KB
MainActivity.java 10KB
R.java 10KB
ViseBle.java 10KB
MergeAdapter.java 10KB
BluetoothDeviceManager.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
R.java 10KB
HexUtil.java 10KB
AdRecord.java 9KB
Util.java 9KB
DeviceScanActivity.java 9KB
MainActivity.java 9KB
DeviceDetailActivity.java 9KB
MainActivity.java 9KB
Logger.java 8KB
Log.java 8KB
GlucoseParser.java 8KB
ConnecdFragment.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
R.java 8KB
DeviceListActivity.java 8KB
HRMParser.java 8KB
AdvertiserService.java 8KB
MainActivity.java 7KB
ServicesActivity.java 7KB
DescriptorParser.java 7KB
ScannerFragment.java 7KB
SensorHubParser.java 7KB
DeviceControlActivity.java 7KB
BluetoothClassResolver.java 7KB
ReportAttributes.java 7KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- 马克love2023-07-25文件中提供的示例代码简洁明了,结构清晰,能够帮助开发者快速上手进行BLE开发。
- zh2223332023-07-25这份Demo源码的详细注释让人可以轻松理解其中的代码逻辑,对于学习者来说非常友好。
- 周林深2023-07-25这份Demo源码不仅可以满足一般的低功耗蓝牙开发需求,而且还提供了一些额外的功能和扩展性,非常实用。
- 柏傅美2023-07-25这个BLE开发Demo源码非常实用,可以帮助初学者快速入门,并提供了一些有关低功耗蓝牙技术的实例。
- XiZi2023-07-25这个Demo源码对安卓平台的蓝牙开发提供了良好的支持,可以方便地实现低功耗蓝牙的连接与数据交互。
Drumsticks
- 粉丝: 3
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功