精华内容
下载资源
问答
  • BluetoothKit是一款功能强大的Android蓝牙通信框架,支持经典蓝牙和低功耗蓝牙设备混合扫描,提供了一系列简单易用的接口用于低功耗蓝牙设备的连接,数据读写,通知等。 特点 一、支持经典蓝牙和BLE蓝牙...
  • 原标题:Android蓝牙基础框架使用详解今日科技快讯最新报道称,三星准备在8月末推出Galaxy Note 8,比iOS手机进入市场早了几个月。早在4月时就有Note 8的传闻了,说这款手机边框更窄,屏幕更大,配有双摄像头。按照...

    原标题:Android蓝牙基础框架使用详解

    今日科技快讯

    最新报道称,三星准备在8月末推出Galaxy Note 8,比iOS手机进入市场早了几个月。早在4月时就有Note 8的传闻了,说这款手机边框更窄,屏幕更大,配有双摄像头。按照传统,在推出Note智能手机之后,三星一般还会推出一款Note设备。这款新设备属于Note系列的变种,Note拥有更大的屏幕、安装手写笔,提供智能手机与平板功能。

    作者简介

    周末两天,全国多个城市经历了特大暴雨的洗礼,这也是我今年经历的最大的一场雨,不知道大家所在的城市有没有下雨呢?今天又要回到工作的轨道上来,新的一周希望大家也元气满满!

    本篇来自幻影宇寰的投稿,分享了 Android BLE 基础框架使用详解,希望能够帮助到大家。

    幻影宇寰的博客地址:

    http://my.csdn.net/xiaoyaoyou1212

    前言

    研究了一段时间的蓝牙使用,发现网上相关的资料比较贫乏,不像其他 Android相关资料那么齐全,基本上大部分资料都是在蓝牙联盟SIG 提供的官网

    https://www.bluetooth.com/zh-cn/specifications

    上查找得到,也没有一个比较稳定好用的基础操作框架,开发时遇到的各种问题也是非常头疼。在此种情况下该框架应运而生,框架中包含了蓝牙设备的基础操作功能,调用简单,已通过实际项目进行验证,并且配有一个比较好用的 demo 演示,下文主要讲述该框架的使用方式。如果对于 Android BLE 还不是很了解,可以先看看我的这篇博文Android BLE 学习笔记,里面对于蓝牙的基础知识有详细的讲述。

    BLE

    Android BLE 基础操作框架,基于回调,操作简单。其中包含扫描、连接、广播包解析、服务读写及通知等功能。

    项目地址:https://github.com/xiaoyaoyou1212/BLE

    项目引入:compile 'com.vise.xiaoyaoyou:baseble:1.0.5'

    设备扫描

    使用简介

    BluetoothLeDeviceStore中统一进行处理,使用方式如下:

    f98118881cb935ce905d3ea62ead113e.png

    第二种方式是扫描指定 Mac 地址的设备,一般需设置超时时间,扫描到指定设备后就停止扫描,使用方式如下:

    184d27983ba5d49a001ca4e1ed0689c4.png

    第三种方式是扫描指定广播名的设备,同第二种方式类似,也需设置超时时间,扫描到指定设备后也会停止扫描,使用方式如下:

    18ac313242c7316c328c20ea553a6d40.png

    其中扫描到的设备信息都统一放到BluetoothLeDevice 中,其中包含了设备的所有信息,以下会详细讲解具体包含哪些信息。

    示例图

    f6e725132b1b6407c168072ea873c9e5.png

    设备连接

    使用简介

    连接与扫描一样也有三种方式,第一种方式是在扫描获取设备信息 BluetoothLeDevice 后才可使用,可设置连接超时时间,默认超时时间为10秒,使用方式如下:

    1001ab50e1b60c5e662ee730f0de7fb6.png

    第二种方式是连接指定 Mac 地址的设备,该方式使用前不需要进行扫描,该方式直接将扫描和连接放到一起,在扫描到指定设备后自动进行连接,使用方式如下:

    3b89ae86e148f684682ffb8aa599e8b3.png

    第三种方式是连接指定名称的设备,该方式与第二种方式类似,使用方式如下:

    11bc31c088fe5e0ad0f492473b4ad675.png

    连接成功后就可以进行相关处理,回调已在底层做了线程切换处理,可以直接操作视图。如果知道该设备服务的UUID,可直接调用ViseBluetooth.getInstance().withUUIDString(serviceUUID, characteristicUUID, deorUUID);,那么在下面操作设备时就不需要传特征(BluetoothGattCharacteristic) 和描述 (BluetoothGattDeor)相关参数,如果在连接成功后一直没设置 UUID,那么在操作时则需要传该参数,该内容在下文的设备操作中会详细讲解,此处就不一一讲解了。

    示例图

    49eb0c0ed469d424ac31c0307493e38d.png

    设备详情

    使用简介DEVICE INFO (设备信息)

    获取设备名称(Device Name): bluetoothLeDevice.getName();

    获取设备地址(Device Address): bluetoothLeDevice.getAddress();

    获取设备类别(Device Class): bluetoothLeDevice.getBluetoothDeviceClassName();

    获取主要设备类别(Major Class): bluetoothLeDevice.getBluetoothDeviceMajorClassName();

    获取服务类别(Service Class): bluetoothLeDevice.getBluetoothDeviceKnownSupportedServices();

    获取配对状态(Bonding State): bluetoothLeDevice.getBluetoothDeviceBondState();RSSI INFO (信号信息)

    获取第一次信号时间戳(First Timestamp): bluetoothLeDevice.getFirstTimestamp();

    获取第一次信号强度(First RSSI): bluetoothLeDevice.getFirstRssi();

    获取最后一次信号时间戳(Last Timestamp): bluetoothLeDevice.getTimestamp();

    获取最后一次信号强度(Last RSSI): bluetoothLeDevice.getRssi();

    获取平均信号强度(Running Average RSSI): bluetoothLeDevice.getRunningAverageRssi();

    SCAN RECORD INFO(广播信息)

    根据扫描到的广播包 AdRecordStore 获取某个广播数据单元 AdRecord 的类型编号 record.getType(),再根据编号获取广播数据单元的类型描述 record.getHumanReadableType() 以及该广播数据单元的长度及数据内容,最后通过 AdRecordUtil.getRecordDataAsString(record) 将数据内容转换成具体字符串。

    示例图

    d5a4b2f4e6b3bc21fbae8a099e9578ea.png

    2bbc32a786a1f52faec1212c3b3d1d53.png

    设备操作

    使用简介

    在操作设备前首先要保证设备已连接成功,那么在设备连接成功获取到 BluetoothGatt 后直接对服务的特征值 UUID 进行相关处理,其中特征值 UUID 有可读、可写、可通知、指示器四种,获取过程如下所示:

    9fd918075f8f62d2390d4f959787beec.png

    在获取到 BluetoothGattCharacteristic 后可进行如下操作:

    设置通知服务

    75b7046629b9fc694592b42c7e21ddaa.png

    其中最后一个参数是设置该通知是否是指示器方式,指示器方式为有应答的通知方式,在传输时更为靠谱。如果在连接成功时已经知道该设备可通知的 UUID 并且已经设置成功,那么此处还可以如下设置:

    c5f485a57a0188f3edb156ae8b39648c.png

    读取信息

    ad92b126076e1843f8eb1553b73b1387.png

    同上,如果已设置过可读的 UUID,那么此处也可以通过如下方式读取信息:

    4c979fe8def9cab2d5e8fead3ab0b209.png

    写入数据

    82094e32f93c128f94679338ff3c1a86.png

    同样,如果在连接成功时设置过可写 UUID,那么此处也可以通过如下方式写入数据:

    86cbf7c5cbd815f7a13e74fc178bdaca.png

    此处的数据 new byte[]{0x00,0x01,0x02} 为模拟数据,在使用时替换为真实数据即可,切记每次发送的数据必须在20个字节内,如果大于20字节可采用分包机制进行处理。

    示例图

    028ed8a00e71a936a42cbeedcbabb2e3.png

    总结

    从以上的描述中可以知道,设备相关的所有操作都统一交给 ViseBluetooth 进行处理,并且该类是单例模式,全局只有一个,管理很方便。使用前必须要在 Application 中调用 ViseBluetooth.getInstance().init(this); 进行初始化,在连接设备成功时会自动获得一个 BluetoothGatt,在断开连接时会将该 BluetoothGatt 关闭,上层不用关心连接数最大为6的限制问题,只需要在需要释放资源时调用 ViseBluetooth.getInstance().clear(); 就行,简单易用,这也正是该项目的宗旨。

    感谢

    在此要感谢两位作者提供的开源库

    https://github.com/litesuits/android-lite-bluetoothLE

    https://github.com/alt236/Bluetooth-LE-Library—Android

    这两个开源库对于本项目的完成提供了很大的帮助。

    更多

    每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。

    如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 作者Jasonchenlijian,源码FastBle,Android BLE 蓝牙快速开发框架,使用回调方式处理:scan、connect、notify、indicate、write、read等一系列蓝牙操作。每一个characteristic会与一个callback形成一一对应的监听...
  • android蓝牙2.0使用框架

    2017-09-02 12:36:20
    基于蓝牙2.0蓝牙协议封装的框架,全部操作采用回调方式,让开发更高效;具体使用你可以看我的博客 http://blog.csdn.net/baidu_28715573/article/details/77800331
  • 蓝牙传输框架,国内下载GitHub资源一直有问题,经常文件损坏,搬运一下方便下载
  • Android 提供支持经典蓝牙蓝牙低功耗的默认蓝牙堆栈。借助蓝牙Android 设备可以创建个人区域网络,以便通过附近的蓝牙设备发送和接收数据。 在 Android 4.3 及更高版本中,Android 蓝牙堆栈可提供实现蓝牙低功耗...
     
    

    一、蓝牙概览


    Android 提供支持经典蓝牙和蓝牙低功耗的默认蓝牙堆栈。借助蓝牙,Android 设备可以创建个人区域网络,以便通过附近的蓝牙设备发送和接收数据。
    Android 4.3 及更高版本中,Android 蓝牙堆栈可提供实现蓝牙低功耗 (BLE) 的功能。要充分利用 BLE API,请遵循 Android 蓝牙 HCI 要求。具有合格芯片组的 Android 设备可以实现经典蓝牙或同时实现经典蓝牙和 BLEBLE 不能向后兼容较旧版本的蓝牙芯片组。
    Android 8.0 中,原生蓝牙堆栈完全符合蓝牙 5 的要求。要使用可用的蓝牙 5 功能,该设备需要具有

    展开全文
  • 这是本人在研究安卓蓝牙模块的时候,自己整理的bluetooth框架相关知识点,android顶起。
  • Android系统蓝牙框架一 之Application

    千次阅读 2018-10-14 09:29:36
    版权声明:本文为博主原创...好在Android的开放性,以及它的代码清晰性(观其名,即可知其意),Application的框架能容易地被梳理出来。 这里以Android原生的Setting应用为切入点,一点点拆解 先来看看Setting的整体...

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    BT Application 构成

    好在Android开放性,以及它的代码清晰性(观其名,即可知其意),Application的框架能容易地被梳理出来。

    这里以Android原生的Setting应用为切入点,一点点拆解
    先来看看Setting的整体代码构成

    熟悉应用开发的同学,对以上apk骨架构成再熟悉不过了,当然了上面少了AS的gradle,对专搞系统的同学可以借助Android系统整体源码(环境)来编译该apk.

    从Setting下面的AndroidManifest.xml可以看到bluetooth相关的activity = BluetoothSettingsActivity + bluetooth.DevicePickerActivity + bluetooth.BluetoothPairingDialog 等等。我们常用对Bluetooth的操作,都会有对应的Activity来辅助实现。

    以上的每个Activity在Setting接下来的src下面,有专门的文件来管控实现,如下图
    注意以下

    1. bluetooth设置相关代码是放在bluetooth目录下面
    2. 以及Android原生Setting代码路径(bluetooh上层目录下面有很多地其他(如wifi、datetime等等)设置管控实现代码。

    bluetooth 下面的各个组件关系如下图

    BluetoothSetting部分,主要完成蓝牙设置的整体view的布局(包括一些选项的条目)
    BluetoothPairing主要为配对的事项,包含了相关的service、request、Activity、DialogFramgment等,关于配对详细flow,敬请关注后续文章更新;
    BluetoothEnable主要负责管控bluetooth开关设置控制。


    Android8.0 BT Enable Flow

    有了上半部分的介绍,现在可以较为清晰的知道BT Enable的控制代码,接下来将从App层 —> Framework 层 —> Native(jni)层 —> btstack层 梳理bt enable 流程

    重点总结一下Android8.0之后,Google将btstack 管理部分分解到stack_manager的线程来管控,后续可以详细的看到btstack的每个组件部分,也由对应的线程来进行管控,这也是BlueDroid的一大优化改进。

    其中具体的Enable Flow 见下面的UML图
    在这里插入图片描述


    参考链接
    AndroidManifest.xml 解析
    Android8.0 Settings Bluetooth
    Android8.0 BlueDroid
    Android8.0 bluetooth app

    展开全文
  • Android 之 Bluetooth 框架

    千次阅读 2020-04-30 22:26:32
    在新的android 版本中, 将蓝牙功能从单一的由蓝牙service/apk 完成,变更为由多部分完成蓝牙功能,使得接口更加的统一。 新的改变点 层次接口上: 系统升级8.1之后,增加了HAL 层Service 实现,一改bluedroid 加载...

    Android 之 Bluetooth 框架

    Bluetooth 框架结构图

    在新的android 版本中, 将蓝牙功能从单一的由蓝牙service/apk 完成,变更为由多部分完成蓝牙功能,使得接口更加的统一。

    新的改变点

    层次接口上
    系统升级8.1之后,增加了HAL 层Service 实现,一改bluedroid 加载vendor 的架构
    而是改为:
    libbluetooth
    HAL -------------
    HAL Service
    bt_vendor
    这个框架的目的是,让 vendor 实现一个统一的接口,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。 实际使用过程中发现,制造商并不完全遵照这个做。换了Controller 芯片后,实际上需同时更新HAL Service bt vendor 这些模块。
    **功能分工 **
    在以往的实现中,多数系统中都是以bluetooth service 中完成大部分的控制功能,包括链接管理,电话管理等,多外的接口也多数是以标准蓝牙接口的改装版本为主, 这样做的好处在与功能比较集中,做service 的人需要比较专业的蓝牙知识,而对于service 以上UI等,基本上小白就可以了,再被Service 人员培训就可以上岗了。
    但是在新的蓝牙框架中,将接口更加统一话,比较典型的体现方面:
    (1)Headset 蓝牙通话接口 统一到Telecom , 如果在Android 中实现蓝牙通话功能,你可以基本不需要蓝牙太多知识,你只需要懂得TelecomMananger怎么用就可以了。
    (2)Avrcp/A2dp 蓝牙音乐 统一到MediaBrowser 这个改动还是很大的,因为已经彻底不支持Avrcp 基本播放接口了。 对于习惯于采用蓝牙接口的人基本上要重新学习MediaBrowser 的用法,才能使用蓝牙播放功能,但是对于使用过MediaBrowser 的人而言,可以很快上手。
    这些设计实际上更加方便,对于开发者而言,可以很容易做到通吃。

    展开全文
  • Android蓝牙系统框架和代码架构

    千次阅读 2021-12-13 11:26:44
    Android蓝牙系统框架和代码架构
  • 实现的主要功能(蓝牙配对成功如何与远程...1.在com.android.bluetooth.btservice.AdapterProperties这个类中蓝牙连接状态 void sendConnectionStateChange(BluetoothDevice device, int profile, int state, int prevS
  • android蓝牙框架bluedroid之sbc编码

    千次阅读 2015-06-01 21:48:52
    sbc属于蓝牙A2DP规范里面的必选项,bluedroid里面也有一份实现,这里主要讲一下sbc的原理。 先看下图 sbc的整个过程就是将原始输入信号(pcm),通过带通滤波,将其分割为若干个子频带(subband),将各个自带搬移...
  • Android BLE设备蓝牙通信框架BluetoothKit

    万次阅读 多人点赞 2016-08-29 11:49:17
    这个框架源于目前一个智能家居APP项目,是蓝牙部分基础模块,用于蓝牙设备扫描、连接、通知等。由于目前接入的蓝牙设备大多为低功耗蓝牙设备,所以本框架暂不支持经典蓝牙的连接。项目地址: ...
  • android5.0蓝牙框架分析

    2021-06-10 12:13:57
    1.1代码位置1.1.1Java层packages/apps/Bluetoothframeworks/base/core/java/android/bluetooth/1.1.2JNI层packages/apps/Bluetooth/jni1.1.3C框架层hardware/libhardware/include/har...
  • Android BLE 蓝牙开发框架,使用回调方式处理,搜索、连接、notify、indicate、读、写等一系列蓝牙操作
  • android 蓝牙开发框架

    2018-03-02 14:01:00
    2019独角兽企业重金招聘Python工程师标准>>> ...android 蓝牙开发框架,资料地址 https://github.com/dingjikerbo/BluetoothKit 转载于:https://my.oschina.net/111222233/blog/1627777
  • android BLE蓝牙框架,包括扫描、连接、设置通知、发送数据、读取和接收数据以及各种直观的回调,近乎一行代码植入项目,可扩展配置蓝牙相关操作。
  • android蓝牙发送文件

    2015-09-29 14:41:48
    解决了某些人上传的点击选择文件, 点击发送文件程序就崩溃, 它们就没有测试过.本人修改了bug 而且点击发送文件就是蓝牙发送, 不会弹出选择框让用户选择那种传输方式 . 默认就是蓝牙发送文件. 很牛逼哦
  • Android Bluedroid 框架蓝牙组件Bluetooth core stack libraryHCI libraryVendor Specific HCI libraryUART, RFKILL,TUN/TAP and UHID device drivers相关模块bluetooth.apk : packages\apps\Bluetooth目录下...
  • Android Bluetooth架构

    千次阅读 2020-11-20 15:34:08
    Android系统蓝牙的整体架构,bluedroid作为蓝牙协议栈,实现了蓝牙的所有操作。 整个系统的架构很简单,因为大多的事情都是在Bluedroid层里面做的,上层只管去Call和Callback就是了,这部分我们在后面分析代码做...
  • Android蓝牙系统框架和代码结构 概述 在 Android 4.2版本中,谷歌公司和博通合作,引入了博通的 BTE/BTA 协议栈,重构了蓝牙子系统。新的蓝牙协议栈被命名为 BlueDroid。它包含了两层:BTE(完成蓝牙核心功能)和 ...
  • 安卓蓝牙框架汇总

    千次阅读 2016-10-07 14:32:58
    1. 从蓝牙数据和控制信令流程层次图看蓝牙底层协议栈 2. Android Version1 蓝牙框架 3. 从库的角度看安卓蓝牙架构 4. Android蓝牙框架
  • android 蓝牙 音频

    2015-09-22 16:39:58
    android 蓝牙通信 surfaceview绘制 表格 wav格式解析 音频转化 异常处理 数据库等
  • Android蓝牙开发 — 经典蓝牙&BLE蓝牙

    千次阅读 2021-04-30 20:02:10
    Android支持的蓝牙协议栈:Bluz,BlueDroid,BLE; Bluz是Linux推出的,目前使用最广泛; BlueDroid是Android4.0之后推出来的,简化了Bluz的操作; BLE是最新的低功耗协议,传输效率和传输速率都是很高的; 2)...
  • Android平台蓝牙架构

    千次阅读 2019-01-12 14:10:45
    Android 4.3 及更高版本中,Android 蓝牙堆栈可提供实现蓝牙低功耗 (BLE) 的功能。要充分利用 BLE API,请遵循 Android 蓝牙 HCI 要求。具有合格芯片组的 Android 设备可以实现经典蓝牙或同时实现经典蓝牙和 BLE...
  • Android蓝牙2.0开发

    2021-06-08 18:07:19
    因项目需要,做一个与2.0蓝牙模块连接的Demo,在此记录一下1.先注册个广播,来接收一下蓝牙的状态MyBroadCastRevciver broadcastReceiver = null;public void registerBroadcast(){broadcastReceiver = new ...
  • 用C#语言 xamarin.android 开发的 蓝牙打印功能,用vs2017开发的源码,还包括引用java jar 包
  • Android 监听框架开发教程 蓝牙状态监听例子 kotlin前言文件架构代码监听者注解状态值枚举类编写接口业务逻辑暴露接口 单例混淆封装完事 前言 有些时候,我们需要在某些Activity中监听某些状态。当然不可能在每个...
  • 这个库用于Android蓝牙BLE设备通信,支持设备扫描,连接,读写,通知。 这套框架存在的意义 一、统一解决Android蓝牙通信过程中的兼容性问题 二、提供尽可能简单易用的接口,屏蔽蓝牙通信中的技术细节,只开放连接,...
  • 目前通过ble hal实现从hidraw中读取遥控器语音数据,在Android框架层上就通过配置文件将ble hal导入到音频框架中,并通过绑定Android原生已有的耳麦设备来完成audio音频策略选择,通过apk检测ble连接状态,通知audio...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,046
精华内容 5,218
关键字:

android蓝牙框架