#include "include.h" #include "func.h" #include "func_bt.h" #include "app_variable.h" #define TRACE_EN 0 #if TRACE_EN #define TRACE(...) printf(__VA_ARGS__) #else #define TRACE(...) #endif #define TITLE_BUF_LEN 128 //歌词buuufer长度 #define ARTIST_BUF_LEN 128 //歌词buuufer长度 #define MOVE_OFFSET_X 35 // 图片icon可供水平移动的距离 #define MAX_MOVE_X 158 // 图片icon可供水平移动的距离 enum { COMPO_ID_BTN_PREV = 1, COMPO_ID_BTN_NEXT, COMPO_ID_BTN_PLAY, COMPO_ID_BTN_VOL_UP, COMPO_ID_BTN_VOL_DOWN, COMPO_ID_TXT_MUSIC_NAME, COMPO_ID_TXT_MUSIC_LYRIC, // COMPO_ID_PIC_MUSIC_VOL, COMPO_ID_SHAPE_MUSIC_VOL, COMPO_ID_SHAPE_MUSIC_VOL_CIR, COMPO_ID_BTN_MUSIC_VOL, COMPO_ID_BTN_MUSIC_LEFT, COMPO_ID_BTN_MUSIC_RIGHT, }; typedef struct f_bt_t_ { bool ams_play_sta; bool bt_play_sta; u8 vol; u8 ams_vol; u16 move_vol_x; u16 move_vol; u8 title_buf[TITLE_BUF_LEN]; u8 artist_buf[ARTIST_BUF_LEN]; bool page_drag_flag; //按住标志 u32 start_x; //滑动开始的x坐标 u32 start_y; //滑动开始的y坐标 bool click_flag; // 点击标志位 u32 click_time; //记录点击时间 u16 last_x; //最后x停留的位置 } f_bt_t; /***************************************************************************** * 1.当BT连接时,优先同步id3信息,控制通道走BT * 2.当只连接BLE时,IOS走AMS服务,安卓走私有协议 *****************************************************************************/ static void func_bt_music_title_refresh(void *buf); static void func_bt_music_artist_refresh(void *buf); static void func_bt_music_play_btnpic_refresh(u8 sta); static void func_bt_music_vol_btnpic_refresh(u8 vol); /***************************************************************************** * BT or BLE interface *****************************************************************************/ void func_bt_mp3_res_play(u32 addr, u32 len) { if (len == 0) { return; } bt_cb.res_bt_bypass = true; if (!sbc_is_bypass()) { bt_audio_bypass(); } mp3_res_play(addr, len); } void func_bt_mp3_play_restore(void) { if (bt_cb.res_bt_bypass) { bt_cb.res_bt_bypass = false; bt_audio_enable(); } } void func_bt_init(void) { if (!bt_cb.bt_is_inited) { msg_queue_clear(); dis_auto_pwroff(); bsp_bt_init(); bt_redial_init(); bt_cb.bt_is_inited = 1; } } void func_bt_chk_off(void) { if ((func_cb.sta != FUNC_BT) && (bt_cb.bt_is_inited)) { bt_disconnect(1); bt_off(); bt_cb.bt_is_inited = 0; } } //播放暂停控制 static void bt_control_play_pause(void) { //f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; if (bt_is_connected()) { bt_music_play_pause(); bt_cb.music_playing = bt_cb.music_playing ? 0:1; } else if (ble_ams_is_connected()) { ble_ams_remote_ctrl(AMS_REMOTE_CMD_PLAY_PAUSE); bt_cb.music_playing = bt_cb.music_playing ? 0:1; } else{ func_popup_new(POPUP_ID_BT_REMIND); } } //切换上一曲 static void bt_control_prev(void) { if (bt_is_connected()) { bt_music_prev(); } else if (ble_ams_is_connected()) { ble_ams_remote_ctrl(AMS_REMOTE_CMD_PREV_TRACK); } else{ func_popup_new(POPUP_ID_BT_REMIND); } } //切换下一曲 static void bt_control_next(void) { if (bt_is_connected()) { bt_music_next(); } else if (ble_ams_is_connected()) { ble_ams_remote_ctrl(AMS_REMOTE_CMD_NEXT_TRACK); } else{ func_popup_new(POPUP_ID_BT_REMIND); } } //音量更新 static void bt_vol_update(void) { if (!bt_cb.bt_form_created) { return ; } f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; bool vol_uodate_flag = false; if (bt_is_connected()) { if (f_bt->vol != SysVariable.vol) { f_bt->vol = SysVariable.vol; vol_uodate_flag = true; } } else if (ble_ams_is_connected()) { if (f_bt->vol != f_bt->ams_vol) { f_bt->vol = f_bt->ams_vol; vol_uodate_flag = true; } } if (vol_uodate_flag) { func_bt_music_vol_btnpic_refresh(f_bt->vol); } } //音量控制+ static void bt_control_vol_up(void) { if (bt_is_connected()) { bt_volume_up(); } else if (ble_ams_is_connected()) { ble_ams_remote_ctrl(AMS_REMOTE_CMD_VOL_UP); } else{ func_popup_new(POPUP_ID_BT_REMIND); } bt_vol_update(); } //音量控制- static void bt_control_vol_down(void) { if (bt_is_connected()) { bt_volume_down(); } else if (ble_ams_is_connected()) { ble_ams_remote_ctrl(AMS_REMOTE_CMD_VOL_DOWN); } else{ func_popup_new(POPUP_ID_BT_REMIND); } bt_vol_update(); } #if LE_AMS_CLIENT_EN //AMS推送状态更新处理 static void ble_ams_sta_update_handle(u8 sta, void *p_data, u16 len) { if (bt_is_connected() || !ble_ams_is_connected() || !bt_cb.bt_form_created) { return ; } f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; switch (sta) { case BLE_AMS_STA_UPDATE_PAUSE: { f_bt->ams_play_sta = false; func_bt_music_play_btnpic_refresh(false); } break; case BLE_AMS_STA_UPDATE_PLAYING: { f_bt->ams_play_sta = true; func_bt_music_play_btnpic_refresh(true); } break; case BLE_AMS_STA_UPDATE_VOLUME: { u32 volume = GET_LE32(p_data); f_bt->ams_vol = volume / 625; bt_vol_update(); TRACE("ams volume:%d, ams_vol:%d\n", volume, f_bt->ams_vol); } break; case BLE_AMS_STA_UPDATE_TITLE: { char *title = (char *)p_data; if (strlen(title)) { memcpy(f_bt->title_buf,title,TITLE_BUF_LEN - 1); msg_enqueue(EVT_ID3_TITLE_UPDATE); TRACE("ams title:%s\n",title); } } break; case BLE_AMS_STA_UPDATE_ALBUM: { char * album = (char *)p_data; if (strlen(album)) { memcpy(f_bt->artist_buf,album,ARTIST_BUF_LEN - 1); msg_enqueue(EVT_ID3_ARTIST_UPDATE); TRACE("ams album:%s\n",album); } } break; case BLE_AMS_STA_UPDATE_ARTIST: { char * artist = (char *)p_data; if (strlen(artist)) { memcpy(f_bt->artist_buf,artist,ARTIST_BUF_LEN - 1); msg_enqueue(EVT_ID3_ARTIST_UPDATE); TRACE("ams artist:%s\n",artist); } } break; case BLE_AMS_STA_UPDATE_APP_NAME: { char * app_name = (char *)p_data; if (strlen(app_name)) { compo_form_set_title(func_cb.frm_main, app_name); TRACE("ams app name:%s\n",app_name); } } break; } } #endif // LE_AMS_CLIENT_EN #if BT_ID3_TAG_EN //id3信息更新处理 static void bt_id3_tag_update_handle(u8 type, char *str) { if (BT_ID3_TAG_TITLE == type) { memcpy(f_bt->title_buf,str,TITLE_BUF_LEN - 1); msg_enqueue(EVT_ID3_TITLE_UPDATE); } else if (BT_ID3_TAG_ARTIST == type) { memcpy(f_bt->artist_buf,str,ARTIST_BUF_LEN - 1); msg_enqueue(EVT_ID3_ARTIST_UPDATE); } } #endif // BT_ID3_TAG_EN /***************************************************************************** * func_bt_music(UI) *****************************************************************************/ //创建蓝牙音乐播放器窗体,创建窗体中不要使用功能结构体 func_cb.f_cb compo_form_t *func_bt_form_create(void) { //新建窗体 compo_form_t *frm = compo_form_create(true); //设置标题栏 compo_form_set_mode(frm, COMPO_FORM_MODE_SHOW_TITLE | COMPO_FORM_MODE_SHOW_TIME); compo_form_set_title(frm, i18n[STR_MUSIC]); //歌名 compo_textbox_t *name_txt = compo_textbox_create(frm, 50); compo_textbox_set_location(name_txt, 2*GUI_SCREEN_WIDTH+5, GUI_SCREEN_CENTER_Y - 100, GUI_SCREEN_WIDTH, 50); compo_setid(name_txt, COMPO_ID_TXT_MUSIC_NAME); compo_textbox_set(name_txt, i18n[STR_UNKNOWN]); //歌词 compo_textbox_t *lyric_txt = compo_textbox_create(frm, 50); compo_textbox_set_location(lyric_txt, 2*GUI_SCREEN_WIDTH+5, GUI_SCREEN_CENTER_Y - 50, GUI_SCREEN_WIDTH, 50); compo_setid(lyric_txt, COMPO_ID_TXT_MUSIC_LYRIC); compo_textbox_set(lyric_txt, i18n[STR_UNKNOWN]); //新建图片 大背景 compo_form_add_image(frm, UI_BUF_MUSIC_BG_BIN, GUI_SCREEN_CENTER_X, 108); //新建按钮 compo_button_t *btn; //播放或暂停按钮 if (bt_cb.music_playing) { btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_PAUSE_CLICK_BIN); } else { btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_PAUSE_BIN); } compo_setid(btn, COMPO_ID_BTN_PLAY); compo_button_set_pos(btn, GUI_SCREEN_CENTER_X, 108); //上一曲 按钮 btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_PREV_CLICK_BIN); compo_setid(btn, COMPO_ID_BTN_PREV); compo_button_set_pos(btn, 41, 209); compo_shape_t *btn_black = compo_shape_create(frm,COMPO_SHAPE_TYPE_RECTANGLE); compo_shape_set_color(btn_black, make_color(0xff, 0xff, 0xff)); compo_shape_set_location(btn_black, 197, 209, 60, 60); //下一曲 按钮 btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_NEXT_CLICK_BIN); compo_setid(btn, COMPO_ID_BTN_NEXT); compo_button_set_pos(btn, 197, 209); //音量 减 图片加按钮 compo_form_add_image(frm, UI_BUF_MUSIC_VOLUME_DOWN_BIN, 25, 268); btn = compo_button_create(frm); compo_setid(btn, COMPO_ID_BTN_VOL_DOWN); compo_button_set_location(btn, 25, 268, 40, 40); //音量 增 图片加按钮 compo_form_add_image(frm, UI_BUF_MUSIC_VOLUME_UP_BIN, 214, 268); btn = compo_button_create(frm); compo_setid(btn, COMPO_ID_BTN_VOL_UP); compo_button_set_location(btn, 214, 268,40,40); // 创建灰色按钮 compo_shape_t *grey_shape ; grey_shape = compo_shape_create(frm,COMPO_SHAPE_TYPE_RECTANGLE); compo_shape_set_color(grey_shape, make_color(0x00, 0x00, 0x00)); compo_shape_set_location(grey_shape,41, 209,60,60); compo_shape_set_alpha(grey_shape,200); compo_setid(grey_shape, COMPO_ID_BTN_MUSIC_LEFT); compo_shape_set_visible(grey_shape,false); grey_shape = compo_shape_create(frm,COMPO_SHAPE_TYPE_RECTANGLE); compo_shape_set_color(grey_shape, make_color(0x00, 0x00, 0x00)); compo_shape_set_location(grey_shape,197, 209,60,60); compo_shape_set_alpha(grey_shape,200); compo_setid(grey_shape, COMPO_ID_BTN_MUSIC_RIGHT); compo_shape_set_visible(grey_shape,false); //创建音乐 底部浅色 音量 进度条 底部背景 grey_shape = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,1); compo_shape_set_color(grey_shape, make_color(143, 143, 146)); compo_shape_set_location(grey_shape, GUI_SCREEN_CENTER_X, 268, MAX_MOVE_X, 4); //创建音乐 音量 进度条 compo_shape_t *white_shape ; white_shape = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,1); compo_shape_set_color(white_shape, COLOR_WHITE); compo_shape_set_align_center(white_shape,false);//不居中了,居中后进度条长度不好算 compo_setid(white_shape, COMPO_ID_SHAPE_MUSIC_VOL); compo_shape_set_location(white_shape, MOVE_OFFSET_X, 266, SysVariable.vol*MAX_MOVE_X/VOL_MAX, 4); //创建音乐 音量 进度条上的圆圈 compo_shape_t *cir_shape ; cir_shape = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,6); compo_shape_set_color(cir_shape, COLOR_WHITE); compo_shape_set_align_center(cir_shape,false);//不居中了,居中后进度条长度不好算 compo_setid(cir_shape, COMPO_ID_SHAPE_MUSIC_VOL_CIR); compo_shape_set_location(cir_shape, SysVariable.vol*MAX_MOVE_X/VOL_MAX+ MOVE_OFFSET_X, 261, 12, 12); btn = compo_button_create(frm); compo_setid(btn, COMPO_ID_BTN_MUSIC_VOL); compo_button_set_location(btn, 120, 261,178,50); // compo_picturebox_t *vol_pic = compo_picturebox_create(frm, UI_BUF_MUSIC_VOLUME1_BIN); // compo_setid(vol_pic, COMPO_ID_PIC_MUSIC_VOL); // compo_picturebox_set_pos(vol_pic, GUI_SCREEN_CENTER_X, 280); // widget_set_align_center(vol_pic->img, false); // compo_picturebox_set_visible(vol_pic, false); return frm; } //音乐歌词刷新,没有中文暂时屏蔽 static void func_bt_music_title_refresh(void *buf) { if (bt_cb.bt_form_created) { compo_textbox_t *tilte_txt = compo_getobj_byid(COMPO_ID_TXT_MUSIC_LYRIC); compo_textbox_set(tilte_txt, buf); } } //音乐 歌名刷新,没有中文暂时屏蔽 static void func_bt_music_artist_refresh(void *buf) { if (bt_cb.bt_form_created) { compo_textbox_t *tilte_art_txt = compo_getobj_byid(COMPO_ID_TXT_MUSIC_NAME); compo_textbox_set(tilte_art_txt, buf); } } //音乐播放或暂停 按钮刷新 static void func_bt_music_play_btnpic_refresh(u8 sta) { if (!bt_cb.bt_form_created) { return ; } compo_button_t *btn = compo_getobj_byid(COMPO_ID_BTN_PLAY); if (sta) { compo_button_set_bgimg(btn, UI_BUF_MUSIC_PAUSE_CLICK_BIN); } else { compo_button_set_bgimg(btn, UI_BUF_MUSIC_PAUSE_BIN); } } static void func_bt_music_vol_btnpic_refresh(u8 vol) { f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; compo_shape_t *vol_shape_line; compo_shape_t *vol_shape_cir; vol_shape_line = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL); vol_shape_cir = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL_CIR); f_bt->move_vol_x = vol*MAX_MOVE_X/VOL_MAX; //进度条不可以不限制因为会被圆挡住,这里在圆超出两个像素的时候往回拉 if(f_bt->move_vol_x >MAX_MOVE_X){ f_bt->move_vol_x = MAX_MOVE_X; } printf("vol_shape_line move_vol_x = %d VOL_MAX = %d,vol = %d\n ",f_bt->move_vol_x,VOL_MAX,vol); compo_shape_set_location(vol_shape_line, MOVE_OFFSET_X, 266, f_bt->move_vol_x, 4); compo_shape_set_location(vol_shape_cir, MOVE_OFFSET_X + f_bt->move_vol_x, 261, 12, 12); // switch(vol){ // case 0: // compo_shape_set_location(vol_shape_line, 41, 266, 0, 4); // compo_shape_set_location(vol_shape_cir, 35, 261, 12, 12); // break; // } // compo_picturebox_t *vol_pic; // vol_pic = compo_getobj_byid(COMPO_ID_PIC_MUSIC_VOL); // switch (vol){ // case 0: // // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME1_BIN); // // compo_picturebox_set_visible(vol_pic, false); // break; // case 1 ... 3: // // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME1_BIN); // // compo_picturebox_set_visible(vol_pic, true); // break; // case 4 ... 6: // // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME2_BIN); // // compo_picturebox_set_visible(vol_pic, true); // break; // case 7 ... 9: // // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME3_BIN); // // compo_picturebox_set_visible(vol_pic, true); // break; // case 10 ... 11: // // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME4_BIN); // // compo_picturebox_set_visible(vol_pic, true); // break; // case 12 ... 16: // // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME5_BIN); // // compo_picturebox_set_visible(vol_pic, true); // break; // } } //单击按钮 static void func_bt_button_click(void) { f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; compo_shape_t *left_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_LEFT); compo_shape_t *right_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_RIGHT); int id = compo_get_button_id(); switch (id) { case COMPO_ID_BTN_PREV: /* 提醒媒体未打开 */ if (bt_a2dp_profile_completely_connected() == false) { func_popup_new(POPUP_ID_A2DP); return; } bt_control_prev(); f_bt->click_flag=true; f_bt->click_time=tick_get(); compo_shape_set_visible(left_shape,true); compo_shape_set_visible(right_shape,false); break; case COMPO_ID_BTN_NEXT: /* 提醒媒体未打开 */ if (bt_a2dp_profile_completely_connected() == false) { func_popup_new(POPUP_ID_A2DP); return; } bt_control_next(); f_bt->click_flag=true; f_bt->click_time=tick_get(); compo_shape_set_visible(left_shape,false); compo_shape_set_visible(right_shape,true); break; case COMPO_ID_BTN_PLAY: /* 提醒媒体未打开 */ if (bt_a2dp_profile_completely_connected() == false) { func_popup_new(POPUP_ID_A2DP); return; } bt_control_play_pause(); break; case COMPO_ID_BTN_VOL_UP: bt_control_vol_up(); break; case COMPO_ID_BTN_VOL_DOWN: bt_control_vol_down(); break; default: break; } } //更改音量tp static void func_bt_move_vol(void) { f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; int id = compo_get_button_id(); switch (id) { case COMPO_ID_BTN_MUSIC_VOL: f_bt->page_drag_flag=true; break; default: break; } } void func_bt_sub_process(void) { bsp_bt_status(); } void func_bt_process(void) { f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; s32 dx,dy,x,y,new_time,sx,sy; bool move; static u32 ticks,ticks1; compo_shape_t *vol_shape_line = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL); compo_shape_t *vol_shape_cir = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL_CIR); compo_shape_t *left_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_LEFT); compo_shape_t *right_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_RIGHT); /* 整体页面拖动事件, 列表拖动时页面不需要移动 */ if (f_bt->page_drag_flag) { s32 dx, dy; s32 sx, sy, x, y; f_bt->page_drag_flag = ctp_get_cur_point(&sx, &sy, &x, &y); // printf("f_bt->page_drag_flag = %d\n",f_bt->page_drag_flag) ; if (f_bt->page_drag_flag) { // 拖动页面 f_bt->move_vol_x = x; if(f_bt->move_vol_x < 0) { f_bt->move_vol_x = 0; } else if(f_bt->move_vol_x > MAX_MOVE_X){ f_bt->move_vol_x = MAX_MOVE_X; } // printf("f_bt->move_vol_x = %d,x = %d,sx = %d\n",f_bt->move_vol_x,x,sx); compo_shape_set_location(vol_shape_line, MOVE_OFFSET_X, 266, f_bt->move_vol_x, 4); compo_shape_set_location(vol_shape_cir, MOVE_OFFSET_X + f_bt->move_vol_x, 261, 12, 12); bt_volume_set(f_bt->move_vol_x*VOL_MAX/MAX_MOVE_X); } else { } } if(f_bt->click_flag==true) { new_time=tick_get(); if(new_time-f_bt->click_time>=100) { f_bt->click_flag=false; } } else{ compo_shape_set_visible(left_shape,false); compo_shape_set_visible(right_shape,false); } func_process(); func_bt_sub_process(); } //蓝牙音乐消息处理 static void func_bt_message(size_msg_t msg) { f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb; u32 sx,sy; switch (msg) { case MSG_CTP_TOUCH: func_bt_move_vol(); break; case MSG_CTP_CLICK: func_bt_button_click(); //单击按钮 break; case MSG_QDEC_FORWARD: bt_control_vol_up(); break; case MSG_QDEC_BACKWARD: bt_control_vol_down(); break; case EVT_ID3_TITLE_UPDATE: func_bt_music_title_refresh(f_bt->title_buf); break; case EVT_ID3_ARTIST_UPDATE: func_bt_music_artist_refresh(f_bt->artist_buf); break; case MSG_SYS_500MS: if (bt_is_connected() && !sys_cb.gui_sleep_sta) { #if BT_ID3_TAG_EN bt_music_paly_status_info(); #endif if (f_bt->bt_play_sta != bt_cb.music_playing) { f_bt->bt_play_sta = bt_cb.music_playing; func_bt_music_play_btnpic_refresh(bt_cb.music_playing); } bt_vol_update(); } else if (!bt_is_connected()) { bt_cb.music_playing = false; if (f_bt->bt_play_sta != bt_cb.music_playing) { f_bt->bt_play_sta = bt_cb.music_playing; func_bt_music_play_btnpic_refresh(bt_cb.music_playing); } } break; case MSG_CTP_SHORT_RIGHT: case MSG_CTP_SHORT_LEFT: //if(f_bt->move_flag==true||f_bt->start_x<=SysVariable.hfp_vol*10+15&&f_bt->start_x>=SysVariable.hfp_vol*10-15&&f_bt->start_y>=261-15) if(f_bt->page_drag_flag==true) { break; } else { func_message(msg); } break; default: func_message(msg); break; } } void func_bt_enter(void) { f_bt_t *f_bt; func_cb.f_cb = func_zalloc(sizeof(f_bt_t)); func_cb.frm_main = func_bt_form_create(); f_bt = (f_bt_t *)func_cb.f_cb; func_cb.mp3_res_play = func_bt_mp3_res_play; bt_cb.bt_form_created = 1; f_bt->bt_play_sta = bt_cb.music_playing; f_bt->ams_play_sta = false; f_bt->vol = 0; f_bt->last_x=SysVariable.vol*MAX_MOVE_X/VOL_MAX+ MOVE_OFFSET_X; func_bt_music_play_btnpic_refresh(bt_cb.music_playing); #if LE_AMS_CLIENT_EN if (ble_ams_is_connected()) { if (ble_ams_cb.play_state) { f_bt->ams_play_sta = true; func_bt_music_play_btnpic_refresh(1); } f_bt->ams_vol = ble_ams_cb.vol; func_bt_music_vol_btnpic_refresh(f_bt->ams_vol); if (strlen(ble_ams_cb.app_name)) { compo_form_set_title(func_cb.frm_main, ble_ams_cb.app_name); } } ble_ams_sta_update_cb_reg(ble_ams_sta_update_handle); #endif bt_id3_tag_update_cb_reg(bt_id3_tag_update_handle); #if !BT_BACKSTAGE_MUSIC_EN func_bt_init(); bt_audio_enable(); #if DAC_DNR_EN dac_dnr_set_sta(1); sys_cb.dnr_sta = 1; #endif #endif // !BT_BACKSTAGE_MUSIC_EN } void func_bt_exit(void) { #if !BT_BACKSTAGE_MUSIC_EN dac_fade_out(); #if DAC_DNR_EN dac_dnr_set_sta(0); sys_cb.dnr_sta = 0; #endif bt_audio_bypass(); #if !BT_BACKSTAGE_EN bt_disconnect(1); bt_off(); bt_cb.bt_is_inited = 0; #else if (bt_get_status() == BT_STA_PLAYING && !bt_is_testmode()) { //蓝牙退出停掉音乐 delay_5ms(10); if(bt_get_status() == BT_STA_PLAYING) { //再次确认play状态 u32 timeout = 850; //8.5s bt_music_pause(); while (bt_get_status() == BT_STA_PLAYING && timeout > 0) { timeout--; delay_5ms(2); } } } #endif // !BT_BACKSTAGE_EN #endif // !BT_BACKSTAGE_MUSIC_EN ble_ams_sta_update_cb_unreg(); bt_id3_tag_update_cb_unreg(); bt_cb.bt_form_created = 0; bt_cb.rec_pause = 0; func_cb.last = FUNC_BT; } void func_bt(void) { printf("%s\n", __func__); func_bt_enter(); while (func_cb.sta == FUNC_BT) { func_bt_process(); func_bt_message(msg_dequeue()); } func_bt_exit(); } TJD_BT_STATUS_E tjd_get_bt_connect_status(void) { TJD_BT_STATUS_E status; if (ble_is_connected() && bt_is_connected()) { status = TJD_BT_EDR_BLE_CONNECT; } else if (bt_is_connected()) { status = TJD_BT_EDR_CONNECT; } else if (ble_is_connected() ) { status = TJD_BT_BLE_CONNECT; } else { status = TJD_BT_NOT_CONNECT; } return status; }