+/***
+ * @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
}
void HandleFloatData(float data) override;
void UpdataChargColor();
- void UpdateBatteryColor(int value);
+ void UpdateBatteryColor();
void SetViewColor(int64_t color);
private:
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(); // 获取充电状态
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);
}
}
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;
}
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);
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");