步数等数据显示修改,修复手表数据不与APP一致问题 1508/3
authorhcj <1224667075@qq.com>
Thu, 12 Dec 2024 11:02:17 +0000 (19:02 +0800)
committerhcj <1224667075@qq.com>
Thu, 12 Dec 2024 11:02:17 +0000 (19:02 +0800)
code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityModel.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/include/goalmodel.h
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalmodel.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalother.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalview.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDistance.h
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDistance.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wearable/service/msg_center/src/notify/transmitting.cpp

index d4f9c81..3054a4d 100644 (file)
@@ -188,12 +188,15 @@ void ActivityModel::Init() {
   // StepSubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE);
   // StepSubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);
   InitStepData();
-  uint16_t counter = get_step_data();
+  uint32_t counter = OHOS::GoalModel::GetInstance().show_data_step_refresh();
+  uint32_t calories= OHOS::GoalModel::GetInstance().show_data_calories_refresh();
+  float  distance= OHOS::GoalModel::GetInstance().show_data_distance_refresh();
+ 
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityModel::ActivityModel,%d",counter);
   DialModelSteps::GetInstance()->UpdateSteps(counter); //更新表盘步数
   DialModelStepgoal::GetInstance()->UpdateStepgoal(counter); //更新表盘目标
-  DialModelDistance::GetInstance()->UpdateDistance(get_distance_data()); //更新表盘距离
-  DialModelCalorie::GetInstance()->UpdateCalorie(get_calories_data()); //更新表盘卡路里
+  DialModelDistance::GetInstance()->UpdateDistance(distance); //更新表盘距离
+  DialModelCalorie::GetInstance()->UpdateCalorie(calories); //更新表盘卡路里
 }
 
 uint32 ActivityModel::GetStepCounter(void) { return stepCounter; }
index 7758b33..c31d672 100644 (file)
@@ -58,16 +58,30 @@ namespace OHOS
             return other_goal_show;
         }
 
-
+        uint32_t goal_parse_step_data(void);
+        float goal_parse_calories_data(void);
+        float goal_parse_distance_data(void);
+        uint32_t goal_parse_fat_data(void);
+
+        uint32_t show_data_step_refresh(void);
+        float show_data_calories_refresh(void);
+        float show_data_distance_refresh(void);
+        uint32_t show_data_fat_refresh(void);
     private:
         //目标数据
-
         uint32_t step=0;
         uint32_t distance=0;
         uint32_t fat=0;
         uint32_t calories=0;
         uint32_t stand=0;
 
+        //展示数据
+        uint32_t show_step=0;
+        float show_distance=0;
+        uint32_t show_fat=0;
+        float show_calories=0;
+        uint32_t show_stand=0;
+
         uint32_t standdata_now=0;
 
         uint8_t step_goal_show=0;
index ed18d13..ee6e555 100644 (file)
@@ -12,6 +12,8 @@
 #include "ConfigModel.h"
 #include "cywee_hal.h"
 #include "goal_notification.h"
+#include "custom_utils.h"
+#include "cywee_ble_Service.h"
 
 namespace OHOS
 {
@@ -42,6 +44,12 @@ namespace OHOS
       stand=ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
 
       standdata_now=get_now_stand_count();
+
+      show_step=goal_parse_step_data();
+      show_calories=goal_parse_calories_data();
+      show_distance=goal_parse_distance_data();
+      show_fat=goal_parse_fat_data();
+
    }
 
 
@@ -52,7 +60,7 @@ namespace OHOS
    uint8_t GoalModel::getstepvalue()
    {
       int stepgoal = step;
-      int stepdata = get_step_data();//OHOS::ActivityModel::GetInstance()->GetStepCounter();
+      int stepdata = show_data_step_refresh();//get_step_data();//OHOS::ActivityModel::GetInstance()->GetStepCounter();
       // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %d %f ",stepdata,stepgoal,((float)stepdata/(float)stepgoal) * 100);
       uint8_t value = ((float)stepdata / (float)stepgoal) * 100;
 
@@ -79,7 +87,7 @@ namespace OHOS
    char stepnewstr[20];
    char *GoalModel::getstepnew()
    {
-      int stepdata = get_step_data();
+      int stepdata = show_data_step_refresh();
       memset((void *)stepnewstr, 0, 20);
       sprintf_s(stepnewstr, 20, "%d", stepdata);
       return stepnewstr;
@@ -97,7 +105,7 @@ namespace OHOS
    char caloriesnewstr[20];
    char *GoalModel::getcaloriespnew()
    {
-      int caloriesdata = get_calories_data();
+      int caloriesdata =  show_data_calories_refresh();
 
       memset((void *)caloriesnewstr, 0, 20);
       sprintf_s(caloriesnewstr, 20, "%d", caloriesdata);
@@ -116,7 +124,7 @@ namespace OHOS
    char distancenewstr[20];
    char *GoalModel::getdistancenew()
    {
-      float distancedata = (float)get_distance_data() / 1000.0;
+      float distancedata = show_data_distance_refresh();
 
       memset((void *)distancenewstr, 0, 20);
       sprintf_s(distancenewstr, 20, "%0.1f", distancedata);
@@ -135,7 +143,7 @@ namespace OHOS
 
    bool GoalModel::is_goal_DISTANCE_done()
    {
-       float distancedata_now = (float)get_distance_data() / 1000.0;
+       float distancedata_now = show_data_distance_refresh();
        int distancedata_goal = distance;
 
       if(distancedata_now>=distancedata_goal)
@@ -147,7 +155,7 @@ namespace OHOS
 
    bool GoalModel::is_goal_fatburning_done()
    {
-       int fatburningdata_now = get_fat_time_data()/60;
+       int fatburningdata_now =show_data_fat_refresh();
 
        int fatburningdata_goal = fat;
 
@@ -173,7 +181,7 @@ namespace OHOS
 
    bool GoalModel::is_goal_calories_done()
    {
-      int calories_now =  get_calories_data();
+      int calories_now =  show_data_calories_refresh();
 
       int calories_goal = calories;
 
@@ -188,7 +196,7 @@ namespace OHOS
 
    char *GoalModel::getfatburningnew()
    {
-      int fatburningdata = get_fat_time_data()/60;
+      int fatburningdata = show_data_fat_refresh();
 
       memset((void *)fatburningnewstr, 0, 20);
       sprintf_s(fatburningnewstr, 20, "%d", fatburningdata);
@@ -234,4 +242,225 @@ namespace OHOS
       }
    }
 
+   uint32_t GoalModel::goal_parse_step_data(void)
+   {
+      char path_[64]={0};
+      char timeday[12] = {0};
+      uapi_get_YYMMDD_Time_extend(timeday, '_',0);
+      sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_PATH,timeday);
+      FILE * fp = fopen(path_,"rb+");
+      uint32_t size=0;
+      uint32_t toal_data=0;
+
+      if (fp != NULL)
+      {
+         fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+         size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+         fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      }
+      else
+      {
+         return 0;
+      }
+      uint8_t *date=(uint8_t *)malloc(size);
+      if(date==NULL) return 0;
+      
+      fread(date,sizeof(uint8_t),size,fp);
+      fclose(fp);
+      int32_t sing_date=0;
+      int32_t timetemp=0;
+      
+      for(int i=0;i<size/8;i++ )
+      {
+         // uint8_t
+         memcpy(&timetemp,date+i*8,4);
+         memcpy(&sing_date,date+i*8+4,4);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time: %d", timetemp);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "data: %d", sing_date);
+         if(sing_date>0)
+         toal_data+=sing_date;
+      }
+      return toal_data;
+   }
+
+   float GoalModel::goal_parse_calories_data(void)
+   {
+      char path_[64]={0};
+      char timeday[12] = {0};
+      uapi_get_YYMMDD_Time_extend(timeday, '_',0);
+      sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_CALORIES_PATH,timeday);
+      FILE * fp = fopen(path_,"rb+");
+      uint32_t size=0;
+      float toal_data=0;
+
+      if (fp != NULL)
+      {
+         fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+         size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+         fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      }
+      else
+      {
+         return 0;
+      }
+      uint8_t *date=(uint8_t *)malloc(size);
+      if(date==NULL) return 0;
+      
+      fread(date,sizeof(uint8_t),size,fp);
+      fclose(fp);
+      float sing_date=0;
+      int32_t timetemp=0;
+      
+      for(int i=0;i<size/8;i++ )
+      {
+         // uint8_t
+         memcpy(&timetemp,date+i*8,4);
+         memcpy(&sing_date,date+i*8+4,4);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time: %d", timetemp);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "data: %d", sing_date);
+         if(sing_date>0)
+         toal_data+=sing_date;
+      }
+      return toal_data;
+   }
+
+    float GoalModel::goal_parse_distance_data(void)
+   {
+      char path_[64]={0};
+      char timeday[12] = {0};
+      uapi_get_YYMMDD_Time_extend(timeday, '_',0);
+      sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_DISTANCE_PATH,timeday);
+      FILE * fp = fopen(path_,"rb+");
+      uint32_t size=0;
+      float toal_data=0;
+
+      if (fp != NULL)
+      {
+         fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+         size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+         fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      }
+      else
+      {
+         return 0;
+      }
+      uint8_t *date=(uint8_t *)malloc(size);
+      if(date==NULL) return 0;
+      
+      fread(date,sizeof(uint8_t),size,fp);
+      fclose(fp);
+      float sing_date=0;
+      int32_t timetemp=0;
+      
+      for(int i=0;i<size/8;i++ )
+      {
+         // uint8_t
+         memcpy(&timetemp,date+i*8,4);
+         memcpy(&sing_date,date+i*8+4,4);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time: %d", timetemp);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "data: %d", sing_date);
+
+         if(sing_date>0)
+         toal_data+=sing_date;
+      }
+      return toal_data;
+   }
+
+
+   uint32_t GoalModel::goal_parse_fat_data(void)
+   {
+      char path_[64]={0};
+      char timeday[12] = {0};
+      uapi_get_YYMMDD_Time_extend(timeday, '_',0);
+      sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
+      FILE * fp = fopen(path_,"rb+");
+      uint32_t size=0;
+      float toal_data=0;
+
+      if (fp != NULL)
+      {
+         fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+         size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+         fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      }
+      else
+      {
+         return 0;
+      }
+      uint8_t *date=(uint8_t *)malloc(size);
+      if(date==NULL) return 0;
+      
+      fread(date,sizeof(uint8_t),size,fp);
+      fclose(fp);
+      uint16 sing_date=0;
+      int32_t timetemp=0;
+      
+      for(int i=0;i<size/6;i++ )
+      {
+         // uint8_t
+         memcpy(&timetemp,date+i*6,4);
+         memcpy(&sing_date,date+i*6+4,2);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time: %d", timetemp);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "data: %d", sing_date);
+         if(sing_date>0)
+         toal_data+=sing_date;
+      }
+      return toal_data;
+   }
+
+
+
+
+   uint32_t GoalModel::show_data_step_refresh(void)
+   {
+      int32_t value=0;
+      uint32_t toal_date;
+      
+      toal_date=show_step;
+      get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP);
+      if(value>0)
+      toal_date+=value;
+      return toal_date;
+   }
+
+   float GoalModel::show_data_calories_refresh(void)
+   {
+    
+      float   _f_value=0;
+      float   toal_date;
+      toal_date=show_calories;
+      get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_CALORIES);
+      if(_f_value>0)
+      toal_date+=_f_value;
+   
+      return toal_date;
+   }
+
+   float GoalModel::show_data_distance_refresh(void)
+   {
+    
+      float   _f_value=0;
+      float   toal_date;
+      toal_date=show_distance;
+      get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_DISTANCE);
+      if(_f_value>0)
+      toal_date+=_f_value;
+   
+      return toal_date;
+   }
+
+   uint32_t GoalModel::show_data_fat_refresh(void)
+   {
+    
+      uint16_t   _16_value=0;
+      uint32_t   toal_date;
+      toal_date=show_fat;
+      get_now_hour_data(&_16_value,CYWEE_SAVE_DATA_FAT);
+      if(_16_value>0)
+      toal_date+=_16_value;
+   
+      return toal_date;
+   }
+
+
 }
\ No newline at end of file
index f83204f..ed5a83a 100644 (file)
@@ -65,7 +65,7 @@ namespace OHOS
 
         Invalidate();
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GoalViewrefresh Invalidat ");
-        RootView::GetInstance()->Invalidate();
+        // RootView::GetInstance()->Invalidate();
 
 
     }
index 5c7b978..f26b49f 100644 (file)
@@ -55,7 +55,7 @@ namespace OHOS
 
         Invalidate();
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GoalViewrefresh Invalidat ");
-        RootView::GetInstance()->Invalidate();
+        // RootView::GetInstance()->Invalidate();
 
     }
 
index 1498d82..325cb8b 100644 (file)
@@ -29,7 +29,7 @@ namespace OHOS
             return &instance;
         }
         bool GetDialFloatData(DialDataType &type, float &out) override;
-        void UpdateDistance(uint32_t Distance);
+        void UpdateDistance(float Distance);
         int GetDistanceData(void);
 
     private:
index 07a12ed..ddaaf8f 100644 (file)
@@ -3,7 +3,7 @@
 #include "DialModelDistance.h"
 #include "wearable_log.h"
 REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_DISTANCE, OHOS::DialModelDistance::GetInstance());
-
+#include "goal/include/goalmodel.h"
 #include "cywee_hal.h"
 extern "C" int get_distance_data();
 
@@ -12,14 +12,14 @@ namespace OHOS
     bool DialModelDistance::GetDialFloatData(DialDataType &type, float &out)
     {
         (void)type;
-        distance_ = static_cast<float>(get_distance_data()) / 1000.0f;
+        distance_ = static_cast<float>( OHOS::GoalModel::GetInstance().show_data_distance_refresh());
         out = distance_;
         return true;
     }
 
-    void DialModelDistance::UpdateDistance(uint32_t distance) {
+    void DialModelDistance::UpdateDistance(float distance) {
       // 将距离从米(m)转换为公里(km)并保留一位小数
-      distance_ = static_cast<float>(distance) / 1000.0f; //  distance 米
+      distance_ = static_cast<float>(distance); //  distance 米
 
       if (onChangeListener_ != nullptr) {
         // 通知改变监听器更新距离数据
index 866aa2f..bcde174 100644 (file)
@@ -385,23 +385,19 @@ void MsgCenterNotifyONtimeProc(const Topic topic, Request* req)
    // The alarm notification is not displayed if the incoming call notification is already being processed
    cywee_save_data();
   
-//    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL);
-
    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时步数");
    step_history_save();
    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时站立数据");
     if(get_stand_falg())
-   {
-        stand_history_save();
-        SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
-   }
-    
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时卡路里数据");
+           stand_history_save();
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时卡路里数据");
    calories_history_save();
    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时距离数据");
    distances_history_save();
    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时燃脂数据");
    fat_history_save();
+//保存完增加一次读取数据
+    SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
 }
 
 
@@ -450,11 +446,13 @@ void MsgCenterNotifystepProc(const Topic topic, Request* req)
             0; // OHOS::ActivityModel::GetInstance()->GetStepCounter();
         counter = *(uint32_t *)req->data;
         set_step_data(counter);
-        counter=get_step_data();
+        counter=OHOS::GoalModel::GetInstance().show_data_step_refresh();
+        uint32_t calories= OHOS::GoalModel::GetInstance().show_data_calories_refresh();
+        float  distance= OHOS::GoalModel::GetInstance().show_data_distance_refresh();
         OHOS::DialModelSteps::GetInstance() ->UpdateSteps(counter);//更新表盘步数
         OHOS::DialModelStepgoal::GetInstance() ->UpdateStepgoal(counter);//更新表盘目标
-        OHOS::DialModelDistance::GetInstance() ->UpdateDistance(get_distance_data());//更新表盘距离
-        OHOS::DialModelCalorie::GetInstance() ->UpdateCalorie(get_calories_data());//更新表盘卡路里
+        OHOS::DialModelDistance::GetInstance() ->UpdateDistance(distance);//更新表盘距离
+        OHOS::DialModelCalorie::GetInstance() ->UpdateCalorie(calories);//更新表盘卡路里
 
 
         if(OHOS::GoalView::GetInstance())
@@ -1498,7 +1496,9 @@ void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
         {
             set_calories_data(c_activity_result_t->calories);
 #if DIALDATASET
-            DialModelCalorie::GetInstance()->UpdateCalorie(get_calories_data());
+            uint32_t calories= OHOS::GoalModel::GetInstance().show_data_calories_refresh();
+            
+            DialModelCalorie::GetInstance()->UpdateCalorie(calories);
 #endif
         }
         /*更新距离数据*/
@@ -1506,7 +1506,8 @@ void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
         {
             set_distance_data(c_activity_result_t->distance);  
 #if DIALDATASET
-            DialModelDistance::GetInstance()->UpdateDistance(get_distance_data());
+            float  distance= OHOS::GoalModel::GetInstance().show_data_distance_refresh();
+            DialModelDistance::GetInstance()->UpdateDistance(distance);
 #endif 
         }
     }
index 1b2a9c5..dd43954 100644 (file)
@@ -195,8 +195,8 @@ namespace OHOS
         if (Title == nullptr) {
         Title = new UILabelExt();
         }
-        Title->SetPosition(158, 51);         // widget's left position and top position
-        Title->Resize(800, 88);          // widget's width and height
+        Title->SetPosition(83, 50);         // widget's left position and top position
+        Title->Resize(300, 35);           // widget's width and height
         Title->SetViewId("label1");// Set style
         Title->SetStyle(STYLE_TEXT_FONT, 30);
 
@@ -204,7 +204,7 @@ namespace OHOS
         Title->SetText("OTA下载中");
         Title->SetTextId (STR_OTA_DOWNLOAD);
         
-        Title->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        Title->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
         Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         Title->SetRollSpeed(0);
         Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);