Android蓝牙增加自定义按键

Android蓝牙增加自定义按键


公司设备需要增加蓝牙手柄,直接使用可以连接但按键事件没反应,一番研究发现得增加自定义的按键。

说明:
Android版本:6.0
蓝牙-设备协议:AVRCP
蓝牙模块:经典蓝牙模块(BT)

方式1

1.修改\system\bt\btif\src\btif_rc.c
/***************************************************************************

  • Function handle_rc_passthrough_cmd
    • Argument: tBTA_AV_RC rc_id remote control command ID
  •             tBTA_AV_STATE key_state status of key press
    
    • Description: Remote control command handler

***************************************************************************/
void handle_rc_passthrough_cmd ( tBTA_AV_REMOTE_CMD *p_remote_cmd)
{

//此处增加需要透传的AT指令
if (p_remote_cmd->rc_id == BTA_AV_RC_FAST_FOR || p_remote_cmd->rc_id == BTA_AV_RC_REWIND || p_remote_cmd->rc_id == BTA_AV_RC_F1…) {
HAL_CBACK(bt_rc_callbacks, passthrough_cmd_cb, p_remote_cmd->rc_id, pressed);
return;
}

}

2.修改\packages\apps\Bluetooth\src\com\android\bluetooth\avrcp\Avrcp.java

private void handlePassthroughCmd(int id, int keyState) {
switch (id) {
case BluetoothAvrcp.PASSTHROUGH_ID_REWIND:
rewind(keyState);
break;
case BluetoothAvrcp.PASSTHROUGH_ID_FAST_FOR:
fastForward(keyState);
break;
}
//增加将刚刚透传的按键发送出去的逻辑
}

方式2

1.修改\system\bt\btif\src\btif_rc.c
static const struct {
const char *name;
uint8_t avrcp;
uint16_t mapped_id;
uint8_t release_quirk;
} key_map[] = {
{ “PLAY”, AVRC_ID_PLAY, KEY_PLAYCD, 1 },
{ “STOP”, AVRC_ID_STOP, KEY_STOPCD, 0 },
{ “PAUSE”, AVRC_ID_PAUSE, KEY_PAUSECD, 1 },
{ “FORWARD”, AVRC_ID_FORWARD, KEY_NEXTSONG, 0 },
{ “BACKWARD”, AVRC_ID_BACKWARD, KEY_PREVIOUSSONG, 0 },
{ “REWIND”, AVRC_ID_REWIND, KEY_REWIND, 0 },
{ “FAST FORWARD”, AVRC_ID_FAST_FOR, KEY_FAST_FORWARD, 0 },
//增加自定义按键
{ “F1”, AVRC_ID_F1, KEY_F1, 0 },
{ NULL, 0, 0, 0 }
};
未完!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值