Android BLE 蓝牙开发框架手机外设「Android BLE 蓝牙开发框架」
2025-01-12
BluetoothKit是一款功能强大的Android蓝牙通信框架,支持经典蓝牙和低功耗蓝牙设备混合扫描,提供了一系列简单易用的接口用于低功耗蓝牙设备的连接,数据读写,通知等。
特点
一、支持经典蓝牙和BLE蓝牙混合扫描,支持自定义扫描策略
作为智能家居平台,接入的设备包括经典蓝牙和BLE,因此扫描设备时需要两者混合进行,而设备扫描场景不同,扫描策略也会不一样,因此需要支持扫描策略可配置。
二、充分解决了Android中BLE兼容性和稳定性问题
Android系统对蓝牙4.0支持得并不完善,有许多bug, BluetoothKit很好地解决了其中大部分已知的问题。
三、简单易用,接口简洁明了
BluetoothKit采用异步串行化策略处理所有设备操作,并支持任务超时及出错重试。
技术
一、实现了一个完整的跨进程异步任务队列,支持任务超时、出错重试及防御队列溢出
二、拦截并Hook系统层蓝牙Binder,实现对所有蓝牙设备通信的监控,当同时连接设备数过多时会自动断掉活跃度最低的设备
三、整个框架封装在一个service中,可灵活指定service所在进程。通过client与service通信,client可源于多个不同进程,因此适用于多进程架构的app
四、屏蔽了接口异步回调可能持有调用端Activity引用导致的内存泄露
五、利用动态代理自动将所有操作封闭在工作线程,所以整个框架无锁
使用
// 首先,需要按如下方式初始化BluetoothClient:
BluetoothClient mClient = BluetoothClient.getInstance(context);
// 扫描设备:支持经典蓝牙和BLE设备混合扫描,可自由定制扫描策略如下:
SearchRequest request = new SearchRequest.Builder()
.searchBluetoothLeDevice(3000, 3)
.searchBluetoothClassicDevice(5000)
.searchBluetoothLeDevice(2000)
.build();
mClient.search(request, new SearchResponse() {
@Override
public void onSearchStarted() {
}
@Override
public void onDeviceFounded(SearchResult device) {
}
@Override
public void onSearchStopped() {
}
@Override
public void onSearchCanceled() {
}
});
// 停止蓝牙扫描
mClient.stopSearch();
// BLE设备连接
mClient.connect(MAC, new BleConnectResponse() {
@Override
public void onResponse(int code, Bundle data) {
if (code == REQUEST_SUCCESS) {
}
}
});
// BLE设备断开连接
mClient.disconnect(MAC);
// 读取BLE设备
mClient.read(MAC, serviceUUID, characterUUID, new BleReadResponse() {
@Override
public void onResponse(int code, byte[] data) {
if (code == REQUEST_SUCCESS) {
}
}
});
// 写BLE设备
mClient.write(MAC, serviceUUID, characterUUID, bytes, new BleWriteResponse() {
@Override
public void onResponse(int code) {
if (code == REQUEST_SUCCESS) {
}
}
});
// 打开设备通知
mClient.notify(MAC, serviceUUID, characterUUID, new BleNotifyResponse() {
@Override
public void onNotify(UUID service, UUID character, byte[] value) {
}
@Override
public void onResponse(int code) {
if (code == REQUEST_SUCCESS) {
}
}
});
// 关闭设备通知
mClient.unnotify(MAC, serviceUUID, characterUUID, new BleUnnotifyResponse() {
@Override
public void onResponse(int code) {
if (code == REQUEST_SUCCESS) {
}
}
});
// 读取rssi
mClient.readRssi(MAC, new BleReadRssiResponse() {
@Override
public void onResponse(int code, Integer rssi) {
if (code == REQUEST_SUCCESS) {
}
}
});
- 最新文章
- 2025-05-30【tr1.4】泰拉瑞亚最详尽的钓鱼攻略1.4版 金鱼杆不是梦!泰拉瑞亚手机合成表「【tr1.4】泰拉瑞亚最详尽的钓鱼攻略1.4版 金鱼杆不是梦!」
- 2025-05-30PICO启动“全民优化师”活动,征集VR游戏性能优化方案
- 2025-05-30TOSHIBA代理商东芝手机「TOSHIBA代理商」
- 2025-05-30『轻小说分享』带着智慧型手机闯荡异世界智慧型手机「『轻小说分享』带着智慧型手机闯荡异世界」
- 2025-05-30互传手机互传换机助手手机互传「互传手机互传换机助手」
- 2025-05-30各大媒体优劣对比_手机屏幕防忽悠指南:LCD与OLED屏幕优劣势分析手机媒体「各大媒体优劣对比_手机屏幕防忽悠指南:LCD与OLED屏幕优劣势分析」
- 相关文章
- 同类文章
- 2025-03-18新机: iPhone17ProMax就长这样;华为发布会官宣;天玑9400+定档;OPPOFindX8Ultra镜组亮相
- 2025-01-30现在是几九天了2025年,几九了现在,11月28日今天是几九第几天
- 2025-01-12Android BLE 蓝牙开发框架手机外设「Android BLE 蓝牙开发框架」
- 热门文章
- 2025-05-30java游戏修改存档_【教你在用一键存档手机端修改JAVA游戏人物属性BT】详细教程...java手机游戏「java游戏修改存档_【教你在用一键存档手机端修改JAVA游戏人物属性BT】详细教程...」
- 2025-05-30Pixel 5和Pixel4a 5G这代的体验pixel手机「Pixel 5和Pixel4a 5G这代的体验」
- 2025-05-30圣安地列斯(GTA: SA)圣安地列斯手机版「圣安地列斯(GTA: SA)」
- 2025-05-30手机恢复出厂设置超详细步骤,轻松解决卡顿与错误问题手机恢复出厂设置后怎么还原数据「手机恢复出厂设置超详细步骤,轻松解决卡顿与错误问题」
- 2025-05-22鲁医健康说|春夏时节腹泻人群增多,导致腹泻的主要病原体有哪些?其传播途径有何特点?
- 2025-05-22公牛充电宝10000毫安多少钱(公牛充电宝10000毫安充满电多长时间)10000毫安的充电宝能充手机几次「公牛充电宝10000毫安多少钱(公牛充电宝10000毫安充满电多长时间)」