Android ble 蓝牙4.0 总结

Android 蓝牙4.0(BLE)开发实现对蓝牙的写入数据和读取数据 由于最近学校组织了一个移动APP(安卓)设计大赛,自己也学习安卓有一段时间了,就跟同学商量一起去参加试试,一拍即合,然后我们就开始想idea,因为最近可穿戴设备比较火,我们也就想试试。经过商量,我负责Android上位机的开发,同学负责下位机的开发。 上位机的开发主要是低功耗蓝牙BLE的开发,然后就开始找资料,各种找,最后谷歌官方提供的demo还有其他网友基于官方demo修改的demo,结合网上 阅读详情
本文介绍Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level < 18,也是用不了蓝牙4.0的哦。
首先发一下官方的demo,有兴趣的可以过去看看:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html。android系统4.3以上,手机支持蓝牙4.0,具有搜索,配对,连接,发现服务及特征值,断开连接等功能, 下载地址:http://download.youkuaiyun.com/detail/lqw770737185/8116019。
一、了解api及概念
1.1 BluetoothGatt
 继承BluetoothProfile,通过BluetoothGatt可以连接设备(connect),发现服务(discoverServices),并把相应地属性返回到  BluetoothGattCallback 
1.2 BluetoothGattCharacteristic
 相当于一个数据类型,它包括一个value和0~n个value的描述(BluetoothGattDescriptor)
1.3 BluetoothGattDescriptor
 描述符,对Characteristic的描述,包括范围、计量单位等
1.4 BluetoothGattService
服务,Characteristic的集合。
1.5 BluetoothProfile
 一个通用的规范,按照这个规范来收发数据。
1.6 BluetoothManager
 通过BluetoothManager来获取BluetoothAdapter
 BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
1.7 BluetoothAdapter
 一个 Android 系统只有一个BluetoothAdapter ,通过BluetoothManager 获取
 BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();
1.8 BluetoothGattCallback
 已经连接上设备,对设备的某些操作后返回的结果。这里必须提醒下,已经连接上设备后的才可以返回,没有返回的认真看看有没有连接上设备。
private BluetoothGattCallback GattCallback = new BluetoothGattCallback() {
    // 这里有9个要实现的方法,看情况要实现那些,用到那些就实现那些
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState){};
    public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status){};
};
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
BluetoothGatt gatt = device.connectGatt(this, false, mGattCallback);
1.8.1:notification对应onCharacteristicChanged;
 gatt.setCharacteristicNotification(characteristic, true);
1.8.2:readCharacteristic对应onCharacteristicRead;
 gatt.readCharacteristic(characteristic);
1.8.3: writeCharacteristic对应onCharacteristicWrite;
 gatt.wirteCharacteristic(mCurrentcharacteristic);
1.8.4:连接蓝牙或者断开蓝牙 对应 onConnectionStateChange;
1.8.5: readDescriptor对应onDescriptorRead;
1.8.6:writeDescriptor对应onDescriptorWrite;
   gatt.writeDescriptor(descriptor);
1.8.7:readRemoteRssi对应onReadRemoteRssi;
 gatt.readRemoteRssi()
1.8.8:executeReliableWrite对应onReliableWriteCompleted;
1.8.9:discoverServices对应onServicesDiscovered。
 gatt.discoverServices()
1.9 BluetoothDevice
扫描后发现可连接的设备,获取已经连接的设备
二、开启蓝牙权限
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
如果 android.hardware.bluetooth_le设置为false,可以安装在不支持的设备上使用,判断是否支持蓝牙4.0用以下代码就可以了
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    Toast.makeText(this, "设备不支持蓝牙4.0", Toast.LENGTH_SHORT).show();
    finish();
}
三、对蓝牙的启动关闭操作
1、利用系统默认开启蓝牙对话框
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
2、后台打开蓝牙,不做任何提示,这个也可以用来自定义打开蓝牙对话框啦(最好是线程中开启,不然部分机型黑屏现象)
mBluetoothAdapter.enable();
3、后台关闭蓝牙
mBluetoothAdapter.disable();
Android蓝牙4.0 BLE开发坑总结 onServicesDiscovered 回调里不能直接执行 write /readDataFromCharacteristic() 或者 enableNotificationOfCharacteristic之类的,而要放到主线程里执行,如 handler.post( … ); 如果发现连接上了,service也discover到了,但是始终不能触发onCharacteristicChanged的, 阅读详情

相关推荐

谈谈蓝牙4.0(BLE)模块与安卓的数据交互

开发蓝牙4.0也快两个月了,给我的感受还是颇多的。 我开发的是与TI的蓝牙模块CC2540交互的安卓端蓝牙软件,对于安卓都不是很熟悉的我,是一个不小的挑战。 废话不多说,直接谈项目。 我用的是google官方的源码,它本身把很多基本框架都搭好了。直接就能运行,当然前提是在Android Studio上,如果是Eclipse上还需要稍作改动。我们先来看下代码。它主要有两

zzy131250的博客 7387

Android蓝牙4.0BLE设备通信方法

最新在项目中接触到蓝牙BLE设备,参考了一下官方文档,使用官方API可以使用4.0协议很简单的和设备进行通信,下面就把经验分享一下,本人主要涉及蓝牙功能开启,设备搜索,两个设备之间的通信,首先想使用蓝牙4.0协议调试设备必须是Android4.3以上,由于智能电视本身蓝牙功能就是开启的,所以本文省略掉开启蓝牙的介绍,大家有兴趣可以看一下官方API。首先是访问蓝牙需要的权限mantifest注册如下

lihuiqi239的博客 655

Android蓝牙开发(二) BLE4.0低功耗蓝牙

一、BLE4.0低功耗蓝牙 Bluetooth Low Energy,蓝牙低功耗,是从蓝牙4.0开始支持的技术。相较传统蓝牙,传输速度更快、覆盖范围广、安全性高、延时短、耗电低等特点。 二、关键术语 1.GATT(通用属性配置):通用属性配置文件,用于ble链路上发送和接收“属性”的数据块。目前所有的ble应用都是基于GATT的,一个设备可以实现多个配置文件。 2.ATT(属性

Near的博客 6205

Android 蓝牙4.0(ble)开发的解决方案

最近,随着智能穿戴式设备、智能医疗以及智能家居的普及,蓝牙开发在移动开中显得非常的重要。由于公司需要,研究了一下,蓝牙4.0在Android中的应用。以下是我的一些总结。           1.先介绍一下关于蓝牙4.0中的一些名词吧:                (1)GATT(Gneric Attibute  Profile) 通过ble连接,读写属性类小数据Profile通用的规

东子的博客 细节决定成败,点滴铸就辉煌。 3578

使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解

示例源码: https://github.com/junkchen/BleLib/tree/master/sample BleLib是Android低功耗蓝牙4.0及以上开发的辅助库,一行代码解决Ble初始化、扫描、连接、特性读写、设置通知等操作。

JunkChen 2万+

【BlueDroid】【BLE】精讲Android BLE 4.0蓝牙开发代码

简单的说,就是BLE是基于GATT实现的,BLE分为三个部分Service、Characteristic、Descriptor,每个部分都拥有不同的 UUID来标识。一个BLE设备可以拥有多个Service,一个Service可以包含多个Characteristic, 一个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value。这个需要依据蓝牙模块协议而定,只有在这里订阅了,才能接收到蓝牙模块发送过来的数据。接口,数据的处理就在该接口处理。

风云说通信 874

【免费下载】 蓝牙BLE调试助手:开源、高效、易用的蓝牙调试工具

蓝牙BLE调试助手:开源、高效、易用的蓝牙调试工具 【下载地址】蓝牙BLE调试助手软件源码分享 本仓库提供了一个专用于蓝牙4.0 BLE调试的软件源码。该软件能够扫描周边的蓝牙设备、连接设备、查看服务列表、特性值列表,并支持读写操作。无论是初学者还是有经验的开发者,都可以通过该源码快速上手蓝牙BLE调试 ...

gitblog_09709的博客 3005

Ble蓝牙4.0串口

Ble蓝牙4.0串口,是一款Android平台蓝牙4.0通信工具,可进行蓝牙串口通信测试,连接单片机及PC的蓝牙串口。 功能: ●支持中文发送接收 ●支持Hex十六进制和String字符串发送和显示 ●支持快捷AT命令 注:须Android 4.3以上系统。

[Android][BLE] 获取连接中的RSSI信号强度值

调用接口:readRemoteRssi() BluetoothGatt mBluetoothGattTemp = mDevice.connectGatt(mContext, false, mGattCallback); mBluetoothGattTemp.readRemoteRssi(); 收到回调: private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { @Override

凡人的专栏 1838

android4.0蓝牙收发数据demo

android4.0蓝牙收发数据demo,可以自己设置收发uuid。

使用BLE4.0 与 蓝牙设备详解

技术点:对于初步接触iOS开发者,相信这个工具类会让你了解蓝牙类的使用与结构

Android 蓝牙强度Rssi

1.什么是Rssi RSSI(接收信号强度)Received Signal Strength Indicator Rss=10logP, 只需将接受到的信号功率P代入就是接收信号强度(灵敏度)。 [例1] 如果发射功率P为1mw,折算为dBm后为0dBm。 [例2] 对于40W的功率,按dBm单位进行折算后的值应为: 10lg(40W/1mw)=10lg(40000)=10lg4+10

疾风的博客 1万+

R语言实战:GEO单细胞数据下载与自动化整理全流程(附代码)

本文详细介绍了使用R语言从GEO数据库下载scRNA-seq数据并实现自动化整理的完整流程。通过GEOquery和Seurat等工具包,读者可以高效获取单细胞RNA测序数据,完成从原始数据下载到预处理的全过程,最终生成可直接用于分析的Seurat对象。文章包含完整代码示例,特别适合生物信息学研究者处理单细胞数据。

weixin_29061821的博客 427

Android开发蓝牙4.0BLE开发

与传统蓝牙相比,蓝牙4.0耗电极低,传输速度快,最多可连接27个设备,最大无线范围超过100米,反正就是各种好。 注意:安卓系统要求4.3及以上

talentclass_ctt的博客 941

雷达仿真:FMCW TDMA-MIMO 3D点云获取方法

2 信号建模摘要:通过设置时分复用(TDMA)波形结合FMCW毫米波雷达仿真获取目标的距离、速度和方位角3D点云信息。在本案例中,首先通过发射天线交替发射FMCW波形并通过接收天线依次接收回波信号从而得到雷达原始数据,其次对获取的原始数据依次经行距离、速度、角度估计从而输出目标的3D点云。阅读本文档,你将对TDMA-MIMO雷达的基本原理、毫米波雷达距离估计、速度估计以及角度估计的基本原理有所了解,另外CA-CFAR恒虚警以及MUSIC-DOA估计在本案例中也有所涉及。1 TDMA-MIMO原理。

Poulen的博客 6959

蓝牙钥匙 第48次 全面解析防中继攻击保护:从原理到防护技术实践

中继攻击已成为物联网安全领域的重要威胁,2023年全球相关损失达数十亿美元。本文深入分析中继攻击原理,揭示其通过转发设备延长通信距离而不破解加密的特点。重点探讨两种关键防护技术:基于距离测量的方法(包括UWB超宽带技术)可精确检测异常距离;基于时间戳的挑战-响应机制则通过严格时间窗口识别中继延迟。文章还提出多层次防护体系构想,结合AI异常检测和量子安全协议等前沿技术。研究显示,集成多种防护技术并遵循行业标准是应对中继攻击的有效途径,为物联网设备安全提供重要参考。

IT深耕十余载,大道之简 1829

安卓基于蓝牙4.0的BLE开发

基于实际android项目整理的BLE开发过程和标准

bendan132的博客 793

ARM和FPGA之间的通信(硬件原理图篇)

设计该开发板的初衷是为了学习,但也希望今后能扩展其功能,看到大家都在diy示波器,自己也非常冲动的想DIY一把,于是呼选了arm+fpga的方案,fpga主要用来实现数据的高速采样,而ARM则提供数据的显示,以及一些人机交互的功能。那么该方案中最重要的地方就是ARM和FPGA之间的通信如何实现了。在网上查了很多的资料,有说将FPGA作为ARM的一个外设,可以通过DMA的方式来直接访问;也有说把FP

屌yy的博客 5万+

android 蓝牙4.0(BLE)开发

最近刚好项目需要手机与蓝牙模块通信,基于蓝牙4.0,网上资料较少也有些小坑,故作一下总结。关键术语和概念 蓝牙有传统蓝牙(3.0以下)和低功耗蓝牙(BLE,又称蓝牙4.0)之分,而蓝牙4.0开发需要android4.3版本(API 18)及以上才支持BLE API。相比传统的蓝牙,BLE更显著的特点是低功耗。这一优点使android App可以与具有低功耗要求的BLE设备通信,如近距离传感器、心脏速

wbin233的博客 2959

Transformer从菜鸟到新手(一)

从本文开始回顾一下Transformer的原理与实现细节,包括分词算法BPE的实现。最终利用从零实现的Transformer模型进行英中翻译。

日积月累,天道酬勤 2124

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

Android 蓝牙4.0 BLE 串口模块最佳实践

本文较长,阅读大约15分钟,难得的精品文章。很多同学对BLE感兴趣,确实,作为主流的蓝牙协议,它还是很有竞争性的,但是BLE没有硬件也不好调试,所以我买了一块开发板来给大家写这篇文章,讲解各种细节和思路,希望你看完这篇文章能对BLE有一个更加清晰的认识。强烈推荐我的慕课网新课Android X/音视频开发/社交匹配算法/即时通信/语音识别/App优化/安全加固点击阅读原文直达或点击下方地址查看详情...

刘桂林 2408

23、电器元件符号及封装大全(2025版本)

总计28类电器元件符号和封装。

XU157303764的博客 2655

安卓BLE蓝牙4.0DEMO:项目的核心功能/场景

安卓BLE蓝牙4.0DEMO:项目的核心功能/场景 去发现同类优质开源项目:https://gitcode.com/ 安卓BLE蓝牙4.0DEMO,实现数据收发,助力快速开发蓝牙应用。 项目介绍 在当今智能设备日益普及的背景下,蓝牙技术作为连接各种设备的桥梁,扮演着至关重要的角色。安卓BLE蓝牙4.0DEMO应运而生,为开发者提供了一种便捷的方式来实现数据的收发。这个自制的BLE DEMO专注于与...

gitblog_06736的博客 423

RK35X8调试YT8531单网口千兆以太网PHY芯片,修复ping不通或者IP地址丢失的问题

RK35X8上调试YT8531以太网PHY

荻夜的博客 3976

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙4.0(BLE) 开发

简介 蓝牙发展至今经历了9个版本的更新。1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2、5.0。那么在1.x~3.0之间的我们称之为传统蓝牙,4.x开始的蓝牙我们称之为低功耗蓝牙也就是蓝牙ble,当然4.x版本的蓝牙也是向下兼容的。android手机必须系统版本4.3及以上才支持BLE API。蓝牙4.0较传统蓝牙也有很大大差别: 随着蓝牙技术由手机、游戏、耳机、便携电脑和...

浪克oo的博客 1648

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: j2ee中常用的五种远程调用协议
下一篇: android二维码、条形码分分钟秒杀
yh_coco
博客等级 码龄14年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值