解决闹钟弹窗取消其他界面的长亮屏操作 1531/1
authorluozheng <1732036298@qq.com>
Wed, 18 Dec 2024 08:00:21 +0000 (16:00 +0800)
committerluozheng <1732036298@qq.com>
Wed, 18 Dec 2024 08:00:21 +0000 (16:00 +0800)
code/sdk/application/wearable/service/msg_center/include/notify/alarm_notification.h
code/sdk/application/wearable/service/msg_center/include/notify/findwatch_notification.h
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wearable/service/msg_center/src/notify/alarm_notification.cpp
code/sdk/application/wearable/service/msg_center/src/notify/findwatch_notification.cpp

index 0aee891..9fc0eeb 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-25 17:31:19
- * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-11-27 10:44:16
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-12-18 15:22:38
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/findwatch_notification.h
  */
 #ifndef FIND_WATCH_NOTIFICATION_H
@@ -92,6 +92,8 @@ namespace OHOS
 
         void setVolumeVal(int val);
 
+        static uint8_t pre_screen_status;
+
     private:
         FindWatchViewEventListener();
         ~FindWatchViewEventListener();
index 56ca0bf..e5f5a34 100644 (file)
@@ -557,7 +557,9 @@ void MsgCenterNotifyChargePlugProc(const Topic topic, Request* req)
 #endif
     SaveEleModel::GetInstance()->SetChargeStatus(true);
     if(PullUpDownView::GetInstance()){
-        PullUpDownView::GetInstance()->UpdateBatteryProcess();
+        // PullUpDownView::GetInstance()->UpdateBatteryProcess();
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::PullUpDownView::UpdateBatteryProcess,  OHOS::PullUpDownView::GetInstance() ));
     }
     /* ---------------------------------- 充电弹窗
      * ---------------------------------- */
@@ -593,7 +595,9 @@ void MsgCenterNotifyChargeUnPlugProc(const Topic topic, Request* req)
 #endif
     SaveEleModel::GetInstance()->SetChargeStatus(false);
     if(PullUpDownView::GetInstance()){
-        PullUpDownView::GetInstance()->UpdateBatteryProcess();
+        // PullUpDownView::GetInstance()->UpdateBatteryProcess();
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::PullUpDownView::UpdateBatteryProcess,  OHOS::PullUpDownView::GetInstance() ));
     }
 /* ---------------------------------- 充电弹窗 ---------------------------------- */
     testCHANINGView *t=testCHANINGView::GetInstance();
index adc7561..954641f 100755 (executable)
@@ -87,6 +87,8 @@ namespace OHOS
     constexpr int16_t DELAY_LABEL_HEIGHT = 35;
     constexpr int16_t DELAY_LABEL_FONT = 25;
 
+    uint8_t AlarmViewEventListener::pre_screen_status = 0;//屏幕之前的状态
+
     void StopNotifyCallback()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StopNotifyCallback");
@@ -505,6 +507,12 @@ namespace OHOS
             /* -------------------------------------------------------------------------- */
             StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING, NOTIFY_ONE_SECOND);
             ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
+
+            AlarmViewEventListener::pre_screen_status = uapi_dev_runtime_get_screen_always_on_status();//获取闹钟弹窗之前是否是长亮屏状态
+            if(!AlarmViewEventListener::pre_screen_status)
+            {
+                ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
+            }
         }
         NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmView);
         return g_alarmView;
@@ -544,7 +552,10 @@ namespace OHOS
             RootView::GetInstance()->Remove(g_alarmView);
             delete g_alarmView;
             g_alarmView = nullptr;
-            ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
+            if(!AlarmViewEventListener::pre_screen_status) //如果闹钟弹窗之前不是长亮屏状态,就取消闹钟弹窗设置的常亮屏
+            {
+                ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
+            }
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FreeAlarmView over!!");
         }
     }
index 0072bb4..182215f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-25 17:33:47
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-12-10 15:03:45
+ * @LastEditTime: 2024-12-18 15:23:13
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/findwatch_notification.cpp
  * @details:实现查找手表的功能一般需要手表和智能手机之间的配合,通常是通过手机上的应用(App)或其他设备发送指令给手表,触发手表的查找功能。
  * 以下是基本的实现步骤:
@@ -46,7 +46,7 @@ namespace OHOS
 {
     UIViewGroup *FindWatchGroupView{nullptr};
     UIButton *FindWatchButton{nullptr};
-    uint8_t pre_screen_status = 0;//屏幕之前的状态之前
+    uint8_t FindWatchViewEventListener::pre_screen_status = 0;//屏幕之前的状态
     FindWatchViewEventListener::FindWatchViewEventListener()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FindWatchViewEventListener::FindWatchViewEventListener");
@@ -474,8 +474,8 @@ namespace OHOS
         FindWatchViewEventListener::GetInstance().FindWatch_StartTimer(700);
         FindWatchViewEventListener::GetInstance().SetScreenBrightness();
 
-        pre_screen_status = uapi_dev_runtime_get_screen_always_on_status();//获取查找手表之前是否是长亮屏状态
-        if(!pre_screen_status)
+        FindWatchViewEventListener::pre_screen_status = uapi_dev_runtime_get_screen_always_on_status();//获取查找手表之前是否是长亮屏状态
+        if(!FindWatchViewEventListener::pre_screen_status)
         {
             ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
         }
@@ -505,7 +505,7 @@ namespace OHOS
         FindWatchViewEventListener::GetInstance().FindWatchRingPlayStop();
         FindWatchViewEventListener::GetInstance().ResumeScreenBrightness();
         FindWatchViewEventListener::GetInstance().FindWatch_StopTimer();
-        if(!pre_screen_status) //如果查找手表之前不是长亮屏状态,就取消查找手表设置的常亮屏
+        if(!FindWatchViewEventListener::pre_screen_status) //如果查找手表之前不是长亮屏状态,就取消查找手表设置的常亮屏
         {
             ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
         }