修复电量颜色更新缓慢 582/1 582/head
authorCaisking <3449750381@qq.com>
Wed, 24 Jul 2024 12:50:27 +0000 (20:50 +0800)
committerCaisking <3449750381@qq.com>
Wed, 24 Jul 2024 12:50:27 +0000 (20:50 +0800)
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBoxProgressView.h
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialBoxProgressView.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelPowerStandby.cpp

index d286f4d..7d6be25 100644 (file)
@@ -1,3 +1,9 @@
+/*** 
+ * @Date: 2024-05-30 15:59:37
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-24 20:40:41
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBoxProgressView.h
+ */
 /***
  * @Date: 2024-05-30 15:59:37
  * @LastEditors: Caisking 3449750381@qq.com
@@ -28,7 +34,7 @@ namespace OHOS
         }
         void HandleFloatData(float data) override;
         void UpdataChargColor();
-        void UpdateBatteryColor(int value);
+        void UpdateBatteryColor();
         void SetViewColor(int64_t color);
 
     private:
index 1398634..3c497cd 100644 (file)
@@ -20,26 +20,23 @@ namespace OHOS
 
     void DialBoxProgressView::HandleFloatData(float data)
     {
-        // 进行平滑处理
-        static float lastData = 0.0f;
-        float smoothedData = (lastData + data) / 2; // 简单取平均
-        lastData = smoothedData;
-
-        // 将平滑后的值限制在 0 到 1 之间
-        float ratio = smoothedData < 0.0f ? 0.0f : (smoothedData > 1.0f ? 1.0f : smoothedData);
+        // 值限制在 0 到 1 之间
+        float ratio = data < 0.0f ? 0.0f : (data > 1.0f ? 1.0f : data);
         int32_t value = static_cast<int32_t>(ratio * (GetRangeMax() - GetRangeMin()));
+        if (value != value_)
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateBatteryColor value:%d", value);
 
-        UpdateBatteryColor(value); // 在值变化或充电状态变化时更新颜色
+        UpdateBatteryColor(); // 在值变化或充电状态变化时更新颜色
 
         // 第一次初始化或值变化时更新
-        if (value_ != value)
+        if (value != value_)
         {
             value_ = value;
             SetValue(value_);
         }
     }
 
-    void DialBoxProgressView::UpdateBatteryColor(int value)
+    void DialBoxProgressView::UpdateBatteryColor()
     {
         bool isCharging = get_charge_stat(); // 获取充电状态
 
@@ -49,21 +46,20 @@ namespace OHOS
             return;
         }
 
-        // 电量未发生变化且未充电
-        if (value == value_)
-            return;
-
         // 根据值设置电池颜色
         if (value_ > BATTERY_MEDIUM_THRESHOLD)
         {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateBatteryColor White: %d", value_);
             SetViewColor(Color::White().full);
         }
-        else if (value_ > BATTERY_LOW_THRESHOLD)
+        else if (value_ <= BATTERY_MEDIUM_THRESHOLD && value_ > BATTERY_LOW_THRESHOLD)
         {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateBatteryColor Yellow: %d", value_);
             SetViewColor(Color::Yellow().full);
         }
-        else
+        else if (value_ <= BATTERY_LOW_THRESHOLD && value_ > 0)
         {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateBatteryColor Red: %d", value_);
             SetViewColor(Color::Red().full);
         }
     }
index 557c69c..3a031a4 100644 (file)
@@ -17,12 +17,7 @@ REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_POWER_STANDBY, OHOS::DialModelPowerSt
 
 namespace OHOS
 {
-    float DialModelPowerStanby::SmoothPowerUpdate(float newPower)
-    {
-        const float alpha = 0.1; // 平滑因子,总值范围是0-1
-        PowerStanby_ = alpha * newPower + (1 - alpha) * PowerStanby_;
-        return PowerStanby_;
-    }
+
     bool DialModelPowerStanby::GetDialFloatData(DialDataType &type, float &out)
     {
         (void)type;
@@ -34,7 +29,7 @@ namespace OHOS
         }
 
         float voltage = 0.0F;
-        PowerStanby_ = SmoothPowerUpdate(battery_get_voltage(&voltage));
+        PowerStanby_ = battery_get_voltage(&voltage);
 
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Battery voltage obtained: %.2f", voltage);
 
@@ -65,7 +60,7 @@ namespace OHOS
     void DialModelPowerStanby::UpdatePowerStanby()
     {
         float voltage = 0.0F;
-        PowerStanby_ = SmoothPowerUpdate(battery_get_voltage(&voltage));
+        PowerStanby_ = battery_get_voltage(&voltage);
         if (PowerStanby_ == 0)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get battery voltage");