android 蓝牙信息提醒,Android蓝牙与BLE通信相关的读、写、通知、指示操作
这段时间一直在进行手机与BLE的相关项目开发,其中对读数据、写数据、接收通知消息、接收指示型消息这几种操作有了一些了解,今天贴出来跟大家分享一下。(关于蓝牙的搜索,连接,获取服务,获取特征值等方法这里就不再赘述了,网上很多前辈总结的很全面,可以自行搜索。
这几个操作的共同特性都是通过调用回调方法进行数据的获取和交换,所以进行相关操作之前熟悉每个操作相关的回调方法是很有必要的。
1.接收通知消息(setCharacteristicNotification):
前期进行BLE开发或许很容易混淆读操作和接收通知消息,这里我按自己的理解粗糙的讲解一下。通知是BLE终端主动或是相关操作触发而发出的数据,任何一个用于权限的主机都可以读取到这个数据。
而读操作时谁进行读数据操作,然后BLE终端才会被动的发出一个数据,而这个数据只能是读操作的对象才有资格获得到这个数据。
//首先必须获取通知通道(这里的UUID根据自己BLE终端,自己进行读取操作获得)
service = mBluetoothGatt.getService(uuid_s);
characteristic = service.getCharacteristic(uuid_c);
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(uuid_d);
if (descriptor != null) {
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
}
mBluetoothGatt.setCharacteristicNotification(characteristic, true);
//然后重写回调方法,跟根据通知数据的类型进行解析操作,判断是否接收到通知利用Log日志可以观察到。
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
Log.i(TAG, "onCharacteristicChanged!");
//进行接收数据的相关操作
String data = characteristic.getValue();
}
super.onCharacteristicChanged(gatt, characteristic);
}
2.读数据(readCharacteristic):
读数据,顾名思义是对BLE进行读取数据的操作,这个数据
//首先获取读数据相关的通道
service = mBluetoothGatt.getService(uuid_s);
characteristic = service.getCharacteristic(uuid_c);
mBluetoothGatt.readCharacteristic(characteristic);
3.写数据(readCharacteristic):
if (mBluetoothGatt != null){
if (characteristic != null){
characteristic.setValue(data);
mBluetoothGatt.writeCharacteristic(characteristic);
Log.i(TAG, "writeData:写了一次数据!");
}
}
4.指示(readCharacteristic):
//获取指示通道
characteristic = service.getCharacteristic(uuid2_c_n);
if (characteristic != null){
BluetoothGattDescriptor descriptor = characteristic_notify.getDescriptor(uuid_d);
if (descriptor != null) {
descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
Log.i(TAG, "Descriptor write: " + mBluetoothGatt.writeDescriptor(descriptor));
mBluetoothGatt.setCharacteristicNotification(characteristic , true);
}
}
以上几种操作都需要对应的uuid,uuid的值一般对应的蓝牙工程会在接口文档中给出,我们按照文档进行相关的操作。——一篇在草稿中躺了两年的博客,还是发出来日后温习一遍把。
android 蓝牙信息提醒,Android蓝牙与BLE通信相关的读、写、通知、指示操作相关推荐
- Android蓝牙与BLE通信相关的读、写、通知、指示操作
这段时间一直在进行手机与BLE的相关项目开发,其中对读数据.写数据.接收通知消息.接收指示型消息这几种操作有了一些了解,今天贴出来跟大家分享一下.(关于蓝牙的搜索,连接,获取服务,获取特征值等方法这里 ...
- android堆栈信息,android死锁致重启问题分析
摘自:http://www.2cto.com/kf/201207/142853.html 使用过Android的同学,尤其是用过山寨pad,应该对Android的重启问题印象深刻吧.Android由于 ...
- android 学生信息管理系统,android学生信息管理系统的报告.docx
android学生信息管理系统的报告 基于Android的学生信息管理系统初探 [摘要]智能移动端迅猛发展,学生信息管理的数字化是教学透明的又一个重要体现,本文主要阐述基于基于Android的学生信息 ...
- android 智能设备管理,基于Android平台上BLE的智能家居控制系统设计与实现
摘 要:基于智能家居无线控制的市场需求,以集成了CSR1010低功耗蓝牙芯片的智能插座为例,在Android平台上设计了一套基于蓝牙4.0通信协议的智能家居控制系统,实现了对此智能插座的无线通断电控制 ...
- 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
文章目录 前言 一.SOCKET 网络套接字初始化 二.SOCKET 网络套接 读取远程端 ( Android 模拟器 ) 信息 三.SOCKET 网络套接 向远程端 ( Android 模拟器 ) ...
- Android BLE蓝牙4.0开发 实现扫描、连接、通讯、获取通知、特性等 (一、打开蓝牙 进行扫描)
目录 首先说下蓝牙4.0 目前android蓝牙有2种: ble蓝牙开发流程: 1.首先当然是进行权限申请啦: 2.获取蓝牙适配器 BluetoothAdapter 3.打开蓝牙 4.关闭蓝牙 5.在 ...
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 : -- 官方文档 : https://develope ...
- Android BLE(低功耗蓝牙)在Android不同版本的适配问题,华为Mate30扫描不到蓝牙模块
一.前言 截止到本文完成的日期为止(2020年04月16日),笔者对Android 5.0~Android 10的部分手机进行了适配测试.该文中所遇到的问题基本都出现在国产定制系统(EMUI.MIUI ...
- Android蓝牙开发系列文章-玩转BLE开发(一)
我们在<Android蓝牙开发系列文章-策划篇>中计划讲解一下蓝牙BLE,现在开始第一篇:Android蓝牙开发系列文章-玩转BLE开发(一).计划要写的BLE文章至少分四篇,其他三篇分别 ...
- Android 检查版本更新服务并下载,BLE蓝牙连接,BLE蓝牙连接1对多及通用工具
https://github.com/inksnow/InksLibrary 引用方法: 1. aar 应用 apply plugin: 'com.android.application' andro ...
最新文章
- Linux疑难杂症解决方案100篇(十)-uptime命令查看linux系统负载
- ADO.NET学习笔记--数据分组
- linux下的ssh和rynsc
- 【Nutch2.2.1基础教程之3】Nutch2.2.1配置文件
- 浅说深度学习(4):增强学习
- 一个人不孤单,想一个人才孤单
- 外媒:现代和起亚计划在新一代电动汽车上使用碳纳米管加热器
- 华为郭平:很愿意使用高通芯片制造手机
- has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present---nginx工作笔记006
- 【密码学原理与实践】(五)希尔密码
- 基于Windows AD的单点登录系统
- 朋友公司年会需要一个抽奖程序,我花1小时给她写了一个...
- c语言谷歌坐标转百度坐标,百度经纬度和google经纬度转换测试
- win7系统服务优化——服务列表禁止项
- JavaWeb开发QQ动态表情-源文件
- 在聊天群中,如何快速获取信息,了解群中讨论的话题。
- 国家一级建造师—工程经济—第一章—第四节
- [zz]2007年的152条牛人经典BT语录,强烈推荐!
- MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view
- EAP-TLS/EAP-TTLS/EAP-PEAP
热门文章
- 彼时彼刻,正如此时此刻——评《让×××飞》
- Android Studio中的typo波浪线提示
- KEIL5报错error: #67: expected a “}“
- 关于汽车诊断OBD的理解(ISO15031-5)
- 小象学院-人工智能机器学习
- JS onblur 和 onfocus 造成死循环
- 给老笔记本换固态硬盘,能提升系统速度吗?
- 2021-08-30 天翼云 搬家问题
- 【Oracle】存储过程 遍历树 举例emp表的树状结构
- Swagger之OAS 3.0配置