Android蓝牙AVRCP功能的实现

上传人:桔**** 文档编号:490025066 上传时间:2023-10-28 格式:DOCX 页数:10 大小:23.26KB
返回 下载 相关 举报
Android蓝牙AVRCP功能的实现_第1页
第1页 / 共10页
Android蓝牙AVRCP功能的实现_第2页
第2页 / 共10页
Android蓝牙AVRCP功能的实现_第3页
第3页 / 共10页
Android蓝牙AVRCP功能的实现_第4页
第4页 / 共10页
Android蓝牙AVRCP功能的实现_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《Android蓝牙AVRCP功能的实现》由会员分享,可在线阅读,更多相关《Android蓝牙AVRCP功能的实现(10页珍藏版)》请在金锄头文库上搜索。

1、Android蓝牙AVRCP功能的实现保 III作者:Macro LiuAVRCP的按键定义:sdkemulatorkeymapsAVRCP.klkey200MEDIA_PLAY_PAUSEWAKEkey201MEDIA_PLAY_PAUSEWAKEkey166MEDIA_STOPWAKEkey163MEDIA_NEXTWAKEkey165MEDIA_PREVIOUSWAKEkey168MEDIA_REWINDWAKEkey208MEDIA_FAST_FORWARDWAKEBCM(broadcom)宏定义需要打开:BOARD_HAVE_BLUETOOTH_BCM := trueBT音频操纵的代

2、码externalbluetoothbluezaudiocontrol.c按键的MAPstatic 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

3、 ,(FAST FORWARD, FAST_FORWARD_OP, KEY_FASTFORWARD ,( NULL ;(2)按键处理static void handle_panel_passthrough(struct control *control,(for (i = 0; key_mapi.name != NULL; i+) ( uint8_t key_quirks;if (operands。 & 0x7F) != key_mapi.avrcp)continue;DBG(AVRCP: %s %s, key_mapi.name, status);key_quirks = control-k

4、ey_quirkskey_mapi.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_mapi.uinput, 1); send_key(control-uinput, key_mapi.uinput, 0); break; send_key(control-uinput, key_mapi.uinput

5、, pressed); break; HCIDUMP数据分析以Sony耳机DRC-BT15为例#adb shell#hcidump - X 左键: ACL data: handle 12 flags 0x02 dlen 12L2CAP(d): cid 0x0042 len 8 psm 04c0c4c000000:3011 0e0048 7c000.H|L. HCI Command: Exit Sniff Mode (0x02|0x0004) plen 20000:00 HCI Event: Max Slots Change (0x1b) plen 30000:0c05 HCI Event: M

6、ode Change (0x14) plen 60000:000c00000000. HCI Event: Command Status(0x0f) plen 40000:0c010408 ACL data: handle 12 flags 0x02 dlen 12L2CAP(d): cid 0x0042 len 8 psm 00000:40110e00487ccc00.H|? HCI Event: Number of Completed Packets (0x13) plen 5000000:010c0002播放/暂停: ACL data: handle 12 flags 0x02 dlen

7、 12L2CAP(d): cid 0x0042 len 8 psm 0 0000:50110e00 ACL00 HCIEvent: Number of Completed Packets 0000:01(0x13) plen 50c000200右键: ACL data: handle 12 flags 0x02 dlen 12L2CAP(d): cid 0x0042 len 8 psm 00000:70110e00487c4600p.H|F. ACLdata: handle 12 flags0x02 dlen 12L2CAP(d): cid 0x0042len 8 psm 00000:8011

8、0e00487cc600H|? HCI Event: Number of Completed Packets (0x13) plen 50000:010c000200 HCI Event: Max Slots Change (0x1b) plen 30000:0c0001 HCI Event: Mode Change (0x14) plen 60000:000c0002c800然后将control.c的日志打印出来: 按一次”“播放/暂停键”:D/ACRVP ( 237): handle_panel_passthrough D/ACRVP( 237): operands。 = 46 对应 PA

9、USE_OPD/ACRVP( 237): key_quirks = 0, pressed = 1 按键按下D/ACRVP (237): control-uinput = fffffffe,send_key = 201 对应MEDIA_PLAY_PAUSED/ACRVP ( 237): handle_panel_passthrough D/ACRVP( 237): operands0 = c6 (= 0x46 I 0x80 表示按键开释了)D/ACRVP( 237): key_quirks = 0, pressed = 0 按键开释D/ACRVP (237): control-uinput =

10、fffffffe,send_key = 201 对应MEDIA_PLAY_PAUSE再按一次” “播放/暂停键”:D/ACRVP ( 237): - handle_panel_passthrough D/ACRVP( 237): operands0 = 44 对应 PLAY_OPD/ACRVP( 237): key_quirks = 0, pressed = 1 按键按下D/ACRVP ( 237): control-uinput = fffffffe,send_key = 200 对应 MEDIA_PLAY_PAUSED/ACRVP ( 237): handle_panel_passthro

11、ugh D/ACRVP ( 237): operands。 = c4D/ACRVP ( 237): key_quirks = 0, pressed = 0 按键开释D/ACRVP (237): control-uinput = fffffffe,send_key = 200 对应MEDIA_PLAY_PAUSE next key:D/ACRVP ( 237): handle_panel_passthrough D/ACRVP ( 237): operands0 = 4b 对应 FORWARD_OPD/ACRVP ( 237): key_quirks = 0, pressed = 1D/ACRVP (237): control-uinput = fffffffe,send_key = 163 对应MEDIANEXTD/ACRVPD/ACRVPD/ACRVPD/ACRVP( 237): handle_panel_passthrough ( 237): operands0 = cb( 237): key_quirks = 0, pressed = 0prev key:D/ACRVP (D/ACRVP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号