开启离线语音助手 665/1
authorpenglei <1624952103@qq.com>
Thu, 8 Aug 2024 10:20:39 +0000 (18:20 +0800)
committerpenglei <1624952103@qq.com>
Thu, 8 Aug 2024 10:20:39 +0000 (18:20 +0800)
code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/include/VocassistView.h
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/src/VocassistView.cpp

index 8cfabc4..42e1d8c 100644 (file)
@@ -373,6 +373,80 @@ namespace OHOS
 
     static constexpr const char *PNG_466x100BUTTON_IMAGE = APP_RES_PATH "/466x100button.bin"; // 466x100button图片
 
+    /* ---------------------------------- 智能助手 ---------------------------------- */
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE01 = APP_RES_PATH "/VOICE_ASSISTANT_01.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE02 = APP_RES_PATH "/VOICE_ASSISTANT_02.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE03 = APP_RES_PATH "/VOICE_ASSISTANT_03.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE04 = APP_RES_PATH "/VOICE_ASSISTANT_04.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE05 = APP_RES_PATH "/VOICE_ASSISTANT_05.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE06 = APP_RES_PATH "/VOICE_ASSISTANT_06.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE07 = APP_RES_PATH "/VOICE_ASSISTANT_07.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE08 = APP_RES_PATH "/VOICE_ASSISTANT_08.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE09 = APP_RES_PATH "/VOICE_ASSISTANT_09.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE10 = APP_RES_PATH "/VOICE_ASSISTANT_10.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE11 = APP_RES_PATH "/VOICE_ASSISTANT_11.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE12 = APP_RES_PATH "/VOICE_ASSISTANT_12.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE13 = APP_RES_PATH "/VOICE_ASSISTANT_13.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE14 = APP_RES_PATH "/VOICE_ASSISTANT_14.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE15 = APP_RES_PATH "/VOICE_ASSISTANT_15.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE16 = APP_RES_PATH "/VOICE_ASSISTANT_16.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE17 = APP_RES_PATH "/VOICE_ASSISTANT_17.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE18 = APP_RES_PATH "/VOICE_ASSISTANT_18.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE19 = APP_RES_PATH "/VOICE_ASSISTANT_19.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE20 = APP_RES_PATH "/VOICE_ASSISTANT_20.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE21 = APP_RES_PATH "/VOICE_ASSISTANT_21.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE22 = APP_RES_PATH "/VOICE_ASSISTANT_22.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE23 = APP_RES_PATH "/VOICE_ASSISTANT_23.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE24 = APP_RES_PATH "/VOICE_ASSISTANT_24.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE25 = APP_RES_PATH "/VOICE_ASSISTANT_25.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE26 = APP_RES_PATH "/VOICE_ASSISTANT_26.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE27 = APP_RES_PATH "/VOICE_ASSISTANT_27.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE28 = APP_RES_PATH "/VOICE_ASSISTANT_28.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE29 = APP_RES_PATH "/VOICE_ASSISTANT_29.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE30 = APP_RES_PATH "/VOICE_ASSISTANT_30.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE31 = APP_RES_PATH "/VOICE_ASSISTANT_31.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE32 = APP_RES_PATH "/VOICE_ASSISTANT_32.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE33 = APP_RES_PATH "/VOICE_ASSISTANT_33.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE34 = APP_RES_PATH "/VOICE_ASSISTANT_34.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE35 = APP_RES_PATH "/VOICE_ASSISTANT_35.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE36 = APP_RES_PATH "/VOICE_ASSISTANT_36.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE37 = APP_RES_PATH "/VOICE_ASSISTANT_37.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE38 = APP_RES_PATH "/VOICE_ASSISTANT_38.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE39 = APP_RES_PATH "/VOICE_ASSISTANT_39.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE40 = APP_RES_PATH "/VOICE_ASSISTANT_40.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE41 = APP_RES_PATH "/VOICE_ASSISTANT_41.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE42 = APP_RES_PATH "/VOICE_ASSISTANT_42.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE43 = APP_RES_PATH "/VOICE_ASSISTANT_43.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE44 = APP_RES_PATH "/VOICE_ASSISTANT_44.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE45 = APP_RES_PATH "/VOICE_ASSISTANT_45.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE46 = APP_RES_PATH "/VOICE_ASSISTANT_46.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE47 = APP_RES_PATH "/VOICE_ASSISTANT_47.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE48 = APP_RES_PATH "/VOICE_ASSISTANT_48.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE49 = APP_RES_PATH "/VOICE_ASSISTANT_49.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE50 = APP_RES_PATH "/VOICE_ASSISTANT_50.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE51 = APP_RES_PATH "/VOICE_ASSISTANT_51.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE52 = APP_RES_PATH "/VOICE_ASSISTANT_52.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE53 = APP_RES_PATH "/VOICE_ASSISTANT_53.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE54 = APP_RES_PATH "/VOICE_ASSISTANT_54.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE55 = APP_RES_PATH "/VOICE_ASSISTANT_55.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE56 = APP_RES_PATH "/VOICE_ASSISTANT_56.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE57 = APP_RES_PATH "/VOICE_ASSISTANT_57.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE58 = APP_RES_PATH "/VOICE_ASSISTANT_58.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE59 = APP_RES_PATH "/VOICE_ASSISTANT_59.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE60 = APP_RES_PATH "/VOICE_ASSISTANT_60.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE61 = APP_RES_PATH "/VOICE_ASSISTANT_61.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE62 = APP_RES_PATH "/VOICE_ASSISTANT_62.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE63 = APP_RES_PATH "/VOICE_ASSISTANT_63.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE64 = APP_RES_PATH "/VOICE_ASSISTANT_64.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE65 = APP_RES_PATH "/VOICE_ASSISTANT_65.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE66 = APP_RES_PATH "/VOICE_ASSISTANT_66.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE67 = APP_RES_PATH "/VOICE_ASSISTANT_67.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE68 = APP_RES_PATH "/VOICE_ASSISTANT_68.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE69 = APP_RES_PATH "/VOICE_ASSISTANT_69.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE70 = APP_RES_PATH "/VOICE_ASSISTANT_70.bin";
+    static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE71 = APP_RES_PATH "/VOICE_ASSISTANT_71.bin";
+    static constexpr const char *PNG_APPLIST_VOCASSIST_IMAGE = APP_RES_PATH "/APPLIST_VOCASSIST_IMAGE.bin";
+
     /* -------------------------------- 已删除的不必要图片 ------------------------------- */
     static constexpr const char *PNG_APPLIST_UI_SAMPLE_IMAGE = APP_RES_PATH "/APPLIST_UI_SAMPLE.bin"; // Applist图标
     static constexpr const char *PNG_APPLIST_TEMP_IMAGE = APP_RES_PATH "/TEMP_IMAGE.bin";
index 2c6a314..f11b6da 100644 (file)
@@ -397,9 +397,11 @@ namespace OHOS
         {VIEW_SLEEP, &NativeLauncher::InitSleepSlice},
         /*设置表盘样式*/
         {VIEW_SET_DIAL_STYLE, &NativeLauncher::InitSetDialStyleSlice},
-    /*心率周期检测*/
-    //{VIEW_SET_HEART, &NativeLauncher::InitSetHeartSlice},
-    /* -------------------------------------------------------------------------- */
+        /*心率周期检测*/
+        //{VIEW_SET_HEART, &NativeLauncher::InitSetHeartSlice},
+        /* -------------------------------------------------------------------------- */
+        /*智能助手*/
+        {VIEW_OFFLINEVOICE, &NativeLauncher::InitOfflineVoice},
 
 #ifdef SUPPORT_ALIPAY_SEC
         {VIEW_MAIN_ALIPAY, &NativeLauncher::InitMainAlipaySlice},
@@ -407,7 +409,6 @@ namespace OHOS
         {VIEW_MAIN_TEMP, &NativeLauncher::InitMainTempSlice},
 #if 0
         {VIEW_MAIN_ACTIVITY, &NativeLauncher::InitActivitySlice},
-        {VIEW_OFFLINEVOICE, &NativeLauncher::InitOfflineVoice},
         {VIEW_UISAMPLE, &NativeLauncher::InitUISampleSlice}
 #endif
     };
index 39f51d5..cac0377 100644 (file)
@@ -85,6 +85,7 @@ namespace OHOS
         {VIEW_SET_DIAL_STYLE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "更换表盘", STR_WATCH_FACE, nullptr},
         {VIEW_SAVEELE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "省电模式", STR_POWER_SAVE_MODE, nullptr},
         {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr},
+        {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr},
         {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr},
 #if 0
 /*屏蔽Slice*/
index 212bea7..8dbe6a9 100644 (file)
@@ -44,7 +44,9 @@ namespace OHOS
         {DROPDOWN_CLICK_SETTING, VIEW_SETTING},             // 设置
         {DROPDOWN_CLICK_BLUETOOTH, VIEW_CLASSIC_BLUETOOTH}, // 蓝牙
         {DROPDOWN_CLICK_DNOTDISTURB, VIEW_DNOTDISTURB},     // 勿扰
+#ifdef SUPPORT_ALIPAY_SEC
         {DROPDOWN_CLICK_SAVEELE, VIEW_MAIN_ALIPAY},         // 支付宝
+#endif
         {DROPDOWN_CLICK_FINDMYPHONE, VIEW_NETWORKANDCALL},  // 4G
         {MAIN_CLICK_BLOOD, VIEW_BLOOD_CHECK},               // 血氧检查
         {MAIN_CLICK_SETCARD, VIEW_ADD_CARD},                // 卡片管理
index 8ec9621..18601aa 100644 (file)
@@ -135,6 +135,7 @@ namespace OHOS {
         void SetCmdContext(std::string str);                         // 设置要展示的文字\r
         void DelayTimeCallbackExtend();\r
         void DeleteWordLabel();                             // 删除识别到的文字\r
+        void ChangeCallWord(std::string Word);                              // 切换提示词\r
     private:\r
         void InitVocassist(void);                           // 初始化语音图标控件\r
         void InitWordlabel(void);                               // 初始化文本控件\r
@@ -145,6 +146,7 @@ namespace OHOS {
         void CloseVocassist();                           // 波形切换为语音助手图标并清除文字\r
         std::string GetCmdContext();\r
         UILabel *wordContext{nullptr};\r
+        UILabel *callwordContext{nullptr};\r
         UIScrollView *workFrame{nullptr};\r
         UIImageAnimatorView::AnimatorStopListener* stoplistener{nullptr};\r
         UIView::OnClickListener* onClickListener{nullptr};\r
@@ -152,6 +154,7 @@ namespace OHOS {
         char storPicPathBuf[ANI_TOTAL_NUM][PATH_LENGTH];\r
         ImageAnimatorInfo imageAnimatorInfo[ANI_TOTAL_NUM];\r
         std::string allWord;                    // 记录显示文字\r
+        std::string callWord; \r
     };\r
 }\r
 #endif
\ No newline at end of file
index 9f73787..ab6637d 100644 (file)
@@ -35,8 +35,11 @@ static constexpr uint16_t VOCASSIST_HEIGHTH = 80;
 static constexpr uint16_t WORD_LENGTH = 60;\r
 static constexpr int16_t ERROR_RETVAL = -1;\r
 \r
+static uint8_t callword_index = 0;\r
+\r
 namespace OHOS {\r
 static osTimerId_t g_closeVocassistHandle = nullptr;\r
+static osTimerId_t g_callwordHandle = nullptr;\r
 static VoiceAssistance *g_pVoiceAssistance = nullptr;\r
 \r
 enum {\r
@@ -87,6 +90,27 @@ static constexpr char g_resStr[RESPONESE_MAX][WORD_LENGTH]{
     {"当前没有来电"}\r
 };\r
 \r
+static char CallWordStr[10][20] = { \r
+                            "小艺小艺",\r
+                            "接听电话",\r
+                            "挂断电话",\r
+                            "上一首",\r
+                            "下一首",\r
+                            "调大音量",\r
+                            "调小音量",\r
+                            "播放音乐",\r
+                            "停止播放",\r
+                            "继续播放",};\r
+\r
+void callwordTimerCallback(void)\r
+{\r
+    VoiceAssistance::GetInstance()->ChangeCallWord(CallWordStr[callword_index]);\r
+    callword_index++;\r
+    if(callword_index == 10)\r
+        callword_index = 0;\r
+}\r
+\r
+\r
 VoiceAssistance::VoiceAssistance()\r
 {\r
     g_pVoiceAssistance = this;\r
@@ -106,11 +130,21 @@ VoiceAssistance::~VoiceAssistance()
         g_closeVocassistHandle = nullptr;\r
     }\r
 \r
+    if (g_callwordHandle != nullptr) {\r
+        osStatus_t statusRet = osTimerDelete(g_callwordHandle);\r
+        if (statusRet != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete g_callwordHandle failed!!");\r
+        }\r
+        g_callwordHandle = nullptr;\r
+    }\r
+\r
     delete voicePhoto;\r
     voicePhoto = nullptr;\r
     workFrame->RemoveAll();\r
     delete wordContext;\r
     wordContext = nullptr;\r
+    delete callwordContext;\r
+    callwordContext = nullptr;\r
     delete workFrame;\r
     workFrame = nullptr;\r
 }\r
@@ -425,7 +459,21 @@ void VoiceAssistance::InitWordlabel() // 识别出的命令文本初始化
                              LABEL_TEXT_WIDTH, LABEL_TEXT_HEIGHT);\r
     wordContext->SetAlign(TEXT_ALIGNMENT_CENTER);\r
     wordContext->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+\r
+    callwordContext = new UILabel();\r
+    if (callwordContext == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to Create callwordContext!!");\r
+        return;\r
+    }\r
+    callwordContext->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TEXT_SIZE);\r
+    callwordContext->SetPosition(LABEL_TEXT_X_COORDINATE, 200,\r
+                             LABEL_TEXT_WIDTH, LABEL_TEXT_HEIGHT);\r
+    callwordContext->SetAlign(TEXT_ALIGNMENT_CENTER);\r
+    callwordContext->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+\r
     workFrame->Add(wordContext);\r
+    workFrame->Add(callwordContext);\r
+\r
 }\r
 \r
 bool VoiceAssistance::InitView(void *caller) // 界面初始化\r
@@ -453,7 +501,8 @@ bool VoiceAssistance::InitView(void *caller) // 界面初始化
         return false;\r
     }\r
     Add(workFrame);\r
-\r
+    g_callwordHandle = osTimerNew((osTimerFunc_t)callwordTimerCallback, osTimerPeriodic, NULL, NULL);\r
+    osTimerStart(g_callwordHandle,3000);\r
     voicePhoto->Start();\r
     return true;\r
 }\r
@@ -615,6 +664,8 @@ void VoiceAssistance::DelayTimeCallbackExtend()
     return;\r
 }\r
 \r
+\r
+\r
 void DelayTimeCallback(const void *argument)\r
 {\r
     UNUSED(argument);\r
@@ -623,6 +674,7 @@ void DelayTimeCallback(const void *argument)
     }\r
     VoiceAssistance *ptr = VoiceAssistance::GetInstance();\r
     GraphicService::GetInstance()->PostGraphicEvent(std::bind(&VoiceAssistance::DelayTimeCallbackExtend, ptr));\r
+\r
 }\r
 \r
 void VoiceAssistance::ExitProgress()\r
@@ -685,4 +737,12 @@ void VoiceAssistance::DelayDisplayTime(int32_t waitSec)
         return;\r
     }\r
 }\r
+\r
+void VoiceAssistance::ChangeCallWord(std::string Word)\r
+{\r
+    callWord = "提示:" + Word;\r
+    callwordContext->SetText(callWord.c_str()); // 在Label设置识别到的文字\r
+    callwordContext->Invalidate();\r
+}\r
+\r
 }\r