1 / 8
文档名称:

Android 蓝牙AVRCP功能的实现.doc

格式:doc   大小:76KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Android 蓝牙AVRCP功能的实现.doc

上传人:593951664 2018/8/14 文件大小:76 KB

下载得到文件列表

Android 蓝牙AVRCP功能的实现.doc

文档介绍

文档介绍:Android 蓝牙AVRCP功能的实现
作者:Macro Liu
AVRCP的按键定义:
\sdk\emulator\keymaps\
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()宏定义需要打开:
BOARD_HAVE_BLUETOOTH_BCM := true
BT音频控制的代码
external\bluetooth\bluez\audio\
(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->u