From: @CHENG <2393524978@qq.com> Date: Sat, 17 Aug 2024 08:20:34 +0000 (+0800) Subject: TTS_VOICE __MMI_TEXT_TTS_PROMPT_SUPPORT__ X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=cdfca104e546f543a7d25c3578a69fd022889ac2;p=mirrors%2FASR3603_Z5_DS.git TTS_VOICE __MMI_TEXT_TTS_PROMPT_SUPPORT__ --- diff --git a/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png new file mode 100644 index 00000000..1be54c5d Binary files /dev/null and b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png differ diff --git a/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png new file mode 100644 index 00000000..5076a94e Binary files /dev/null and b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png differ diff --git a/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h index 8a564b68..d409bfcd 100644 --- a/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h +++ b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h @@ -242,6 +242,9 @@ #define __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__ +//#define __MMI_TEXT_TTS_PROMPT_SUPPORT__ + + #endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c index fb5d12fd..c697351a 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c @@ -308,7 +308,7 @@ const void * lang_text_ch[] = { "保存", "分享", "内存不足", - "知道啦", + "知道了", "保存失败", "文件错误", "操作错误", diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c index 6d9fc998..29604ad7 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c +++ b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c @@ -217,6 +217,12 @@ void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_hi } #endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ +void mmi_ui_msg_action_text_tts_prompt(void) +{ + mmi_ui_msg_action_no_para_msg(MMI_MSG_TEXT_TTS_PROMPT); +} +#endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h index 9be588dc..77de5a56 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h +++ b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h @@ -91,6 +91,9 @@ void mmi_ui_msg_action_ai_talk_incoming(void); void mmi_ui_msg_action_hengai_bp_calibrate_result(bool state); void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_high, uint16_t bp_value_low); #endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ +void mmi_ui_msg_action_text_tts_prompt(void); +#endif void mmi_ui_falldown(void); diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c index 0e209a64..401a95c5 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c +++ b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c @@ -476,6 +476,11 @@ void watch_ui_message_handle(uint16_t msgid, void * msg) mmi_ui_msg_update_hengai_bp_measure_result(state, bp_value_high, bp_value_low); break; #endif + #ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + case MMI_MSG_TEXT_TTS_PROMPT: + mmi_ui_msg_update_text_tts_prompt(); + break; + #endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h index 97cb86e4..ecfa0457 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h +++ b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h @@ -142,6 +142,9 @@ enum MMI_MSG_HENGAI_BP_CALIBRATE_RESULT, MMI_MSG_HENGAI_BP_MEASURE_RESULT, #endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + MMI_MSG_TEXT_TTS_PROMPT, +#endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h b/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h index f81745b5..e3e13094 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h @@ -239,6 +239,9 @@ enum #endif #ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__ ACT_ID_CHIP_TEMP_HIGH, +#endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + ACT_ID_TEXT_TTS_PROMPT, #endif ACT_ID_WATCH_FALLDWON, ACT_ID_WATCH_CONFIRM, diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h index 78d9ed7b..bae33701 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h @@ -307,7 +307,7 @@ enum WATCH_TEXT_ID_SAVE, /* "保存" "Save"*/ WATCH_TEXT_ID_SHARE, /* "分享" "Share"*/ WATCH_TEXT_ID_OUT_OF_MEM, /* "内存不足" "Out of Memory"*/ - WATCH_TEXT_ID_GOT_IT, /* "知道啦" "OK" */ + WATCH_TEXT_ID_GOT_IT, /* "知道了" "OK" */ WATCH_TEXT_ID_SAVE_FAILED, /* "保存失败" "Save Failed"*/ WATCH_TEXT_ID_FILE_ERROR, /* "文件错误" "File Error"*/ WATCH_TEXT_ID_OPERATION_ERROR, /* "操作错误" "Operation Error"*/ diff --git a/2.sdk/sdk/gui/lv_watch/lv_watch_res.h b/2.sdk/sdk/gui/lv_watch/lv_watch_res.h index 8f2ac395..dab743bb 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_watch_res.h +++ b/2.sdk/sdk/gui/lv_watch/lv_watch_res.h @@ -1072,6 +1072,10 @@ LV_IMG_DECLARE(img_poweron_logo); #define BlOOD_PRESSURE_COFIREM_PNG_1 "R:/png/setting_blood_pressure/IMAGE_BP_CALIBRATION_BUTTON_NORMAL.png" #define BlOOD_PRESSURE_COFIREM_PNG_2 "R:/png/setting_blood_pressure/IMAGE_BP_CALIBRATION_BUTTON_PROCESS.png" #endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ +#define ICON_TEXT_TTS_PROMPT "R:/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png" +#define ICON_TEXT_TTS_PROMPT_BUTTON "R:/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png" +#endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c index 9405cfb2..bb366d1c 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c @@ -4157,6 +4157,49 @@ bool mmi_protocol_fzd_action_send_iccid(void) return result; } +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ +bool mmi_protocol_fzd_parse_SERVER_TEXT_TTS_PROMPT(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_TEXT_TTS_PROMPT; + + if(NULL == next_buff || 0 == next_buff_len) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + + result = mmi_protocol_fzd_send_without_data(action); + + unsigned char * temp_ptr = NULL; + unsigned int next_buff_len_new = 0; + + temp_ptr = km_strtok_r(NULL, ",", &next_buff); + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%s\n", __FUNCTION__, __LINE__, temp_ptr, next_buff); + if (NULL != temp_ptr) + { + unsigned char t_buff[MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN] = {0}; + uint8_t t_len = 0; + + mmi_unicode_hex_str_to_utf8_str(temp_ptr, strlen(temp_ptr), t_buff, &t_len); + mmi_text_tts_prompt_text_set(t_buff, t_len); + } + else + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + + next_buff_len_new = mmi_protocol_fzd_voice_data_decrypt(next_buff, next_buff_len); + mmi_text_tts_prompt_tts_set(next_buff, next_buff_len_new); + + mmi_text_tts_prompt_action(); + + return result; +} +#endif + + #endif diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h index b40eeaf9..7069ca01 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h @@ -209,6 +209,9 @@ MMI_FZD_ACTION_HENGAI_SLEEP_DATA_TEST, #endif #ifdef MMI_PROJECT_C55_DS_D11G_DT_HZCH MMI_FZD_ACTION_SEND_TELECOM_INFO, +#endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + MMI_FZD_SERVER_TEXT_TTS_PROMPT, #endif MMI_FZD_ACTION_SEND_ICCID, MMI_FZD_SERVER_SET_BOOTOFF, @@ -382,6 +385,9 @@ bool mmi_protocol_fzd_action_send_telecom_info(void); bool mmi_protocol_fzd_action_send_telecom_info_pre(void); #endif bool mmi_protocol_fzd_action_send_iccid(void); +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ +bool mmi_protocol_fzd_parse_SERVER_TEXT_TTS_PROMPT(unsigned char * next_buff, unsigned int next_buff_len); +#endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c index 7da36b11..cc20f1c8 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c @@ -142,6 +142,9 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO #endif #ifdef MMI_PROJECT_C55_DS_D11G_DT_HZCH {MMI_FZD_ACTION_SEND_TELECOM_INFO, "TELECOM_INFO"}, + #endif + #ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + {MMI_FZD_SERVER_TEXT_TTS_PROMPT, "TTS_VOICE"}, #endif {MMI_FZD_ACTION_SEND_ICCID, "ICCID"}, {MMI_FZD_SERVER_SET_BOOTOFF, "BOOTOFF"}, @@ -493,6 +496,12 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned break; #endif + #ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + case MMI_FZD_SERVER_TEXT_TTS_PROMPT: + mmi_protocol_fzd_parse_SERVER_TEXT_TTS_PROMPT(next_buff, next_buff_len); + break; + #endif + case MMI_FZD_ACTION_SEND_ICCID: break; diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c index 4acaf283..df4defdd 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c @@ -2044,6 +2044,282 @@ void mmi_watch_chip_temperature_check(void) #endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ + +static mmi_text_tts_prompt_data_t s_text_tts_prompt_data = {0}; + +void mmi_text_tts_prompt_text_set(char * text_data, uint32_t text_len) +{ + if(NULL != s_text_tts_prompt_data.text_data) + { + lv_mem_free(s_text_tts_prompt_data.text_data); + s_text_tts_prompt_data.text_data = NULL; + } + + s_text_tts_prompt_data.text_data = (char *)lv_mem_alloc(MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN); + if(NULL == s_text_tts_prompt_data.text_data) + { + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return; + } + _lv_memset_00(s_text_tts_prompt_data.text_data, (MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN)); + + s_text_tts_prompt_data.text_len = ((text_len > (MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN - 1)) ? (MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN - 1) : text_len); + _lv_memcpy(s_text_tts_prompt_data.text_data, text_data, s_text_tts_prompt_data.text_len); +} + +static char * mmi_text_tts_prompt_text_data_get(void) +{ + return s_text_tts_prompt_data.text_data; +} + +void mmi_text_tts_prompt_tts_set(char * tts_data, uint32_t tts_len) +{ + if(NULL != s_text_tts_prompt_data.tts_data) + { + lv_mem_free(s_text_tts_prompt_data.tts_data); + s_text_tts_prompt_data.tts_data = NULL; + } + + s_text_tts_prompt_data.tts_data = (char *)lv_mem_alloc(tts_len + 1); + if(NULL == s_text_tts_prompt_data.tts_data) + { + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return; + } + _lv_memset_00(s_text_tts_prompt_data.tts_data, (tts_len + 1)); + + s_text_tts_prompt_data.tts_len = tts_len; + _lv_memcpy(s_text_tts_prompt_data.tts_data, tts_data, s_text_tts_prompt_data.tts_len); +} + +static char * mmi_text_tts_prompt_tts_data_get(void) +{ + return s_text_tts_prompt_data.tts_data; +} + +static uint32_t mmi_text_tts_prompt_tts_len_get(void) +{ + return s_text_tts_prompt_data.tts_len; +} + +void mmi_text_tts_prompt_data_free(void) +{ + if(NULL != s_text_tts_prompt_data.text_data) + { + lv_mem_free(s_text_tts_prompt_data.text_data); + s_text_tts_prompt_data.text_data = NULL; + } + + if(NULL != s_text_tts_prompt_data.tts_data) + { + lv_mem_free(s_text_tts_prompt_data.tts_data); + s_text_tts_prompt_data.tts_data = NULL; + } + + _lv_memset_00(&s_text_tts_prompt_data, sizeof(mmi_text_tts_prompt_data_t)); +} + + +static bool s_is_TEXT_TTS_PROMPT = false; + +bool mmi_is_TEXT_TTS_PROMPT(void) +{ + return s_is_TEXT_TTS_PROMPT; +} + +static lv_remind_obj_ext_t * mmi_text_tts_prompt_screen_ext_get(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_TEXT_TTS_PROMPT); + if(NULL == activity_obj) + return NULL; + + lv_obj_t * watch_obj = NULL; + lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); + if(NULL != watch_obj) + { + void * ext = lv_obj_get_ext_attr(watch_obj); + return ext; + } + + return NULL; +} + +static void mmi_text_tts_prompt_screen_prepare_destory(lv_obj_t * activity_obj) +{ + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_watch_png_cache_all_free(); + + Hal_Vibrator_Play_End(); + + Hal_Tone_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_3); + + lv_text_tts_prompt_obj_ext_t * ext = mmi_text_tts_prompt_screen_ext_get(); + if(ext) + { + if(NULL != ext->timer_id) + { + Hal_Timer_Stop(ext->timer_id); + ext->timer_id = NULL; + } + } + + watch_set_suspend_enable(true, ACT_ID_TEXT_TTS_PROMPT, 0); + + s_is_TEXT_TTS_PROMPT = false; +} + +void mmi_text_tts_prompt_screen_clean(void) +{ + mmi_text_tts_prompt_screen_prepare_destory(NULL); + + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_TEXT_TTS_PROMPT); + if(NULL != activity_obj) + { + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_obj_del(activity_obj); + } +} + +static void mmi_text_tts_prompt_btn_event_cb(lv_obj_t * obj, lv_event_t e) +{ + if(LV_EVENT_CLICKED == e) + { + mmi_text_tts_prompt_screen_clean(); + mmi_text_tts_prompt_data_free(); + } +} + +static void mmi_text_tts_prompt_screen_timeout(void * para) +{ + mmi_text_tts_prompt_screen_clean(); + mmi_text_tts_prompt_data_free(); +} + +static lv_obj_t * mmi_text_tts_prompt_screen_create(lv_obj_t * activity_obj) +{ + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_TEXT_TTS_PROMPT; + activity_ext.create = mmi_text_tts_prompt_screen_create; + activity_ext.prepare_destory = mmi_text_tts_prompt_screen_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + if(NULL == activity_obj) + return NULL; + } + + /* watch obj */ + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_NO); // LV_WATCH_ANIM_HOR_RIGHT_HIDE); + lv_text_tts_prompt_obj_ext_t * ext = (lv_text_tts_prompt_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_text_tts_prompt_obj_ext_t)); + + lv_obj_t * cont = lv_cont_create(obj, NULL); + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + //lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_click(cont, false); + + + // image + lv_obj_t * img_prompt = lv_img_create(cont, NULL); + lv_img_set_src(img_prompt, ICON_TEXT_TTS_PROMPT); + lv_obj_align(img_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 4); + + // text + lv_obj_t * label_prompt = lv_label_create(cont, NULL); + lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font18); + lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK); + lv_obj_set_width(label_prompt, lv_obj_get_width(obj) - 24); + lv_label_set_text(label_prompt, mmi_text_tts_prompt_text_data_get()); + lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -5); + + // button + lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_TEXT_TTS_PROMPT_BUTTON); + lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_TEXT_TTS_PROMPT_BUTTON); + lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_TOP_MID, 0, 173); + lv_obj_set_event_cb(imgbtn, mmi_text_tts_prompt_btn_event_cb); + + lv_obj_t * label_btn = lv_label_create(imgbtn, NULL); + lv_obj_add_style(label_btn, LV_LABEL_PART_MAIN, &lv_watch_font20); + lv_label_set_text_id(label_btn, WATCH_TEXT_ID_GOT_IT); + lv_obj_align(label_btn, NULL, LV_ALIGN_CENTER, 0, 0); + + /* start timer (1 min) */ + ext->timer_id = Hal_Timer_Start(MMI_TEXT_TTS_PROMPT_TIMEOUT, mmi_text_tts_prompt_screen_timeout, NULL, false); + + watch_set_suspend_enable(false, ACT_ID_TEXT_TTS_PROMPT, 0); + + s_is_TEXT_TTS_PROMPT = true; + + return obj; +} + +static void mmi_text_tts_prompt_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) +{ + printf("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); + + if(AUDIO_CTRL_PRIORITY_3 == priority) + { + // + } + else if(AUDIO_CTRL_PRIORITY_3 > priority) + { + mmi_text_tts_prompt_screen_clean(); + } +} + +void mmi_ui_msg_update_text_tts_prompt(void) +{ + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(mmi_is_TEXT_TTS_PROMPT()) + { + mmi_text_tts_prompt_screen_clean(); + uos_sleep(20); + } + + if(AUDIO_CTRL_PRIORITY_3 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_3, mmi_text_tts_prompt_audio_ctrl_callback)) + { + uint8_t volume = 0; + #ifdef __MMI_USER_PROFILE_SUPPORT__ + volume = mmi_user_profile_current_mode_remind_volume_get(); + #else + volume = query_current_volume(); + #endif + Hal_Tone_Play_Repeat(mmi_text_tts_prompt_tts_data_get(), mmi_text_tts_prompt_tts_len_get(), volume); + + if(true == mmi_watch_vibrate_is_permitted()) + Hal_Vibrator_Play_Repeat(); + + mmi_text_tts_prompt_screen_create(NULL); + } +} + +void mmi_text_tts_prompt_action(void) +{ + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(true == mmi_active_screen_is_prohibit_interrupted() + #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ + || true == mmi_watch_is_in_do_not_disturb_time() + #endif + ) + { + return ; + } + + // ui + mmi_watch_wake_up(); + mmi_ui_msg_action_text_tts_prompt(); +} +#endif + #endif diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h index 2d4841e3..013a0190 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h @@ -127,6 +127,35 @@ void mmi_watch_chip_temperature_check(void); #endif +#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__ +#define MMI_TEXT_TTS_PROMPT_TEXT_LEN (30) // text len +#define MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN (MMI_TEXT_TTS_PROMPT_TEXT_LEN * 4) // text len + +#define MMI_TEXT_TTS_PROMPT_TIMEOUT (1000 * 60) // ms + +typedef struct +{ + char * text_data; + uint32_t text_len; + char * tts_data; + uint32_t tts_len; +} mmi_text_tts_prompt_data_t; + +typedef struct +{ + lv_watch_obj_ext_t lv_watch_obj; + /*New data for this type */ + TIMER_ID timer_id; +} lv_text_tts_prompt_obj_ext_t; + +void mmi_text_tts_prompt_text_set(char * text_data, uint32_t text_len); +void mmi_text_tts_prompt_tts_set(char * tts_data, uint32_t tts_len); + +void mmi_ui_msg_update_text_tts_prompt(void); +void mmi_text_tts_prompt_action(void); +#endif + + #endif