BlueZ 做为 linux 标准的协议栈,提供非常多的 profile ,各种的支持,ble , 蓝牙网络,文件传输,a2dp 音频传输。

A2DP——Advanced Audio Distribution Profile  A2DP Sink 输入设备,如蓝牙耳机。A2DP Source 输出设备,如手机。

音频压缩格式支持:其中SBC是必须支持的,可选的格式有MPEG-1, MPEG-2, MPEG-4, AAC and ATRC, 另外也支持厂商扩展的格式,比如高质量的音频编码格式apt-X。

BlueZ 编译和安装不是重点,可以看看 https://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BlueZ_Bluetooth_tools_for_ARM

其实也可以在 虚拟机的 ubuntu 上进行验证,这里使用 raspberry Pi 3b+ 自带 WIFI + BT 功能,和一个 CSR8510 的蓝牙usb ,win10 ubuntu 系统都有驱动。

树莓派 3b+ 这个比较新,软件包是自带的 bluez 是 5.43 。

PulseAuido 提供,混音,音频路由 route ,可以让应用,同时打开多个节点。

d-bus 提供,ipc 进程间通讯。

bluez 还依赖 glib2.0 , glib2.0 是 gtk 的一个项目。

glib2.0 提供很多实用的功能,事件,线程,定时器等,很多功能。

hciconfig 查看蓝牙适配器 * 是打码。

hci1:    Type: Primary  Bus: UART
BD Address: ********* ACL MTU: : SCO MTU: :
UP RUNNING
RX bytes: acl: sco: events: errors:
TX bytes: acl: sco: commands: errors: hci0: Type: Primary Bus: USB
BD Address: ********* ACL MTU: : SCO MTU: :
UP RUNNING
RX bytes: acl: sco: events: errors:
TX bytes: acl: sco: commands: errors:

新的工具 bluetoothctl

info *:*:*:*:*:*
Device *:*:*:*:*:* (public)
Name: 小米手机
Alias: 小米手机
Class: 0x005a020c
Icon: phone
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: OBEX Object Push (----00805f9b34fb)
UUID: Audio Source (0000110a----00805f9b34fb)
UUID: A/V Remote Control Target (0000110c----00805f9b34fb)
UUID: Headset AG (----00805f9b34fb)
UUID: PANU (----00805f9b34fb)
UUID: NAP (----00805f9b34fb)
UUID: Handsfree Audio Gateway (0000111f----00805f9b34fb)
UUID: Phonebook Access Server (0000112f----00805f9b34fb)
UUID: PnP Information (----00805f9b34fb)
UUID: Message Access Server (----00805f9b34fb) info *:*:*:*:*:*
Device *:*:*:*:*:* (public)
Name: 坚果 Pro
Alias: 坚果 Pro
Class: 0x005a020c
Icon: phone
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: OBEX Object Push (----00805f9b34fb)
UUID: Audio Source (0000110a----00805f9b34fb)
UUID: A/V Remote Control Target (0000110c----00805f9b34fb)
UUID: A/V Remote Control (0000110e----00805f9b34fb)
UUID: Headset AG (----00805f9b34fb)
UUID: Handsfree Audio Gateway (0000111f----00805f9b34fb)
UUID: SIM Access (0000112d----00805f9b34fb)
UUID: Phonebook Access Server (0000112f----00805f9b34fb)
UUID: PnP Information (----00805f9b34fb)

可以看出来,2个手机的,Class 是一样的,提供的服务也是一样的  UUID

几个重要的问题

1,如何配对

2,接收到的数码如何解码

3,如何播放


蓝牙技术 A2DP AVRCP BlueZ的更多相关文章

  1. Android 蓝牙技术 实现终端间数据传输

    蓝牙技术在智能硬件方面有很多用武之地,今天我就为大家分享一下蓝牙技术在Android系统下的使用方法技巧.蓝牙是一种短距离的无线通信技术标准,蓝牙协议分为4层,即核心协议层.电缆替代协议层.电话控制协 ...

  2. 树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484长期持续带来更多项目与技术分享, ...

  3. 蓝牙技术BlueTooth

    转载网址:http://blog.csdn.net/dxdxsmy/article/details/7790568 蓝牙核心架构概念的理解请参考上面的网址.

  4. android蓝牙技术

    配置权限 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permiss ...

  5. 安卓蓝牙技术Bluetooth使用流程(Bluetooth详解)

    一:蓝牙设备之间的通讯首要包含了四个进程 设置蓝牙设备 寻觅局域网内也许或许匹配的设备 衔接设备 设备之间的数据传输 二:详细编程完结 1. 发动蓝牙功用 首要经过调用静态办法getDefaultAd ...

  6. 蓝牙技术(BlueTooth)——(一)

    一,概述 蓝牙是一种短距离的无线通信技术标准. 蓝牙协议分为4层,即核心协议层,电缆替代协议层,电话控制协议层,和      采纳的其它协议层. 这4中协议中最重要的是核心协议.蓝牙的核心协议包括基带 ...

  7. Android蓝牙技术Bluetooth使用流程(具体解释)

    一:蓝牙设备之间的通信主要包含了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的传输数据 二:详细编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAd ...

  8. BLK-MD-BC04-B蓝牙模块开发说明

    BLK-MD-BC04-B蓝牙模块开发说明 日期:2011-9-24 浏览次数:4178     BLK-MD-BC04-B蓝牙通信模块, BLK-MD-BC04-B蓝牙通信模块 为本公司自主开发的智 ...

  9. 蓝牙协议 HFP,HSP,A2DP,A2DP_CT,A2DP_TG,AVRCP,OPP,PBAP,SPP,FTP,TP,DTMF,DUN,SDP

    简介: HSP(手机规格)– 提供手机(移动电话)与耳机之间通信所需的基本功能. HFP(免提规格)– 在 HSP 的基础上增加了某些扩展功能,原来只用于从固定车载免提装置来控制移动电话. A2DP( ...

随机推荐

  1. VisionPro和Halcon的详细对比

    一.概括的对比 1.1  Halcon的优势 Halcon有着更加低廉的Lisence 1.并且提供更好.更强大的2D和3D的视觉软件库 2.Halcon支持的视觉图像采集设备数量是Visionpro ...

  2. 林轩田机器学习基石笔记4—Feasibility of Learning

    上节课介绍了机器学习可以分为不同的类型.其中,监督式学习中的二元分类和回归分析是最常见的也是最重要的机器学习问题.本节课,我们将介绍机器学习的可行性,讨论问题是否可以使用机器学习来解决. 一.Lear ...

  3. JQ主页图片划动切换效果

    .wrapper { width: 726px; float: left; } #jiao_dian { width: 980px; *height: 292px; margin-top: 10px; ...

  4. 关于JavaScript中的typeof与instanceof

    JavaScript中typeof和instanceof可以用来判断一个数据的类型,什么时候选择使用typeof?什么时候选择使用instanceof? typeof运算符 typeof运算符返回值有 ...

  5. python 获取表单的三种方式

    条件:urls.py文件中配置好url的访问路径.models.py文件中有Business表. 在views.py文件中实现的三种方式: from app01 improt models def b ...

  6. 吴裕雄--天生自然KITTEN编程:角色移动

  7. 从零开始实现基于微信JS-SDK的录音与语音评价功能

    最近接受了一个新的需求,希望制作一个基于微信的英语语音评价页面.即点击录音按钮,用户录音说出预设的英文,根据用户的发音给出对应的评价.以下是简单的Demo: ![](reecode/qrcode.pn ...

  8. 查漏补缺:QObject类介绍

    QObject是Qt对象模型的中心.这个模型的核心特征就是一种用于无缝对象间通信的被叫做信号和槽的非常强大的机制,可以使用connect()把信号和槽连接起来,也可以通过disconnect()来破坏 ...

  9. 码海拾遗:Linux多线程mutex锁

    多线程计数,每个线程累加10个数. 实现: #include <stdio.h> #include <stdlib.h> #include <string.h> # ...

  10. Java里观察者模式(订阅发布模式)

    创建主题(Subject)接口 创建订阅者(Observer)接口 实现主题 实现观察者 测试 总结 在公司开发项目,如果碰到一些在特定条件下触发某些逻辑操作的功能的实现基本上都是用的定时器 比如用户 ...