From a77c467ca9633650ddc554c0d58b99ccd1fba06f Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Sun, 20 Oct 2024 18:55:37 +0800 Subject: [PATCH] =?utf8?q?=E5=86=85=E5=AD=98=E5=88=86=E9=85=8D=E7=AE=A1?= =?utf8?q?=E7=90=86=E5=AE=9A=E4=B9=89=E5=92=8C=E6=96=87=E4=BB=B6=E5=90=8C?= =?utf8?q?=E6=AD=A5=E6=8E=A5=E5=8F=A3=E5=88=A4=E6=96=AD=E5=AE=9E=E7=8E=B0?= =?utf8?q?=EF=BC=88=E5=BE=85=E9=AA=8C=E8=AF=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/player/include/PlayersModelC.h | 3 +- .../nativeui/player/src/PlayersModel.cpp | 7 +++ .../nativeui/system/include/SystemLogModel.h | 42 +++++++++++++++- .../nativeui/system/src/SystemLogModel.cpp | 50 +++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModelC.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModelC.h index af325e910..955de6879 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModelC.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModelC.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-17 14:06:51 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-10-14 11:02:57 + * @LastEditTime: 2024-10-20 18:19:49 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModelC.h */ @@ -18,6 +18,7 @@ extern "C" #include void stopPlayingMusic(void); void custom_setUpListCase(void); + bool canSyncMusic(uint32_t songSize); #ifdef __cplusplus #if __cplusplus diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp index 62a81ba1f..1a6a26652 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp @@ -22,6 +22,7 @@ #include "settings/include/SettingModel.h" #include "bluetooth/include/BluetoothHeadsetEvent.h" #include +#include "system/include/SystemLogModel.h" namespace OHOS { static constexpr int VOLUME_MAXIMUM = 100; @@ -1172,6 +1173,12 @@ extern "C" OHOS::PlayersModel::GetInstance()->PlayerInit(); } + // 检查是否可以同步音乐 + bool canSyncMusic(uint32_t songSize) + { + return OHOS::SystemLogModel::GetInstance()->canSyncFile(APP_MUSIC_PATH,TOTAL_MUSIC_SPACE,songSize); + } + #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h b/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h index 4b7147b4c..341933e8a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h @@ -7,6 +7,40 @@ #include #include +#define TOTAL_MUSIC_SPACE (10 * 1024 * 1024) // 10M +#define TOTAL_MUSIC_SPACE_PATH "/user/musci/usermusci" + +#define TOTAL_RECORDING_SPACE (10 * 1024 * 1024) // 10M +#define TOTAL_RECORDING_SPACE_PATH "/user/musci/recording" + +#define TOTAL_RING_SPACE (2 * 1024 * 1024) // 2M +#define TOTAL_RING_SPACE_PATH "/user/musci/ring" + +#define TOTAL_DIAL_SPACE (27 * 1024 * 1024) // 27M +#define TOTAL_DIAL_SPACE_PATH "/user/dial/offlinedial" + +#define TOTAL_RES_DIAL_SPACE (7 * 1024 * 1024) // 7M +#define TOTAL_RES_DIAL_SPACE_PATH "/user/dial/resdial" + +#define TOTAL_CUSTOM_DAIL_SPACE (1 * 1024 * 1024) // 1M +#define TOTAL_CUSTOM_DAIL_SPACE_PATH "/user/dial/customdial" + +#define TOTAL_SYSTEM_SPACE (5 * 1024 * 1024) // 5M +#define TOTAL_SYSTEM_SPACE_PATH "/user/system" + +#define TOTAL_RES_SPACE (40 * 1024 * 1024) // 40M +#define TOTAL_RES_SPACE_PATH "/user/user/res" + +#define TOTAL_USERDATA_SPACE (5 * 1024 * 1024) // 5M +#define TOTAL_USERDATA_SPACE_PATH "/user/user/userdata" + +#define TOTAL_UPDATE_SPACE (15 * 1024 * 1024) // 15M +#define TOTAL_UPDATE_SPACE_PATH "/user/update" + +#define TOTAL_SPACE_SIZE (TOTAL_MUSIC_SPACE + TOTAL_RECORDING_SPACE + TOTAL_RING_SPACE + TOTAL_DIAL_SPACE + TOTAL_RES_DIAL_SPACE + TOTAL_CUSTOM_DAIL_SPACE + TOTAL_SYSTEM_SPACE + TOTAL_RES_SPACE + TOTAL_USERDATA_SPACE + TOTAL_UPDATE_SPACE) // 总空间大小 + +#define TOTAL_SYSTEM_SIZE (128 * 1024 * 1024) // 系统空间大小 + namespace OHOS { enum class SystemLogType { @@ -45,7 +79,13 @@ public: size_t getLogSize() const; // 获取日志数量 uint32_t GetCurrentTime(); // 获取当前时间 /* ---------------------------------- 系统内存 ---------------------------------- */ - std::string get_system_mem_info(); // 获取系统内存信息 + std::string get_system_mem_info(); // 获取系统内存信息 + long long getFolderSize(const char* folderPath); + bool canSyncFile(std::string path,uint32_t path_max_size,uint32_t download_size); // 获取文件占用空间大小 + long long getResRealSize(void) + { + return getFolderSize(TOTAL_RES_SPACE_PATH); + } /* ------------------------------- nextday日志记录 ------------------------------ */ bool save_nextday_log(uint32_t timestamp); // 保存nextday日志 bool load_nextday_log(); // 加载nextday日志 diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp index e3ef04476..f3924d599 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp @@ -22,6 +22,9 @@ #include #include #include +#include +#include +#include #define SYSTEM_LOG_FILE_PATH "/system/system_log.txt" #define SYSTEM_LOG_FILE_PATH_NEXTDAY "/system/system_log_nextday.txt" @@ -181,6 +184,53 @@ std::string SystemLogModel::get_system_mem_info() { : result.str(); } + + +long long SystemLogModel::getFolderSize(const char* folderPath) { + DIR* dir; + struct dirent* entry; + struct stat fileStat; + long long totalSize = 0; + + dir = opendir(folderPath); + if (dir == NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error opening directory"); + return 0; + } + + while ((entry = readdir(dir))!= NULL) { + char filePath[1024]; + snprintf(filePath, sizeof(filePath), "%s/%s", folderPath, entry->d_name); + + if (stat(filePath, &fileStat) == -1) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error getting file status"); + continue; + } + + if (S_ISDIR(fileStat.st_mode)) { + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + totalSize += getFolderSize(filePath); + } else { + totalSize += fileStat.st_size; + } + } + + closedir(dir); + return totalSize; +} + +// 检查是否可以同步文件 +bool SystemLogModel::canSyncFile(std::string path,uint32_t path_max_size,uint32_t download_size) +{ + // 获取文件夹的大小 + long long usedSpace = getFolderSize(path.c_str()); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "usedSpace = %lld",usedSpace); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "path_max_size = %lld",path_max_size); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "download_size = %lld",download_size); + + return (usedSpace + download_size) <= path_max_size; +} // nextday相关 bool SystemLogModel::save_nextday_log(uint32_t timestamp) { // 检查容量,最多存储7条日志 -- 2.17.1