解决狂按电源键或function键死机问题 632/1
authorluozheng <1732036298@qq.com>
Fri, 2 Aug 2024 06:36:45 +0000 (14:36 +0800)
committerluozheng <1732036298@qq.com>
Fri, 2 Aug 2024 06:36:45 +0000 (14:36 +0800)
code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownModel.cpp

index f653658..7981ad1 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-07-18 14:55:27
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-31 10:49:15
+ * @LastEditTime: 2024-08-02 11:57:16
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownModel.cpp
  */
 
@@ -16,6 +16,8 @@
 #include <custom_utils.h>
 #include "themestyle/include/ThemeStyleModel.h"
 #include "aimodels/include/AiModelsModel.h"
+#include "ConfigModel.h"
+#include "graphic_service.h"
 namespace OHOS
 {
     RebootAndShutdownModel::RebootAndShutdownModel() {}
@@ -53,9 +55,9 @@ namespace OHOS
 #endif
 #include <power_display_service.h>
 
-    static void HandlePowerKeyLongPress(void)
+    static void PowerKeyLongPressCallBack(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKeyLongPress");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PowerKeyLongPressCallBack");
 
         RebootAndShutdownPresenter *rebootAndShutdownPresenter = RebootAndShutdownPresenter::GetInstance();
         if (rebootAndShutdownPresenter != nullptr && true == rebootAndShutdownPresenter->GetIsShutDownImageAnimator())
@@ -79,6 +81,11 @@ namespace OHOS
         NativeAbility::GetInstance().EnterSlice(VIEW_REBOOTANDSHUTDOWN);
     }
 
+    static void HandlePowerKeyLongPress(void)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(PowerKeyLongPressCallBack));
+    }
+
     /*注册电源键的长按事件*/
     bool RebootAndShutdownModel::RegisterPowerKeyLongPressEvent(void)
     {
@@ -92,9 +99,9 @@ namespace OHOS
         return true;
     }
 
-    static void HandlePowerKeyDoubleClick(void)
+    static void PowerKeyDoubleClickCallBack(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKeyDoubleClick");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PowerKeyDoubleClickCallBack");
 
         RebootAndShutdownPresenter *rebootAndShutdownPresenter = RebootAndShutdownPresenter::GetInstance();
         if (rebootAndShutdownPresenter != nullptr && true == rebootAndShutdownPresenter->GetIsShutDownImageAnimator())
@@ -128,6 +135,11 @@ namespace OHOS
         }
     }
 
+    static void HandlePowerKeyDoubleClick(void)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(PowerKeyDoubleClickCallBack));
+    }
+
     /*注册电源键的双击事件*/
     bool RebootAndShutdownModel::RegisterPowerKeyDoubleClickEvent(void)
     {
@@ -142,9 +154,9 @@ namespace OHOS
         return true;
     }
 
-    static void HandFuncKeyOnPress(void)
+    static void FuncKeyOnPressCallBack(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootAndShutdownModel::HandFuncKeyOnPress");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootAndShutdownModel::FuncKeyOnPressCallBack");
 
         RebootAndShutdownPresenter *rebootAndShutdownPresenter = RebootAndShutdownPresenter::GetInstance();
         if (rebootAndShutdownPresenter != nullptr && true == rebootAndShutdownPresenter->GetIsShutDownImageAnimator())
@@ -162,6 +174,11 @@ namespace OHOS
         return;
     }
 
+    static void HandFuncKeyOnPress(void)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(FuncKeyOnPressCallBack));
+    }
+
     /*注册功能键的按下事件*/
     bool RebootAndShutdownModel::RegisterFuncKeyPressEvent(void)
     {
@@ -176,9 +193,9 @@ namespace OHOS
         return true;
     }
 
-    static void HandFuncKeyOnLongPress(void)
+    static void FuncKeyOnLongPressCallBack(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandFuncKeyOnLongPress");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FuncKeyOnLongPressCallBack");
 
         RebootAndShutdownPresenter *rebootAndShutdownPresenter = RebootAndShutdownPresenter::GetInstance();
         if (rebootAndShutdownPresenter != nullptr && true == rebootAndShutdownPresenter->GetIsShutDownImageAnimator())
@@ -188,7 +205,7 @@ namespace OHOS
 
         if (true == ConfigModel::GetInstance()->GetisFirstTimeStart())
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandFuncKeyOnLongPress: first time power on");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FuncKeyOnLongPressCallBack: first time power on");
             return;
         }
 
@@ -216,6 +233,11 @@ namespace OHOS
         }
     }
 
+    static void HandFuncKeyOnLongPress(void)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(FuncKeyOnLongPressCallBack));
+    }
+
     /*注册功能键的长按(2s)事件*/
     bool RebootAndShutdownModel::RegisterFuncKeyLongPressEvent(void)
     {
@@ -229,9 +251,9 @@ namespace OHOS
         return true;
     }
 
-    static void HandleFuncKeyOnClick(void)
+    static void FuncKeyOnClickCallBack(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleFuncKeyOnClick");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FuncKeyOnClickCallBack");
 
         RebootAndShutdownPresenter *rebootAndShutdownPresenter = RebootAndShutdownPresenter::GetInstance();
         if (rebootAndShutdownPresenter != nullptr && true == rebootAndShutdownPresenter->GetIsShutDownImageAnimator())
@@ -241,7 +263,7 @@ namespace OHOS
 
         if (true == ConfigModel::GetInstance()->GetisFirstTimeStart())
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKeyOnClick: first time power on");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FuncKeyOnClickCallBack: first time power on");
             return;
         }
 
@@ -266,6 +288,11 @@ namespace OHOS
         }
     }
 
+    static void HandleFuncKeyOnClick(void)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(FuncKeyOnClickCallBack));
+    }
+
     /*注册功能键的单击事件*/
     bool RebootAndShutdownModel::RegisterFuncKeyClickEvent(void)
     {
@@ -279,9 +306,9 @@ namespace OHOS
         return true;
     }
 
-    static void HandleFuncKeyDoubleClick(void)
+    static void FuncKeyDoubleClickCallBack(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleFuncKeyDoubleClick");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FuncKeyDoubleClickCallBack");
 
         RebootAndShutdownPresenter *rebootAndShutdownPresenter = RebootAndShutdownPresenter::GetInstance();
         if (rebootAndShutdownPresenter != nullptr && true == rebootAndShutdownPresenter->GetIsShutDownImageAnimator())
@@ -291,7 +318,7 @@ namespace OHOS
 
         if (true == ConfigModel::GetInstance()->GetisFirstTimeStart())
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKeyDoubleClick: first time power on");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FuncKeyDoubleClickCallBack: first time power on");
             return;
         }
 
@@ -312,6 +339,11 @@ namespace OHOS
         }
     }
 
+    static void HandleFuncKeyDoubleClick(void)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(FuncKeyDoubleClickCallBack));
+    }
+
     /*注册功能键双击事件*/
     bool RebootAndShutdownModel::RegisterFuncKeyDoubleClickEvent(void)
     {