android avrcp处理流程,android 蓝牙avrcp功能的实现.doc
android 蓝牙avrcp功能的实现
Android 蓝牙AVRCP功能的实现
作者:Macro Liu
AVRCP的按键定义:
\sdk\emulator\keymaps\AVRCP.kl
key 200 MEDIA_PLAY_PAUSE WAKE
key 201 MEDIA_PLAY_PAUSE WAKE
key 166 MEDIA_STOP WAKE
key 163 MEDIA_NEXT WAKE
key 165 MEDIA_PREVIOUS WAKE
key 168 MEDIA_REWIND WAKE
key 208 MEDIA_FAST_FORWARD WAKE
BCM(broadcom)宏定义需要打开:
BOARD_HAVE_BLUETOOTH_BCM := true
BT音频控制的代码
external\bluetooth\bluez\audio\control.c
(1) 按键的MAP
static struct {
const char *name;
uint8_t avrcp;
uint16_t uinput;
} key_map[] = {
{ "PLAY",PLAY_OP,KEY_PLAYCD },
{ "STOP",STOP_OP,KEY_STOPCD },
{ "PAUSE",PAUSE_OP,KEY_PAUSECD },
{ "FORWARD",FORWARD_OP,KEY_NEXTSONG },
{ "BACKWARD",BACKWARD_OP,KEY_PREVIOUSSONG },
{ "REWIND",REWIND_OP,KEY_REWIND },
{ "FAST FORWARD",FAST_FORWARD_OP,KEY_FASTFORWARD },
{ NULL }
};
(2) 按键处理
static void handle_panel_passthrough(struct control *control,
{
…
for (i = 0; key_map[i].name != NULL; i++) {
uint8_t key_quirks;
if ((operands[0] & 0x7F) != key_map[i].avrcp)
continue;
DBG("AVRCP: %s %s", key_map[i].name, status);
key_quirks = control->key_quirks[key_map[i].avrcp];
if (key_quirks & QUIRK_NO_RELEASE) {
if (!pressed) {
DBG("AVRCP: Ignoring release");
break;
}
DBG("AVRCP: treating key press as press + release");
send_key(control->uinput, key_map[i].uinput, 1);
send_key(control->uinput, key_map[i].uinput, 0);
break;
}
send_key(control->uinput, key_map[i].uinput, pressed);
break;
}
…
}
HCIDUMP数据分析
以Sony耳机DRC-BT15为例
#adb shell
#hcidump –X
左键:
> ACL data: handle 12 flags 0x02 dlen 12
??? L2CAP(d): cid 0x0042 len 8 [psm 0]
????? 0000: 30 11 0e 00 48 7c 4c 00?????????????????????????? 0...H|L.
< HCI Command: Exit Sniff Mode (0x02|0x0004) plen 2
? 0000: 0c 00???????????????????????????????????????????? ..
< ACL data: handle 12 flags 0x00 dlen 12
??? 0000: 08 00 4b 00 32 11 0e 09? 48 7c 4c 00????????????? ..K.2...H|L.
> HCI Event: Max Slots Change (0x1b) plen 3
? 0000: 0c 00 05??
android avrcp处理流程,android 蓝牙avrcp功能的实现.doc相关推荐
- android otg 挂载流程,android USB OTG功能如何打开及实现
1.检查HW原理图,确认是否支持OTG功能(vbus是否供上电,IDDIG pin链接是否正确) 2.若HW确认支持OTG功能,则按照如下方法分别打开USB OTG功能及实现挂载: 如何打开USB O ...
- android p 权限流程,Android native 权限控制流程
关联文章: 前言: 在 Android Runtime Permission 详解 中详细的说明了permission 在Android 6.0 前后的区别,对于M 以后应用可以通过checkPerm ...
- android屏幕适配流程,Android屏幕适配姿势
GitHub地址 为什么要屏幕适配? device_framentation.png 统计 碎片化 品牌机型碎片化 屏幕尺寸碎片化 操作系统碎片化 为了保证用户获得一致的用户体验效果,使得某一元素在A ...
- android wifi wps 流程,android中WiFi wps连接方式
Android 个人热点 wps方式连接流程 android手机开启个人热点时,可以选择WPS连接方式 个人热点端 连接端 当个人热点端选择按钮时,连接端只需要点击WPS按钮即可连接:当个人热点端选择 ...
- android zygote启动流程,Android zygote启动流程详解
对zygote的理解 在Android系统中,zygote是一个native进程,是所有应用进程的父进程.而zygote则是Linux系统用户空间的第一个进程--init进程,通过fork的方式创建并 ...
- android serviceconnection unbind流程,Android - Service Bind/Unbind 使用
Service Bind/Unbind 使用方式 本文介绍了本地服务,也就是同一个进程内的服务,如何使用 Bind/Unbind 方式被 Activity 使用. 本文不涉及 AIDL 使用 Serv ...
- android avrcp处理流程,Android Bluetooth AVRCP
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? AVRCP(Audio/Video Remote Control Profile),即音频/视频远程控制规范. AVRC ...
- Android 安装apk流程,Android PMS(二)-Apk安装流程
原创内容,转载请注明出处,多谢配合. 一.APK组成 在APK的安装流程,在此之前先简单了解下APK组成: 目录/文件 描述 assert 存放的原生资源文件,通过AssetManager类访问. l ...
- android生成apk流程,Android Studio生成APK的基本流程
Android Studio生成APK的基本流程 2020年08月14日 | 萬仟网移动技术 | 我要评论 Android Studio生成APK流程修改版本号和文件名安全加固(可选)生成签名apk修 ...
- android耳机上报流程,Android系统中耳机按键键值上报不正确 解决过程
[问题现象] 根据测试组同事反馈:在我们的设备上使用 JBL 品牌某款带有 3 个按键的有线耳机时,按下"音量+"键时设备会减小音量而不是增加音量,按下"音量-" ...
最新文章
- 转 关于 D3D的 SetRenderState 以及AlphaBlend 和AlphaTest
- Ffmpeg 定位文件(seek file)
- [译] Web 爬虫下的 Python 数据分析:中情局全球概况图解
- android异步线程利用Handler将消息发送至UI线程
- 检索数据_11_限制返回的行数
- Linux 安装Redis全过程日志
- 双向控制引脚的控制代码
- C# WPF MVVM开发框架Caliburn.Micro IResult和协同程序⑥
- java.util.UnknownFormatConversionException: Conversion = ‘j‘ || Conversion = ‘D‘ || Conversion = ‘Y‘
- 部署Smokeping
- 利用WebBrowser获得页面部分数据
- item2vec详解
- mysql where 中能否使用update_mysql – 可以在WHERE中执行UPDATE子句吗?
- 群晖修改ipv6dns服务器,hiboy大佬的padavan开启IPv6,并使用IPv6登录黑群晖的方法
- 7种常用数据分析方法 (下)
- 使用防火墙禁止软件联网
- KafkaStream之时间窗口WindowBy
- 计算机网络安全讲座心得,学习信息安全心得体会
- performance API 中什么指标可以衡量首屏时间
- 搭建自己的简易服务器(公网)
热门文章
- 计算机基础知识整理 世上最全,IT小白必看:计算机基础知识整理大全
- 软件体系结构 复习题
- account.php,account.php
- 概率论与数理统计——随机变量及其分布
- 30套精选程序员个人简历模板.zip
- java坦克代码_Java坦克大战源代码
- SWAT模型高阶应用暨无资料地区建模、不确定分析与气候变化、土地利用对面源污染影响模型改进案例分析
- Web Server 配置及上传文件
- Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you‘re try
- 天翼网关-无线光纤猫的设置和有WIFI信号无网络问题排查与解决