表盘文件读取
authorroot <root@hcj>
Fri, 1 Mar 2024 11:31:58 +0000 (19:31 +0800)
committerroot <root@hcj>
Fri, 1 Mar 2024 11:31:58 +0000 (19:31 +0800)
code/sdk/application/wearable/fd230app/nativeui/dialupdate/include/DialUpdateModel.h
code/sdk/application/wearable/fd230app/nativeui/dialupdate/src/DialUpdateModel.cpp

index 56f0907..9fe9316 100644 (file)
@@ -4,12 +4,22 @@
 #include <string>
 
 #define MAX_DIALNUM 4
+#define MAX_DIALNUM_1 10
 typedef struct
 {
     const char *title;
     const char *thumbnailPath;
     const char *dialPath;
 } DialInfo;
+
+
+typedef struct
+{
+    const char *title;
+    const char *dialPath;
+} DialInfo_1;
+
+
 enum class DialPathType
 {
     DIAL_KUMI = 0,
index 377a5ad..60e0c3c 100644 (file)
 #include <fstream>
 #include "cJSON.h"
 #include "wearable_log.h"
+#include "dirent.h"
+#include "DialBinTypes.h"
+#include "DialBinParser.h"
+#include "image_info.h"
+#include "ui_resource_image.h"
+#include "common/image_cache_manager.h"
+
+#define  DIAL_DIR "user/res/dials"
 
 // 表盘名称||表盘缩约图||表盘路径
+DialInfo_1 dialInfo_1[MAX_DIALNUM_1];
+
 DialInfo dialInfo[MAX_DIALNUM] = {
     {"KUMI表盘", "user/res/dialupdate/KUMI.bin", "user/res/dials/KUMI.bin"},
     {"星空表盘", "user/res/dialupdate/galaxy.bin", "user/res/dials/galaxy.bin"},
     {"小狗表盘", "user/res/dialupdate/dog.bin", "user/res/dials/dog.bin"},
     {"招财猫", "user/res/dialupdate/maomao.bin", "user/res/dials/maomao.bin"}};
+int dial_num=0;
+void read_dial(void)
+{
+    DIR *dirp = opendir(DIAL_DIR);
+    // 遍历文件
+    dial_num=0;
+    if (dirp != NULL) 
+    {
+        while (dirent * ret=readdir(dirp))
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"file_name %s \r\n",ret->d_name);
+            if(dialInfo_1[dial_num].dialPath)
+            {
+                free((void*)dialInfo_1[dial_num].dialPath);
+            }
+            char path[124]={0};
+
+            sprintf(path,"user/res/dials/%s",ret->d_name);
+            char * str_1=(char*) malloc(sizeof(path));
+            strcpy(str_1,path);
+            dialInfo_1[dial_num].dialPath=str_1;
 
+            if(dialInfo_1[dial_num].title)
+            {
+                free((void*)dialInfo_1[dial_num].title);
+            }
+            FILE * fp = fopen(path, "rb");
+            if (fp == nullptr) 
+            {
+                return;
+            }
+            OHOS::DialHeader* data = static_cast<OHOS::DialHeader*>
+            (OHOS::DialBinParser::GetInstance()->MallocAndReadBuf(fp, sizeof(OHOS::DialHeader)));
+            
+            char * str_2=(char*) malloc(sizeof(data->dialName));
+            strcpy(str_2,data->dialName);
+            dialInfo_1[dial_num++].title=str_2;
+
+            fclose(fp);
+            delete(data);
+        }
+    }
+     
+    // 关闭目录
+    closedir(dirp);
+}
+
+void printf_dial(void)
+{
+    for(int i=0;i<dial_num;i++)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"file_name %s \r\n", dialInfo_1[i].dialPath);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"file_title %s \r\n", dialInfo_1[i].title);
+       
+    }
+     WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"num %d \r\n",dial_num );
+}
     //{"默认表盘", "user/res/dialupdate/defult_dial.bin", "user/res/dials/defult_dial.bin"}
 namespace OHOS
 {
@@ -37,6 +103,8 @@ namespace OHOS
      */
     uint8_t DialUpdateModel::GetDialConfigPath()
     {
+        read_dial();
+        printf_dial();
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialConfigPath:%d", Current_dial);
         return Current_dial;
     }