MAX_RECORDINGVIEWID,\r
} RECORDINGVIEWID;\r
\r
+ class RecordListViewOnClickListener : public UIView::OnClickListener\r
+ {\r
+ public:\r
+ RecordListViewOnClickListener() {}\r
+\r
+ ~RecordListViewOnClickListener() {}\r
+\r
+ bool OnClick(UIView &view, const ClickEvent &event) override;\r
+ };\r
+\r
class RecordingView;\r
class RecordingPresenter : public Presenter<RecordingView>,\r
public UIView::OnClickListener,\r
void OnStop() override;\r
\r
static RecordingPresenter *GetInstance();\r
-\r
+ int convertNumericDateTime(const char *numericDateTime, char *formattedDateTime);\r
private:\r
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
bool OnClick(UIView &view, const ClickEvent &event) override;\r
bool OnDrag(UIView &view, const DragEvent &event) override;\r
bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
- bool OnKeyAct(UIView &view, const KeyEvent &event) override; \r
+ bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
};\r
}\r
\r
#include "components/ui_image_animator.h"\r
\r
#include "record/include/RecordListView.h"\r
+#include "record/include/RecordGoingView.h"\r
namespace OHOS\r
{\r
static const char *RECORD_BUTTON = "RecordButton"; //录音按钮\r
\r
private:\r
RecordListView *p_RecordListView{nullptr};\r
-\r
+ RecordGoingView*p_RecordGoingView{nullptr};\r
private:\r
void RecordingViewInit(void);\r
void ClearAll(void);\r
.height = 35,\r
.fontSize = 30,\r
.lineHeigh = 35,\r
- .text = "音乐列表",\r
+ .text = "录音列表",\r
.lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
};\r
\r
.height = 124,\r
.fontSize = 26,\r
.lineHeigh = 30,\r
- .text = "当前音乐列表为空",\r
+ .text = "当前录音列表为空",\r
.lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
};\r
RecordListViewAttentionLabel = SetUpLabel(labelconfig);\r
{\r
// UIList 的适配器\r
p_RecordingListAdapter = new RecordingListAdapter();\r
- p_RecordingListAdapter->SetItemClickListener(RecordingPresenter::GetInstance());\r
+ p_RecordingListAdapter->SetItemClickListener(new RecordListViewOnClickListener());\r
recordList = new UIList();\r
if (recordList == nullptr)\r
{\r
m_button.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
m_button.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4FC34C, UIButton::PRESSED);
- SetLabelStyle(m_recordId, 45, 33, 96, 35, textColor, 30);
- SetLabelStyle(m_recordTotalTime, 258, 19, 73, 35, textColor, 30);
- SetLabelStyle(m_recordTime, 237, 57, 94, 23, subTextColor, 20);
+ SetLabelStyle(m_recordId, 35, 33, 96, 35, textColor, 25);
+ SetLabelStyle(m_recordTotalTime, 268, 19, 73, 35, textColor, 25);
+ SetLabelStyle(m_recordTime, 247, 57, 94, 23, subTextColor, 20);
}
void RecordingListitemView::SetLabelStyle(UILabel &label, int x, int y, int width, int height, OHOS::ColorType textColor, int fontSize)
#include "bts_a2dp_source.h"
#include "audio_manager.h"
#include <wearable_log.h>
+#include "../../../../../../drivers/peripheral/utils/custom_utils.h"
namespace OHOS
{
void RecordingModel::InitRecordingListItem()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::InitRecordingListItem");
+ char *date = uapi_get_CurrentDate();//获取日期
RecordingMp3FileCount = 0;
if (!fileNames.empty())
{
}
else
{
- int cnt = 1;
// 对 Recordings 数组进行操作
for (int i = 0; i < RecordingMp3FileCount; i++)
{
- Recordings[i] = {i,fileNames[i].c_str(),"09:51", "2022.04.21"};
- //std::string Id = "recording" + std::to_string(cnt++);
- //Recordings[i] = {i, Id.c_str(), "09:51", "2022.04.21"};
+ Recordings[i] = {i, fileNames[i].c_str(), "09:51", date};
}
// 记得在不需要使用 Recordings 后释放内存
// free(Recordings);
#include "record/include/RecordingPresenter.h"\r
#include "record/include/RecordingModel.h"\r
#include <wearable_log.h>\r
-#include "custom_utils.h"\r
+#include "../../../../../../drivers/peripheral/utils/custom_utils.h"\r
+#include "record/include/RecordingListitemView.h"\r
+\r
namespace OHOS\r
{\r
\r
// 初始化录音信息\r
RecordingModel::GetInstance()->InitRecordingListItem();\r
Presenter<RecordingView>::OnStart();\r
- ScreenControl(1);\r
+ ScreenAlwaysOnCtr(1);\r
}\r
\r
void RecordingPresenter::OnPause(void)\r
void RecordingPresenter::OnStop(void)\r
{\r
Presenter<RecordingView>::OnStop();\r
- ScreenControl(0);\r
+ ScreenAlwaysOnCtr(0);\r
}\r
\r
bool RecordingPresenter::OnDrag(UIView &view, const DragEvent &event)\r
return false;\r
}\r
\r
+ /// @brief 解析时间\r
+ /// @param numericDateTime "19700101000641"; // 输入的数字形式日期时间\r
+ /// @param formattedDateTime\r
+ /// @return\r
+ int RecordingPresenter::convertNumericDateTime(const char *numericDateTime, char *formattedDateTime)\r
+ {\r
+ if (strlen(numericDateTime) != 14)\r
+ {\r
+ return 0; // 如果输入的数字长度不为14,则转换失败\r
+ }\r
+\r
+ struct tm timeinfo = {0};\r
+ if (strptime(numericDateTime, "%Y%m%d%H%M%S", &timeinfo) == NULL)\r
+ {\r
+ return 0; // 解析失败\r
+ }\r
+\r
+ // 格式化输出为上午/下午几点几分几秒\r
+ strftime(formattedDateTime, 80, "%p %I点%M分%S秒", &timeinfo);\r
+\r
+ return 1; // 转换成功\r
+ }\r
+\r
#ifdef __cplusplus\r
extern "C"\r
{\r
\r
bool RecordingPresenter::OnClick(UIView &view, const ClickEvent &event)\r
{\r
-\r
- // 根据控件id查找是哪个控件触发了点击回调\r
if (strcmp(view.GetViewId(), RECORD_BUTTON) == 0)\r
{\r
- // 将参数保存到数组中\r
- char *args[6] = {0}; //{"01", "mp3", "16000", "1", "16", "/user/res/record/recording/recordyyyymmddhhmmss.mp3"};\r
- int argc = 6;\r
- args[0] = (char *)malloc(25);\r
- args[1] = (char *)malloc(25);\r
- args[2] = (char *)malloc(25);\r
- args[3] = (char *)malloc(25);\r
- args[4] = (char *)malloc(25);\r
- args[5] = (char *)malloc(100);\r
-\r
- sprintf(args[0], "01");\r
- sprintf(args[1], "mp3");\r
- sprintf(args[2], "16000");\r
- sprintf(args[3], "1");\r
- sprintf(args[4], "16");\r
- uapi_get_recordfilename(args[5]);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Recording....");\r
- AudioCaptureSample(argc, (const char **)args);\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_GOING);\r
+ char *args[6] = {0};\r
+ const char *defaultArgs[6] = {"01", "mp3", "16000", "1", "16", nullptr}; // 默认参数数组\r
\r
- free(args[0]);\r
- free(args[1]);\r
- free(args[2]);\r
- free(args[3]);\r
- free(args[4]);\r
- free(args[5]);\r
+ for (int i = 0; i < 5; ++i)\r
+ {\r
+ args[i] = (char *)malloc(25); // 分配内存\r
+ sprintf(args[i], "%s", defaultArgs[i]); // 设置默认参数值\r
+ }\r
+ args[5] = (char *)malloc(100); // 分配内存\r
\r
+ char *numericDateTime = (char *)malloc(20);\r
+ uapi_get_yyyymmddhhmmss_Date(numericDateTime); // 获取形如:19700101000641格式的日期时间\r
+ char formattedDateTime[80];\r
+ if (convertNumericDateTime(numericDateTime, formattedDateTime))\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Formatted DateTime: %s\n", formattedDateTime);\r
+ sprintf(args[5], "/user/res/record/recording/%s.mp3", formattedDateTime);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to convert numeric date time\n", formattedDateTime);\r
+ }\r
+ /* ---------------------------------- 开始录音 ---------------------------------- */\r
+ AudioCaptureSample(6, (const char **)args);\r
+ /* --------------------------------- 跳转到录音界面 -------------------------------- */\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_GOING);\r
+ /* ---------------------------------- 释放内存 ---------------------------------- */\r
+ for (int i = 0; i < 6; ++i)\r
+ {\r
+ free(args[i]);\r
+ }\r
+ free(numericDateTime);\r
+ /* -------------------------------------------------------------------------- */\r
return true;\r
}\r
return true;\r
}\r
return true;\r
}\r
+\r
+ bool RecordListViewOnClickListener::OnClick(UIView &view, const ClickEvent &event)\r
+ {\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
+ if (index >= RecordingModel::GetInstance()->GetRecordingListNum())\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewOnClickListener::OnClick is no index");\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+ }\r
}
\ No newline at end of file
return ERRCODE_SUCC;
}
-errcode_t uapi_get_recordfilename(char *date)
+/// @brief 获取日期
+char *uapi_get_CurrentDate(void)
+{
+
+ time_t rawtime;
+ struct tm* timeinfo;
+ time(&rawtime);
+ timeinfo = localtime(&rawtime);
+ char *buffer = (char*)malloc(80); // 动态分配内存
+ if(buffer == NULL)
+ {
+ return NULL; // 内存分配失败
+ }
+
+ // 格式化输出当前时间为 "YYYY-MM-DD HH:MM:SS" 形式
+ sprintf(buffer,"%04d.%02d.%02d\n",
+ timeinfo->tm_year + 1900,
+ timeinfo->tm_mon + 1,
+ timeinfo->tm_mday);
+
+ return buffer;
+}
+
+/// @brief 获取日期
+errcode_t uapi_get_yyyymmddhhmmss_Date(char *date)
{
if(date != NULL)
{
time(&rawtime);
timeinfo = localtime(&rawtime);
- sprintf(date,"/user/res/record/recording/recording%04d%02d%02d%02d%02d%02d.mp3",
+ sprintf(date,"%04d%02d%02d%02d%02d%02d",
timeinfo->tm_year + 1900,
timeinfo->tm_mon + 1,
timeinfo->tm_mday,
return ERRCODE_SUCC;
}
-void ScreenControl(uint8_t turnOnFlag)
+/// @brief 控制屏幕是否常亮
+/// @param turnOnFlag 1:常亮屏幕 0:取消常亮
+void ScreenAlwaysOnCtr(uint8_t turnOnFlag)
{
const power_display_svr_api_t *display_api = power_display_svr_get_api();
if(turnOnFlag)
#include "hal_gpio.h"
#include "soc_osal.h"
#include "platform_core.h"
+#include <errcode.h>
#ifdef __cplusplus
#if __cplusplus
errcode_t uapi_set_time_from_cat1(char* cat1time);
/**获取日期*/
-errcode_t uapi_get_recordfilename(char *date);
+errcode_t uapi_get_yyyymmddhhmmss_Date(char *date);
-void ScreenControl(uint8_t turnOnFlag);
+char *uapi_get_CurrentDate(void);
+
+void ScreenAlwaysOnCtr(uint8_t turnOnFlag);
errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr);
/**