中科蓝汛---长按3S进入语音助手功能实现

在中科蓝汛8852方案研发时,实现长按3s 进入语音助手功能的实现。

代码实现思路如下:

1.使用三击功能,需要先开启双击设定

2.在bsp_key.h 中定义消息宏,该值可自定义

#define SIRI_1500MS_MSG         0x7DC

 3.在msg_bt.c 中设置消息

case SIRI_1500MS_MSG:
		//自定义消息,判断当前状态是否连接,在判断当前siri状态,0表示已退出,1表示已唤出
		if(bt_get_status() == BT_STA_CONNECTED)
		{
			if( 0 == bt_get_siri_status()){
				bt_siri_switch();
			}
		}

		break;

4.设置siri标志,

在bsp_sys.h中 sys_cb结构体中,新建一个成员变量

u8  User_siri_flag; //定义siri语音助手标志  

5.

4.设置长按3S动作

在bsp_key.c 中 函数 u8 bsp_key_scan(void)

新建 变量 static u16 msg_ee1_cnt = 0; //用于长按按键计时

//此代码在  函数 u8 bsp_key_scan(void)中
 static u16 msg_ee1_cnt = 0;  //用于长按按键计时
    
 if(key == 0x0ee1)
	{  //#define KH_PLAY_POWER           (KEY_PLAY_POWER 0xe1 | KEY_HOLD 0xE00) 

		msg_ee1_cnt++;
		printf("msg_ee1_cnt ==  %04x\n",msg_ee1_cnt);

	}

	if( msg_ee1_cnt == 9 )  //当msg_ee1_cnt == 9的时候,差不多3S
	{
		if(0 == sys_cb.User_siri_flag) //如果当前siri表示已退出状态
		{
			msg_enqueue(SIRI_1500MS_MSG);
			sys_cb.User_siri_flag ==1; //将siri表示为已唤出
		}
		
	}

		
	// 检测松手操作,检测到松手,则将msg_ee1_cnt=0
	
	//0x0ce1	==	KEY_LONG_UP | KEY_PLAY_POWER  长按松手检测
	//0x08e1 ==  KEY_PLAY_POWER	|	KEY_PLAY_POWER	 短按松手检测 
	if( key == 0x0ce1 || key == 0x08e1)
	{
		msg_ee1_cnt = 0;
	}
	
 
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值