int RecordingPlayerStat();
/* -------------------------------------------------------------------------- */
void InitRecordingListItem();
- const RecordingListItem *GetRecordinglistItems() const;
- uint8_t GetRecordingListNum() const;
+ std::vector<RecordingListItem> &GetRecordinglistItems();
+ int &GetRecordingListNum();
std::string GetCleanFileName(const std::string &filePath);
void SearchFiles(const std::string &directory, std::vector<std::string> &fileNames, int &mp3FileCount);
-
+ void KeepClickRecordingIndex(int index_);
+ int GetClickRecordingIndex(void);
+ std::vector<std::string> &GetFileNames(void);
+ void KeepTotalRecordDuration(std::string time);
+ const char *GetTotalRecordDuration(void);
/* ----------------------------------- 定时器 ---------------------------------- */
void Recording_StartTimer(uint32_t interval);
void Recording_StopTimer(void);
std::map<std::string, std::string> Header;
std::shared_ptr<Source> Resource{nullptr};
/* -------------------------------------------------------------------------- */
- std::vector<std::string> fileNames; // 文件名
- int RecordingMp3FileCount = 0; // 录音MP3数量
- const std::string directory = "/user/res/record/recording/";
- RecordingListItem *Recordings = nullptr;
-
- /* ----------------------------------- 定时器 ---------------------------------- */
- std::string recordDuration; // 录音时长
+ std::vector<std::string> fileNames; // 文件名
+ int RecordingMp3FileCount = 0; // 录音MP3数量
+ const std::string directory = "/user/res/record/recording/"; // 录音目录
+ std::vector<RecordingListItem> Recordings; // 存放录音信息的动态数组
+ std::string recordDuration; // 录音时长
+ int index; // 保存被点击录音的下标
+ std::string yyyymmhhh_date; // 保存年月日时间
+ std::string TotalRecordDuration; // 保存录音的总时长
};
}
static RecordingPlayerView *GetInstance(void);\r
UIScrollView *RecordingPlayerViewInit(void);\r
void ClearAll(void);\r
-\r
+ UILabelExt * GetRecordingFileNameLabel(void);\r
+ UILabelExt *GetRecordingTimeAndDurationLabel(void);\r
private:\r
UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
UIButton *SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener);\r
delete clicklister;\r
clicklister = nullptr;\r
}\r
- \r
+\r
delete recordList;\r
recordList = nullptr;\r
\r
// 把录音信息数据拿到存储到list中\r
void RecordListView::InitRecordingInfo(void)\r
{\r
- const RecordingListItem *itemInfo = RecordingModel::GetInstance()->GetRecordinglistItems();\r
+ std::vector<OHOS::RecordingListItem> &item = RecordingModel::GetInstance()->GetRecordinglistItems();\r
for (int i = 0; i < RecordingModel::GetInstance()->GetRecordingListNum(); i++)\r
{\r
- AddRecordingToList(itemInfo[i]);\r
+ AddRecordingToList(item[i]);\r
}\r
}\r
\r
- // 每次录音完将数据刷新显示到list\r
+ /*\r
+ * @brief 每次录音完将数据刷新显示到list\r
+ */\r
void RecordListView::RefreshRecordingListData(void)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListView::RefreshRecordingListData");\r
p_RecordingListAdapter->ClearData();\r
InitRecordingInfo();\r
recordList->RefreshList();\r
+ if (RecordingModel::GetInstance()->GetRecordingListNum() == 0)\r
+ {\r
+ IsVisibleLabel(true);\r
+ }\r
+ else\r
+ {\r
+ IsVisibleLabel(false);\r
+ }\r
+ return;\r
}\r
\r
// 设置提醒标签是否可见\r
#include "bts_a2dp_source.h"
#include "audio_manager.h"
#include <wearable_log.h>
-#include "../../../../../../drivers/peripheral/utils/custom_utils.h"
+#include "custom_utils.h"
#include <cmsis_os2.h>
#include <service/graphic_service.h>
#include "record/include/RecordGoingView.h"
}
/*
- * @brief 获取纯净文件名
+ * @brief 获取纯净.mp3后缀文件名
* @param 文件路径
* @return 返回纯净文件名
*/
}
/*
- * @brief 初始化录音列表数据
- */
+ * @brief 初始化录音列表数据
+ */
void RecordingModel::InitRecordingListItem(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::InitRecordingListItem");
- char *date = uapi_get_local_yyyymmdd_date(); // 获取日期
+ yyyymmhhh_date = uapi_get_local_yyyymmdd_date(); // 获取日期
RecordingMp3FileCount = 0;
if (!fileNames.empty())
{
fileNames.clear();
}
+ if (!Recordings.empty())
+ {
+ Recordings.clear();
+ }
SearchFiles(directory, fileNames, RecordingMp3FileCount);
if (RecordingMp3FileCount != 0)
{
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File Name::%s\n", filename.c_str());
}
- Recordings = new RecordingListItem[RecordingMp3FileCount];
- if (Recordings == NULL)
+ // 对 Recordings 数组进行操作
+ for (int i = 0; i < RecordingMp3FileCount; i++)
{
- // 内存分配失败处理
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Recordings new fail!\n");
- }
- else
- {
- // 对 Recordings 数组进行操作
- for (int i = 0; i < RecordingMp3FileCount; i++)
- {
- Recordings[i] = {i, fileNames[i].c_str(), "09:51", date};
- }
- // 记得在不需要使用 Recordings 后释放内存
- // free(Recordings);
+ Recordings.push_back({i, fileNames[i].c_str(), "09:51", yyyymmhhh_date.c_str()});
}
}
}
- /// @brief 获取存放录音的基本信息数组
- /// @return
- const RecordingListItem *RecordingModel::GetRecordinglistItems() const
+ /*
+ * @brief 获取存放录音的基本信息动态数组
+ * @return 返回该动态数组
+ */
+ std::vector<RecordingListItem> &RecordingModel::GetRecordinglistItems(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::GetRecordinglistItems");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::GetRecordinglistItems");
return Recordings;
}
- /// @brief 获取录音数量
- /// @return
- uint8_t RecordingModel::GetRecordingListNum() const
+ /*
+ * @brief 获取录音数量
+ */
+ int &RecordingModel::GetRecordingListNum(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::GetRecordingListNum");
return RecordingMp3FileCount;
}
+ /*
+ * @brief 保存被点击录音下标
+ */
+ void RecordingModel::KeepClickRecordingIndex(int index_)
+ {
+ index = index_;
+ }
+
+ /*
+ * @brief 获取被点击录音下标
+ */
+ int RecordingModel::GetClickRecordingIndex(void)
+ {
+ return index;
+ }
+
+ /*
+ *@brief 获取保存文件名的动态数组
+ */
+ std::vector<std::string> &RecordingModel::GetFileNames(void)
+ {
+ return fileNames;
+ }
+
+ void RecordingModel::KeepTotalRecordDuration(std::string time)
+ {
+ TotalRecordDuration = time;
+ }
+
+ const char *RecordingModel::GetTotalRecordDuration(void)
+ {
+ return TotalRecordDuration.c_str();
+ }
/* ----------------------------------- 定时器 ---------------------------------- */
// 声明定时器变量
osTimerId_t g_timer = NULL;
static constexpr int16 NUM_TIME_HOUR = 3600;
static constexpr int32 NUM_TIME_DAY = 86400;
- /// @brief 显示录音时长
+ /*
+ * @brief 显示录音时长
+ */
char *RecordingModel::DisplayRecordDuration()
{
recordDuration.erase();
return (char *)recordDuration.c_str();
}
- // 在这里添加定时器到期后的处理逻辑
+ /*
+ * @brief 在这里添加定时器到期后的处理逻辑
+ */
static void Recording_TimerCallbackProc(int data)
{
g_RecordingTimes++;
RecordGoingView::GetInstance()->GetRecordingDurationLabel()->SetText(RecordingModel::GetInstance()->DisplayRecordDuration());
}
- // 回调函数
+ /*
+ * @brief 录音回调函数
+ */
static void Recording_TimerCallback(int data)
{
GraphicService::GetInstance()->PostGraphicEvent(std::bind(Recording_TimerCallbackProc, data));
}
- /// @brief 开启定时器函数
- /// @param interval 时间间隔,单位ms
+ /*
+ * @brief 开启定时器函数
+ * @param interval 时间间隔,单位ms
+ */
void RecordingModel::Recording_StartTimer(uint32_t interval)
{
/* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */
return;
}
- // 停止定时器函数
+ /*
+ * @brief 停止定时器
+ */
void RecordingModel::Recording_StopTimer(void)
{
// 检查定时器是否存在
return true;\r
}\r
\r
+ /*\r
+ * @brief 获取录音文件名标签\r
+ */\r
+ UILabelExt *RecordingPlayerView::GetRecordingFileNameLabel(void)\r
+ {\r
+ return RecordingFileName;\r
+ }\r
+\r
+ /*\r
+ * @brief 获取录音时间和时长标签\r
+ */\r
+ UILabelExt *RecordingPlayerView::GetRecordingTimeAndDurationLabel(void)\r
+ {\r
+ return RecordingTimeAndDuration;\r
+ }\r
+\r
UIScrollView *RecordingPlayerView::RecordingPlayerViewInit()\r
{\r
if (!SetUpScrollView())\r
{\r
if (std::remove(filepath) == 0)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Deleted file: %s", filepath);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Deleted file: %s successed!", filepath);\r
}\r
else\r
{\r
}\r
else if (strcmp(view.GetViewId(), RECORD_DELETE_ON_BUTTON_VIEWID) == 0)\r
{\r
- deleteFile("/user/res/record/recording/record_test.mp3");\r
- p_RecordingView->ChangeView(RECORDINGDELETEVIEW, RECORDINGPLAYERVIEW);\r
+ RecordingModel *p_RecordingModel = RecordingModel::GetInstance();\r
+ std::string fileName = "/user/res/record/recording/" + p_RecordingModel->GetFileNames()[p_RecordingModel->GetClickRecordingIndex()] + ".mp3";\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fileName:%s\n", fileName.c_str());\r
+ deleteFile(fileName.c_str());\r
+ if (--p_RecordingModel->GetRecordingListNum() < 0)\r
+ {\r
+ p_RecordingModel->GetRecordingListNum() = 0;\r
+ }\r
+ p_RecordingView->ChangeView(RECORDINGDELETEVIEW, RECORDINGVIEW);\r
return true;\r
}\r
else if (strcmp(view.GetViewId(), RECORD_DELETE_OFF_BUTTON_VIEWID) == 0)\r
UNUSED(event);\r
RecordingListitemView *p_RecordingListitemView = static_cast<RecordingListitemView *>(&view);\r
int index = p_RecordingListitemView->GetRecordingListIndex();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewOnClickListener::OnClick index:%d\n", index);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListViewOnClickListener::OnClick index:%d\n", index);\r
if (index >= RecordingModel::GetInstance()->GetRecordingListNum())\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewOnClickListener::OnClick is no index");\r
return false;\r
}\r
-\r
+ // 保存被点击录音下标\r
+ RecordingModel *p_RecordingModel = RecordingModel::GetInstance();\r
+ p_RecordingModel->KeepClickRecordingIndex(index);\r
+ if (p_RecordingModel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel GetInstance fail");\r
+ return false;\r
+ }\r
RecordingView *p_RecordingView = RecordingView::GetInstance();\r
if (p_RecordingView == nullptr)\r
{\r
return false;\r
}\r
p_RecordingView->ChangeView(RECORDINGLISTVIEW, RECORDINGPLAYERVIEW);\r
+ \r
+ \r
return true;\r
}\r
\r
#include "record/include/RecordingPresenter.h"\r
#include "UiConfig.h"\r
#include "wearable_log.h"\r
+#include "../include/RecordingModel.h"\r
namespace OHOS\r
{\r
static ImageAnimatorInfo RecordingViewImageAnimatorInfo[2] = {\r
RecordingViewScrollView[thisView] = p_RecordingPlayerView->RecordingPlayerViewInit();\r
RootView::GetInstance()->Add(RecordingViewScrollView[thisView]);\r
}\r
+ // 设置“录音播放器”【录音文件名标签】的"文本内容"为被点击的"录音"的录音名\r
+ p_RecordingPlayerView->GetRecordingFileNameLabel()->SetText(RecordingModel::GetInstance()->GetFileNames()[RecordingModel::GetInstance()->GetClickRecordingIndex()].c_str());\r
return true;\r
}\r
\r