AVS 端能力之蓝牙模块
该类为蓝牙端能力处理类,主要负责蓝牙设备配对和蓝牙音频播放功能。
功能简介
- 实现蓝牙设备的启动发现模式、扫描蓝牙设备、建立蓝牙连接功能
- 实现蓝牙设备音频播放、停止、上一首、下一首功能
- 其它细节参考《AVS 端能力模块》
UML 图集
完整类图

精简类图

对象调用

调用流程
// 创建对象并更新上下文
Bluetooth:create
Bluetooth:init
BlueZDeviceManager:getDiscoveredDevices
Bluetooth:executeUpdateContext:buffer={"alexaDevice"\:{"friendlyName"\:"sprite-moon"}\,"pairedDevices"\:[]}
Bluetooth:getConfiguration
// 注册蓝牙指令处理
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=Previous,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=Play,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=DisconnectDevice,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=Next,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=ConnectByProfile,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=EnterDiscoverableMode,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=PairDevice,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=ScanDevices,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=ExitDiscoverableMode,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=UnpairDevice,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=Stop,handler=0x55a9c2a48000,policy=NON_BLOCKING
DirectiveRouter:addDirectiveHandlers:action=added,namespace=Bluetooth,name=ConnectByDeviceId,handler=0x55a9c2a48000,policy=NON_BLOCKING
###########################
# Thinking... #
###########################
// 接收到ConnectByProfile指令并执行预处理
DirectiveSequencer:onDirective:directive={"directive"\:{"header"\:{"namespace"\:"Bluetooth"\,"name"\:"ConnectByProfile"\,"messageId"\:"90326566-00c6-436b-93ef-a9d7e0bf8558"\,"dialogRequestId"\:"5a6fa9c6-bdbb-4097-9d6a-d9e8ad5d5434"}\,"payload"\:{"profile"\:{"name"\:"A2DP-SOURCE"}}}}
DirectiveRouter:preHandleDirective:messageId=90326566-00c6-436b-93ef-a9d7e0bf8558,action=calling
CapabilityAgent:addingMessageIdToMap:messageId=90326566-00c6-436b-93ef-a9d7e0bf8558
Bluetooth:preHandleDirective
// 接收到EnterDiscoverableMode指令并执行预处理
DirectiveSequencer:onDirective:directive={"directive"\:{"header"\:{"namespace"\:"Bluetooth"\,"name"\:"EnterDiscoverableMode"\,"messageId"\:"2836b54f-8e68-4147-86a4-8056d98cc7fe"\,"dialogRequestId"\:"5a6fa9c6-bdbb-4097-9d6a-d9e8ad5d5434"}\,"payload"\:{}}}
DirectiveRouter:preHandleDirective:messageId=2836b54f-8e68-4147-86a4-8056d98cc7fe,action=calling
CapabilityAgent:addingMessageIdToMap:messageId=2836b54f-8e68-4147-86a4-8056d98cc7fe
Bluetooth:preHandleDirective
###########################
# Speaking... #
###########################
// 处理ConnectByProfile指令
DirectiveRouter:handleDirective:messageId=90326566-00c6-436b-93ef-a9d7e0bf8558,action=calling
Bluetooth:handleDirective
// 处理EnterDiscoverableMode指令
DirectiveRouter:handleDirective:messageId=2836b54f-8e68-4147-86a4-8056d98cc7fe,action=calling
Bluetooth:handleDirective
// 解析ConnectByProfile指令内容连接执行后消息队列移除该消息
Bluetooth:parseDirectivePayload
Bluetooth:executeConnectByProfile:profileName=A2DP-SOURCE,profileVersion=
Bluetooth:executeUpdateContext:buffer={"alexaDevice"\:{"friendlyName"\:"sprite-moon"}\,"pairedDevices"\:[]}
Bluetooth:executeQueueEventAndRequestContext:eventName=ConnectByProfileFailed
DirectiveProcessor:onHandlingCompeted:messageId=90326566-00c6-436b-93ef-a9d7e0bf8558,directiveBeingPreHandled=(nullptr)
CapabilityAgent:removingMessageIdFromMap:messageId=90326566-00c6-436b-93ef-a9d7e0bf8558
// 解析EnterDiscoverableMode指令内容连接执行后消息队列移除该消息
Bluetooth:parseDirectivePayload
Bluetooth:executeSetDiscoverableMode
Bluetooth:executeQueueEventAndRequestContext:eventName=EnterDiscoverableModeSucceeded
DirectiveProcessor:onHandlingCompeted:messageId=2836b54f-8e68-4147-86a4-8056d98cc7fe,directiveBeingPreHandled=(nullptr)
CapabilityAgent:removingMessageIdFromMap:messageId=2836b54f-8e68-4147-86a4-8056d98cc7fe
// Context可用时发送ConnectByProfileFailed事件
Bluetooth:onContextAvailableLambda
EventBuilder:buildJsonEventString:messageId=ab2db07c-9095-4110-bec2-59719618417d,namespace=Bluetooth,name=ConnectByProfileFailed
Bluetooth:onContextAvailableLambda:event={"context":[{"header":{"namespace":"Bluetooth","name":"BluetoothState"},"payload":{"alexaDevice":{"friendlyName":"sprite-moon"},"pairedDevices":[]}}],"event":{"header":{"namespace":"Bluetooth","name":"ConnectByProfileFailed","messageId":"ab2db07c-9095-4110-bec2-59719618417d"},"payload":{"requester":"CLOUD","profileName":"A2DP-SOURCE"}}}
AVSConnectionManager:sendMessage:event="报文内容同上,原始报文中的context包含所有端能力状态"
// Context可用时发送EnterDiscoverableModeSucceeded事件
Bluetooth:onContextAvailableLambda
EventBuilder:buildJsonEventString:messageId=6dcdbdad-eba3-4fd2-805f-48b2da365a62,namespace=Bluetooth,name=EnterDiscoverableModeSucceeded
Bluetooth:onContextAvailableLambda:event={"context":[{"header":{"namespace":"Bluetooth","name":"BluetoothState"},"payload":{"alexaDevice":{"friendlyName":"sprite-moon"},"pairedDevices":[]}}],"event":{"header":{"namespace":"Bluetooth","name":"EnterDiscoverableModeSucceeded","messageId":"6dcdbdad-eba3-4fd2-805f-48b2da365a62"},"payload":{}}}
AVSConnectionManager:sendMessage:event="报文内容同上,原始报文中的context包含所有端能力状态"
AVS 端能力之蓝牙模块的更多相关文章
- AVS 端能力之音频播放模块
功能简介 音频播放 音频流播放 URL文件播放 播放控制 播放 暂停 继续 停止 其它功能(AVS服务器端实现) 支持播放列表 支持上一首下一首切换 支持电台 事件指令集 AudioPlayer 端能 ...
- Arduino蓝牙模块实现通信
蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接 2.led指示蓝牙连接状态,闪烁表示没有 ...
- Android蓝牙实例(和单片机蓝牙模块通信)
最近做毕设,需要写一个简单的蓝牙APP进行交互,在网上也找了很多资料,终于给搞定了,这里分享一下^_^. 1.Android蓝牙编程 蓝牙3.0及以下版本编程需要使用UUID,UUID是通用唯一识别码 ...
- 【转】android蓝牙开发---与蓝牙模块进行通信--不错
原文网址:http://www.cnblogs.com/wenjiang/p/3200138.html 近半个月来一直在搞android蓝牙这方面,主要是项目需要与蓝牙模块进行通信.开头的进展很顺利, ...
- 【Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信
[Arduino]开发入门[十]蓝牙模块 首先show一下新入手的蓝牙模块 蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机 ...
- Android单片机与蓝牙模块通信实例代码
Android单片机与蓝牙模块通信实例代码 参考路径:http://www.jb51.net/article/83349.htm 啦啦毕业了,毕业前要写毕业设计,需要写一个简单的蓝牙APP进行交互,通 ...
- Arduino入门笔记(9):蓝牙模块及第一辆蓝牙遥控小车
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino UNO板 https://item.t ...
- android蓝牙开发---与蓝牙模块进行通信
近半个月来一直在搞android蓝牙这方面,主要是项目需要与蓝牙模块进行通信.开头的进展很顺利,但因为蓝牙模块不在我这里,所以只能用手机测试.一开头就发现手机的蓝牙不能用,为了证明这点,我刷了四次不同 ...
- Bluetooth篇 开发实例之九 和蓝牙模块通信
首先,我们要去连接蓝牙模块,那么,我们只要写客户端的程序就好了,蓝牙模块就相当于服务端. 连接就需要UUID. #蓝牙串口服务SerialPortServiceClass_UUID = ‘{00001 ...
随机推荐
- 题解 Cicada 拿衣服
传送门 神仙题! 听@Yubai给我讲了半个下午,快%@Yubai 见到这些奇奇怪怪的题是不是应该试着证下状态数上界啊 首先观察题目里给的柿子,可以发现 \(or-and\) 单调增, \(min-m ...
- 服务器受到网络攻击时,如何获取请求客户端的真实 IP?
网络攻击 前不久公司遭受了一次网络攻击. 早晨刚到公司,就发现登录接口的调用次数飙升,很快就确认是被恶意攻击,让安全部门做网关入口针对对方 IP 加了限制. 并统一对所有的 IP 加了调用的频率限制. ...
- Docker运行PostgreSQL
docker-compose.yml version: '3.1' services: db: image: postgres restart: always ports: - 5432:5432 e ...
- jenkins+docker部署java项目
jenkins + maven + jdk + docker + docker register + dockerfile jenkins插件 # 安装插件 SSH # 配置 系统设置-> SS ...
- prism 中的 自定义region
参考网址: https://blog.csdn.net/weixin_30872499/article/details/98673059 并不是所有控件都可以被用作Region了吗?我们将Gird块的 ...
- 【转】互联网项目中mysql应该选什么事务隔离级别
作者:孤独烟 转自:https://www.cnblogs.com/rjzheng/p/10510174.html 摘要 企业千万家,靠谱没几家.社招选错家,亲人两行泪. 祝大家金三银四跳槽顺利! 引 ...
- 嵌入式Linux的启动过程
1.了解 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展.虽然 Linux 在桌面 PC 机上的 ...
- Storm重启topology,失败
storm新加节点,重启topology后,出现错误 如果检查了CPU和内存不高后,还出现 java.lang.OutOfMemoryError: unable to create new nativ ...
- git 使用代理出现 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 错误
删除代理即可. 具体操作如下: 1. git config --global --list 查看git配置 发现其中有 http.https.XXXXXX.proxy 和 https.http ...
- RabbitMQ详解(一)——
RabbitMQ详解(一)-- https://www.cnblogs.com/liuwenwu9527/p/11989216.html https://www.cnblogs.com/ideal-2 ...