蓝牙

蓝牙协议栈之L2CAP(chapter 2)

被刻印的时光 ゝ 提交于 2019-12-02 08:56:42
L2CAP协议概述 L2CAP中文为逻辑链路适配层,主要提供信息数据的分割/重组等传输方式。在bluedroid中,很多的上层会向l2cap注册相关服务,比如rfcomm(虚拟串口,最多可虚拟64路),sdp,gatt等。 1、L2CA_Register (SDP_PSM, &sdp_cb.reg_info) 2、L2CA_Register (BT_PSM_ATT, (tL2CAP_APPL_INFO *) &dyn_info) l2cap的框架结构图如下、 一、通道标识符 l2cap传输是基于信道的概念进行传输,没一个信道都有各自的信道标识符(channel identify,CID),在HCI层完成相关初始化后,信道就会被创建,在ACL链路中通常需要创建一个CID为0x0001的控制信道,用于传输控制命令。 CID为2byte,具体如下图所示(通常用于ER( 常规蓝牙 )传输ACL,ASB和AMP链路) 而在 低功耗蓝牙 中,需要使用如下的CID进行表示 二、信道工作模式 逻辑信道可以工作在5种不同的模式下(可以理解为5种不同的使用场景),最后一种是LE设备特有的: 1、 Basic L2CAP Mode (equivalent to L2CAP specification in Bluetooth v1.1) 默认模式,在未选择其他模式的情况下,用此模式。 2、 Flow

Android4.4 之Bluetooth整理

跟風遠走 提交于 2019-12-02 07:52:59
Android 4.4上蓝牙协议栈采用的是BRCM和Google共同开发的bluedroid,代替了之前的Bluez. 一、 Bluetooth 源码分布 (基于Android 4.4 ) 1. packages/apps/Settings/src/com/android/settings/bluetooth bluetooth Settings 代码 2. packages/apps/Bluetooth BT 应用层代码,及BT profile(如:A2dp,gatt,hdp,hfp,hid,map,opp,pan,pbap ...) 上层代码 packages/apps/Bluetooth/jni 3. frameworks/base/core/java/android/bluetooth framework 层相关 java 代码与aidl 4. external/bluetooth/bluedroid BRCM和Google共同开发的官方蓝牙协议栈 5. linux/kernel/drivers/bluetooth 6. linux/kernel/net/bluetooth 7. 以下是近期项目intel 平台 hardware/broadcom/libbt hardware/libhardware vendor/intel/fw/PRIVATE/bt 厂商bt固件 二

iOS 蓝牙报错"The request is not supported."

五迷三道 提交于 2019-12-02 06:15:57
今天蓝牙通信的时候,发现突然返回一个error: The request is not supported.究竟是什么原因呢?下面我们来揭开这个错误的神秘面纱吧。 1.报错原因 蓝牙设备端开发,说是需要缓存一个什么,他自己也说不清,问了几遍,我就不问了。。 2.处理方法 ① 蓝牙设备修改了一些方法之后,就可以收到返回数据了,但是还有一些问题; 3.事后语 鹅鹅鹅,今天又出现这个问题了。。疯ing [2019年20月23日] 这个问题是,设备是Android版本的,Android的APP端可以正常使用,所以他也不那么着急解决,先留着吧。。 来源: https://blog.csdn.net/JWheat/article/details/102729096

Bluetooth LE(低功耗蓝牙)

柔情痞子 提交于 2019-12-02 00:34:02
前言 在写这篇文章的时候,谷歌刚刚发布了Android Wear ,摩托罗拉也发布了 Moto 360 智能手表。Android Wear 的API还是相当 基本的 ,是很好的文档材料 ,而且还会不断的更新 , 所以我不打算 写一个关于他们的 教程 ( 至少现在还没有 )。 有趣的是 Moto 360 支持 Android 4.3及之后的版本。 这明显是Bluetooth LE只有在Android 4.3及以后才被支持的原因,这也意味着 Moto 360 支持Bluetooth LE。Bluetooth LE 将 不仅是可穿戴技术的核心技术,而且也是许多物联网设备的核心技术。 在这个系列博客中 我们将了解 Bluetooth LE 在 Android 上的使用 。 Bluetooth 与 Bluetooth LE简介 蓝牙自20世纪90年中后期就已经出现,并已成为短距离设备的对等网络的标准。一个缺点是它需要消耗一点电量,这在移动设备上是一 个问题,而且在电池更小的可穿戴设备中需要消耗更多电。另一个缺点是两个蓝牙设备必须配对才可以相互通信。虽然配对过程只需要执行一次,但对用户来说这是一个痛苦的经历。 Bluetooth Low Energy(低功耗蓝牙),缩写为Bluetooth LE,或BLE,作为蓝牙4.0 (有时称为蓝牙智能)规范的一部分,并针对上述的这些具体问题而被引入

蓝牙spp协议分析

穿精又带淫゛_ 提交于 2019-12-01 18:46:20
基本概念 蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。 蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证一条完整的通信路径。具体的基本流程如下: 设备A:这个设备会发起一个连接另外设备的请求。 设备B:这个设备等待另外一个设备发起连接请求。 协议栈分层 这个应用两边都是典型的传统应用,能够通过一个虚拟串口通道和对方通信。通过下图可以看出,SPP的协议栈使用的还是rfcomm通道,这个是蓝牙中比较古老的通道了。 基本流程 连接流程一般分成三个部分,如下所示: 1 创建虚拟连接: A 使用SDP提交一个请求来查找RFCOMM服务信道号码。 B 请求对远端设备进行认证。 C 向远端的RFCOMM通道发起一个新的L2CAP请求。 D 在L2CAP通道上初始化一个RFCOMM连接。 E f在RFCOMM连接上创建一个新的数据连接。 2 接受虚拟串口连接: A 接受发起设备端的认证请求并做处理. B 在L2CAP层接收一个新的连接。 C 接受RFCOMM连接请求在RFCOMM通道上 D 在RFCOMM通道上接收数据连接请求。 3 在本地SDP数据上注册服务 SPP的API参数 /** A connection has been established with a remote device.

笔记本电脑如何用蓝牙功能

有些话、适合烂在心里 提交于 2019-12-01 16:45:17
 说到蓝牙功能,大家都在手机上用过了,但是对于笔记本上的蓝牙,大部分人都不够熟悉。如果要使用笔记本电脑中的蓝牙功能,那么按照下面的方法操作。   先要打开笔记本电脑中的蓝牙开关,蓝牙开关有两个,一个是电脑蓝牙开关,还有一个是软件蓝牙开关。当然了,如果你的电脑中没有蓝牙功能,那么你是找不到开关的。即使有蓝牙功能也需要驱动才能够使用。   找到蓝牙开关并打开了,看一下驱动是否安装正常,正常的话直接打开蓝牙,指示灯亮就说明蓝牙已经打开了,这时候就可以搜索设备传送资料了。 来源: https://www.cnblogs.com/wicc/p/11693909.html

Android Bluetooth opp package 学习笔记

旧巷老猫 提交于 2019-12-01 09:49:24
一、背景及相关知识学习 1、Android Bluetooth SDK 首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限 < uses-permission android:name ="android.permission.BLUETOOTH_ADMIN" /> < uses-permission android:name ="android.permission.BLUETOOTH" /> 我们可以通过intent调用android.bluetooth.opp包下的activity也可以直接调用android.bluetooth包使用android的蓝牙功能。 方法如下: 通过android.bluetooth.opp包我们需要作的是: 打开蓝牙: Intent enabler= new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enabler,reCode); // 同startActivity(enabler); 通过android.bluetooth包我们需要做的是以下几点: (1).BluetoothAdapter 顾名思义,蓝牙适配器,直到我们建立bluetoothSocket连接之前,都要不断操作它。BluetoothAdapter里的方法很多

小米蓝牙耳机不能自动串联问题

梦想的初衷 提交于 2019-12-01 07:15:31
针对问题: 小米蓝牙耳机没办法串联(弄了好久才弄好) 解决方案一:对单个耳机操作 左耳:长按耳机到关机,长按开机,会听见响三下(或者红白交替闪3下),按住不放,又会听见响三下(或者看见红白交替闪3下)。放入盒子拿出来就自动配对了。 右耳:同理 诀窍:分别对单个耳机长时间按住不放就对了(我就是这么解决的) 解决方案二:两个耳机同时操作(同说明书) 双耳机使用自动连接:同时将两只耳机从充电盒取出,等待2-3秒耳机自动开机串联,待右耳机白灯慢闪时,打开设备蓝牙搜索“MI AIRDOTS BASIC_R”并点击完成连接。如果连接失败,将耳机放回充电盒,重复上述连接操作。首次连接后,耳机开机可自动回连上一次配对设备(蓝牙需开启)。如果自动连接失败,请使用手动操作方式。 手动连接:在耳机关机时,手动打开两只耳机, 白灯快闪等待左右耳机串联,串联成功后右耳机白灯慢闪,打开设备蓝牙进行连接。 异常处理: 1. 清除耳机端与设备的连接记录:关机状态下,长按任一耳机触控面板10秒至红白灯3次交替闪烁后熄灭。耳机清除配对设备后,还需在设备蓝牙列表里删除对应耳机配对记录。 2. 清除两只耳机的串联记录:关机状态下,分别长按两只耳机触控面板10秒至红白灯交替闪烁后熄灭,继续保持按住10秒至红白灯交替闪3次。 其他问题: 双耳模式:都放进盒子里,先拿右耳,再拿左耳自动连接。 左耳模式:要单独连接手机一次左耳

车载蓝牙蓝牙通话支持电话本PBAP功能的说明

岁酱吖の 提交于 2019-12-01 04:25:11
一、 简介 蓝牙电话本协议,从属于蓝牙的一个子协议,专业名词为蓝牙 PBAP。当手机连接蓝牙设备之后,蓝牙设备蓝牙可以主动获取手机的通讯录,以及最近的通话记录信息。 电话薄中每一个独立的实体都是以 vCard格式存在。PSE应当支持vCard2.1和vCard3.0版本,并可以按照PCE指定的格式将实体传送到PCE。无论是哪种格式,都采用UTF-8[p1] 进行编码 BT401蓝牙模块可以支持PBAP功能 二、 功能说明 1、通过串口,获取手机端的电话簿的信息如下: (1)、可以很清楚的看到,我们给出的接口,包含了3个信息:序号、姓名、电话号码 (2)、姓名都是采用UTF-8的编码方式 2、 用户使用的方式如下: (1) 、在蓝牙和手机连接成功之后,首先获取连接的手机的名称,来确认是否要更新电话本信息 (2) 、如果需要更新电话本信息,则主动发起 AT命令即可,模块会返回手机电话本的所有信息 (3) 、电话本的信息存储,是在用户的 MCU端。 (4) 、存储之后,下次如果有电话进来,就可以根据电话号码,来查找号码所对应的人名 三、 总结 1、使用过程中,一定要避开通话、和播放音乐的操作。 2、 推荐在蓝牙连接成功之后,马上获取连接的手机名称 。然后比对是否要更新电话本信息 来源: https://www.cnblogs.com/qyvhome/p/11653725.html

Android 4.2蓝牙介绍

眉间皱痕 提交于 2019-12-01 03:59:40
Tieto公司某蓝牙大牛写得《程序员》投稿文章 Android 4.2 蓝牙介绍 蓝牙一词源于公元十世纪丹麦国王 HaraldBlatand 名字中的 Blatand 。 Blatand 的英文之意就是 Blue tooth 。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于 Blatand 统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名 Bluetooth 可谓志向远大。不过,在以 Android 为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着 “ 鸡肋 ” 的角色。那么,随着无线通信技术的快速发展以及 Android 的普及,蓝牙能给我们带来哪些新的变化呢? 本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙 Profile 以及 Android 4.2 中蓝牙实现情况等几个方面向读者介绍蓝牙技术。 一 蓝牙规范介绍 作为一种通用的无线通信技术,规范自然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图 1 所示: 图 1 蓝牙规范的层次结构 由图 1 可知蓝牙规范包括: Core Specification(核心规范),用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递。 Profiles(蓝牙应用规范)