#define DOUBLES 2
#define APP_RES_PATH "/user/res"
+#ifdef SINGLE_USER_PARTITION
+#define APP_MUSIC_PATH "/user/music/user_music"
+#else
#define APP_MUSIC_PATH "/user/userdata/music"
+#endif
#define APP_VIDEO_PATH "/user/video"
#define APP_DEFAULT_DIAL_PATH "/user/dial/res_dial" /*默认表盘安装路径*/
#define APP_DOWNLOAD_DIAL_PATH "/user/dial/offline_dial" /*表盘市场安装路径*/
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-20 15:11:17
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-10-19 17:39:07
+ * @LastEditTime: 2024-10-21 18:35:53
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp
*/
#include "AppViewIDs.h"
}
else if (viewId == AIVOICE_START_CHAT_BUTTON_VIEW_ID) // 如果点击的是开始对话按钮
{
- PlayersModel::GetInstance()->HandPausePhoneMusci(); // 暂停手机音乐
+ PlayersModel::GetInstance()->HandPausePhoneMusic(); // 暂停手机音乐
+ PlayersModel::GetInstance()->PlayerPause(); // 暂停手机音乐
/*
* 进入对话流程:
* 1.当手表4G网络正常+与app连接正常 -> 通过4G调用大模型
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CancelCurAIChat");
AiVoiceModel::GetInstance().CancelCurAIChat();
- PlayersModel::GetInstance()->HandPausePhoneMusci(); // 暂停手机音乐
+ PlayersModel::GetInstance()->HandPausePhoneMusic(); // 暂停手机音乐
+ PlayersModel::GetInstance()->PlayerPause(); // 暂停手机音乐
}
ChangeViewAndLogicOperator(it->second.first, it->second.second);
return true;
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-08-05 15:20:03
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-10-18 10:55:54
+ * @LastEditTime: 2024-10-21 18:17:23
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
*/
void get_avrcp_ct_get_element_attributes(void);
void set_player_state(bool value);
bool get_player_state();
- bool get_a2dp_sink_connect_state(void);
- void HandPausePhoneMusci(void);
- void HandPlayPhoneMusci(void);
+ bool get_a2dp_sink_playing_state(void);
+ void HandPausePhoneMusic(void);
+ void HandPlayPhoneMusic(void);
// /* -------------------------------------------------------------------------- */
std::unordered_map<uint16_t, std::pair<std::string,std::string>> &getIdToMusicNameMap(void);
std::string getRealMusicNameById(int id);
}\r
/* -------------------------------------------------------------------------- */\r
if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
return false;\r
}\r
}
// 获取手机音乐播放状态
- bool PlayersModel::get_a2dp_sink_connect_state(void)
+ bool PlayersModel::get_a2dp_sink_playing_state(void)
{
bd_addr_t active_bd_addr = a2dp_snk_get_active_device();
int state = a2dp_snk_get_playing_state(&active_bd_addr);
//暂停播放手机音乐
- void PlayersModel::HandPausePhoneMusci(void)
+ void PlayersModel::HandPausePhoneMusic(void)
{
- if (get_avrcp_ct_or_tg_is_connected() && get_a2dp_sink_connect_state())
+ if (get_avrcp_ct_or_tg_is_connected() && get_a2dp_sink_playing_state())
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_PAUSE");
set_phone_music_play_state(AVRCP_KEY_PAUSE); // 控制手机音乐暂停
}
//播放手机音乐
- void PlayersModel::HandPlayPhoneMusci(void)
+ void PlayersModel::HandPlayPhoneMusic(void)
{
- if (get_avrcp_ct_or_tg_is_connected() && get_a2dp_sink_connect_state())
+ if (get_avrcp_ct_or_tg_is_connected() && get_a2dp_sink_playing_state())
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_PLAY");
set_phone_music_play_state(AVRCP_KEY_PLAY); // 控制手机音乐暂停
else //若当前歌曲列表不为空且为本地音乐\r
{\r
if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
} else {\r
return;\r
}\r
if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
return;\r
return;\r
}\r
if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
return;\r
}\r
/* -------------------------------------------------------------------------- */\r
if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
return;\r
}\r
/* -------------------------------------------------------------------------- */\r
if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
return;\r
/*
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-07-18 14:55:27
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-10-09 10:43:18
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-10-21 10:23:23
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownModel.cpp
*/
VIEW_BLOOD_CHECK, // 血氧检测界面
VIEW_HEART_CHECK, // 心率检测界面
VIEW_TRAININGCRAD, // 训练控制卡片
+ VIEW_INCOMING_CALL,// 来电界面
VIEW_TEST, // 产测测试界面
};
RECORDER_RESPONSE_MAX,
};
-#define MAX_RECORDING_NUM 30
+#define MAX_RECORDING_NUM 99
typedef struct
{
char recordingFileName[32]; // 录音文件名
void UpdateRecordProcess();
int getMaxRecordingNumber(void);
void setMaxRecordingNumber(int number);
+ void SetCurView(int16_t viewNum);
+ int GetCurView(void);
+ int GetUsedRecordingTime(void);
+ bool CheckRecordingTimeOut(int time);
+ void CheckRecordingSpaceOut(void);
+ bool GetCheckRecordingSpaceOut(void);
+ void SendCheckRecordingSpaceOutCmd(void);
private:
RecordingModel();
/* -------------------------------------------------------------------------- */
std::vector<std::string> fileNames; // 录音文件名数组
int RecordingMp3FileCount = 0; // 录音MP3数量
+#ifdef SINGLE_USER_PARTITION
+ const std::string directory = "/user/music/recording/"; // 录音目录
+ const std::string recordInfoFile = "/user/music/recording/recordinfo.bin";
+#else
const std::string directory = "/user/userdata/recording/"; // 录音目录
const std::string recordInfoFile = "/user/userdata/recording/recordinfo.bin";
+#endif
std::vector<RecordingListItem> Recordings{0}; // 存放录音信息的动态数组
std::string recordDuration; // 录音时长
/* -------------------------------------------------------------------------- */
int MaxRecordingNumber{0}; //要录取的最大录音编号
/* -------------------------------------------------------------------------- */
bool RecordingPlayerViewIsCreate{false};
+ int curView{0};
+ int usedRecordingTime{0};//已使用的录音总时长
+ bool RecordingSpaceIsOut{false};
};
}
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-10-21 16:29:03
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-10-21 16:40:18
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingModelC.h
+ */
+
+
+#ifndef RECORDING_MODELC_H
+#define RECORDING_MODELC_H
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif
+#endif
+#include <stdint.h>
+ void CheckRecordingSpaceOutC(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif
\ No newline at end of file
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-02-27 09:16:51\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-20 17:08:05\r
+ * @LastEditTime: 2024-10-21 11:20:46\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPresenter.h\r
*/\r
\r
static RecordingPresenter *GetInstance();\r
int convertNumericDateTime(const char *numericDateTime, char *formattedDateTime);\r
void UpdateRecordProcess();\r
+ void StopRecord(void);\r
+ void showWarning(void);\r
\r
private:\r
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
void Notify() override;\r
void SetCircleProgress();\r
void StartRecord(void);\r
- void StopRecord(void);\r
+ // void StopRecord(void);\r
RecordingModel *p_RecordingModel{nullptr};\r
uint8_t state_ = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
int64_t playerCurrentTime_{0};\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-02-27 09:16:50\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-09 17:53:56\r
+ * @LastEditTime: 2024-10-21 10:15:26\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp\r
*/\r
\r
recordList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
// recordList->SetReboundSize(30);\r
// recordList->SetScrollBlankSize(20);\r
- recordList->SetIntercept(true); // 设置是否拦截输入事件。如果被截获,视图在本地处理后不会将输入事件传递给父视图。\r
+ // recordList->SetIntercept(true); // 设置是否拦截输入事件。如果被截获,视图在本地处理后不会将输入事件传递给父视图。\r
recordList->SetAdapter(p_RecordingListAdapter);\r
RecordListScrollView->Add(recordList);\r
return true;\r
#include <sys/stat.h>
#include "ConfigModel.h"
#include "cstring"
+#include "system/include/SystemLogModel.h"
+#include "record/include/RecordingModelC.h"
+#include "uiservice/include/ui_service.h"
+#include "custom_runtime.h"
+#include "vibrator_service.h"
namespace OHOS
{
std::string RecordingModel::recordTempDuration = 0;
+ // 声明定时器变量
+ osTimerId_t g_timer = NULL;
+ static int g_RecordingTimes = {0};
+ static constexpr int32 NUM_TEN = 10;
+ static constexpr int16 ERROR = 0;
+ static constexpr int16 SUCCESS = 1;
+ static constexpr int16 NUM_TIME_MIN = 60;
+ static constexpr int16 NUM_TIME_HOUR = 3600;
+ static constexpr int32 NUM_TIME_DAY = 86400;
+ const int TOTAL_RECORDING_TIME = 20 * 60; // 20 分钟换算为秒
static MutexId g_mutex;
RecordingModel::RecordingModel()
{
return ""; // 返回空字符串表示不是 .mp3 文件
}
+ static int timeToSeconds(const char *timeStr)
+ {
+ int minutes = 0;
+ int seconds = 0;
+ sscanf(timeStr, "%d:%d", &minutes, &seconds);
+ return minutes * 60 + seconds;
+ }
+
/*
* @brief 搜索录音文件
* @param -directory 录音文件目录
strcpy(info[mp3FileCount].recordingFileName, recordingInfo.recordingFileName);
strcpy(info[mp3FileCount].recordingDuration, recordingInfo.recordingDuration);
strcpy(info[mp3FileCount].recordingTime, recordingInfo.recordingTime);
+ usedRecordingTime += timeToSeconds(recordingInfo.recordingDuration);
mp3FileCount++;
}
}
}
RecordingMp3FileCount = 0;
MaxRecordingNumber = 0;
+ usedRecordingTime = 0;
/* -------------------------------------------------------------------------- */
SearchFiles(directory, Recordings, RecordingMp3FileCount);
if (RecordingMp3FileCount != 0)
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingDuration %s", recordingInfo.recordingDuration);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingTime %s", recordingInfo.recordingTime);
}
+
+ /*设置当前哪个子视图是可见的*/
+ void RecordingModel::SetCurView(int16_t viewNum)
+ {
+ curView = viewNum;
+ }
+
+ /*获取当前哪个子视图是可见的*/
+ int RecordingModel::GetCurView(void)
+ {
+ return curView;
+ }
+ int RecordingModel::GetUsedRecordingTime(void)
+ {
+ return usedRecordingTime;
+ }
+
+ // 检查录音时间是否超时
+ bool RecordingModel::CheckRecordingTimeOut(int time)
+ {
+ if (time >= TOTAL_RECORDING_TIME)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ // 检查录音空间是否满了
+ void RecordingModel::CheckRecordingSpaceOut(void)
+ {
+ long long size = SystemLogModel::GetInstance()->getFolderSize(TOTAL_RECORDING_SPACE_PATH);
+ if (size >= TOTAL_RECORDING_SPACE)
+ {
+ RecordingSpaceIsOut = true;
+ }
+ else
+ {
+ RecordingSpaceIsOut = false;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::CheckRecordingSpaceOut:%d", RecordingSpaceIsOut);
+ }
+
+ bool RecordingModel::GetCheckRecordingSpaceOut(void)
+ {
+ return RecordingSpaceIsOut;
+ }
+
+ void RecordingModel::SendCheckRecordingSpaceOutCmd(void)
+ {
+ do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_RECORDING_SPACE_READ, nullptr, 0);
+ }
+
/* ----------------------------------- 定时器 ---------------------------------- */
- // 声明定时器变量
- osTimerId_t g_timer = NULL;
- static int g_RecordingTimes = {0};
- static constexpr int32 NUM_TEN = 10;
- static constexpr int16 ERROR = 0;
- static constexpr int16 SUCCESS = 1;
- static constexpr int16 NUM_TIME_MIN = 60;
- static constexpr int16 NUM_TIME_HOUR = 3600;
- static constexpr int32 NUM_TIME_DAY = 86400;
/*
* @brief 显示录音时长
*/
static void Recording_TimerCallbackProc(int data)
{
- #if 0
+#if 0
g_RecordingTimes++;
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_RecordingTimes:%d\n", g_RecordingTimes);
}
RecordGoingView::GetInstance()->GetRecordingDurationLabel()->SetText(RecordingModel::GetInstance()->DisplayRecordDuration());
- #endif
+#endif
+ int g_TotalUsedTime = RecordingModel::GetInstance()->GetUsedRecordingTime(); // 已用时间
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_RecordingTimes + g_TotalUsedTime = %d", g_RecordingTimes + g_TotalUsedTime);
+ if (RecordingModel::GetInstance()->CheckRecordingTimeOut(g_RecordingTimes + g_TotalUsedTime))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Recording_TimerCallback g_TotalUsedSpace >= TOTAL_RECORDING_TIME");
+ // 录取时长不足,停止录制并弹出警告
+ if (RecordingPresenter::GetInstance())
+ {
+ ScreenTurnOn(3 * 1000); // 亮屏3s
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()))
+ {
+ // 震动提醒
+ ui_api_vibrate_once_func();
+ }
+ RecordingPresenter::GetInstance()->StopRecord(); // 停止录制
+ RecordingPresenter::GetInstance()->showWarning(); // 显示警告
+ }
+ }
+ g_RecordingTimes++;
}
/*
*/
static void Recording_TimerCallback(int data)
{
- g_RecordingTimes++;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_RecordingTimes:%d\n", g_RecordingTimes);
- // GraphicService::GetInstance()->PostGraphicEvent(std::bind(Recording_TimerCallbackProc, data));
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(Recording_TimerCallbackProc, data));
}
/*
}
}
-}
\ No newline at end of file
+}
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+ void CheckRecordingSpaceOutC(void)
+ {
+ OHOS::RecordingModel::GetInstance()->CheckRecordingSpaceOut();
+ }
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
\ No newline at end of file
image->SetSrc(PNG_ATTENTION_IMAGE);
scrollView->Add(image);
}
- /* -------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+#if 0
labelconfig = {
.left = 53,
.top = 222,
}
scrollView->Add(note);
}
+#else
+ if (note == nullptr)
+ {
+ note = new UILabelExt();
+ if (note == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "note can not be nullptr!");
+ return nullptr;
+ }
+ note->SetPosition(53, 222, 360, 70); // 位置大小
+ note->SetStyle(STYLE_TEXT_FONT, 30); // 字体大小
+ note->SetStyle(STYLE_LINE_HEIGHT, 35); // 字体行高
+ note->SetText("录音空间已满");
+ note->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); // 断行模式。
+ note->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ note->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ scrollView->Add(note);
+ }
+#endif
/* -------------------------------------------------------------------------- */
if (goitbutton == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "goitbutton can not be nullptr!");
return nullptr;
}
- goitbutton->SetPosition(93, note->GetY() + note->GetTextHeight() + 48, 280, 90);
+ goitbutton->SetPosition(93, 340, 280, 90);
goitbutton->SetViewId(RECORDINGNUMLIMITBUTTONVIEW);
goitbutton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
goitbutton->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-03-30 09:14:38\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-20 17:14:02\r
+ * @LastEditTime: 2024-10-21 17:01:15\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPresenter.cpp\r
*/\r
\r
// 初始化录音信息\r
p_RecordingModel->InitRecordingListItem();\r
p_RecordingModel->AudioInit();\r
+ p_RecordingModel->SendCheckRecordingSpaceOutCmd(); //进入录音视图后发送指令查看录音空间是否已满\r
Presenter<RecordingView>::OnStart();\r
// ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);\r
}\r
p_RecordingModel->RecordDataWriteToFile(recordingFileName.c_str());\r
RecordingModel::GetInstance()->InitRecordingListItem();\r
\r
+ p_RecordingModel->SendCheckRecordingSpaceOutCmd(); //录音完后发送指令查看录音空间是否已满\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView StopRecord over!!");\r
}\r
\r
+ //弹窗警告\r
+ void RecordingPresenter::showWarning(void)\r
+ {\r
+ if(view_)\r
+ {\r
+ view_->ChangeView(RecordingModel::GetInstance()->GetCurView(), RECORDINGEXCELIMIT);\r
+ }\r
+ }\r
+\r
bool RecordingPresenter::OnClick(UIView &view, const ClickEvent &event)\r
{\r
RecordingView *p_RecordingView = RecordingView::GetInstance();\r
\r
if (strcmp(view.GetViewId(), RECORD_BUTTON) == 0)\r
{\r
- if (p_RecordingModel->GetRecordingListNum() >= MAX_RECORDING_NUM)\r
+ int g_TotalUsedTime = RecordingModel::GetInstance()->GetUsedRecordingTime(); // 已用时间\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_TotalUsedTime:%d", g_TotalUsedTime);\r
+ if (p_RecordingModel->CheckRecordingTimeOut(g_TotalUsedTime) || p_RecordingModel->GetRecordingListNum() >= MAX_RECORDING_NUM ||\r
+ p_RecordingModel->GetCheckRecordingSpaceOut())\r
{\r
view_->ChangeView(RECORDINGVIEW, RECORDINGEXCELIMIT);\r
return true;\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnDrag");\r
UNUSED(view);\r
- if ((event.GetDeltaY() > X_DRAG_OFFSET) && (event.GetDeltaY() > (DOUBLES * MATH_ABS(event.GetDeltaX())))) // 如果滑动的为直线\r
- {\r
- RecordListViewListener::X_DRAG_FLAG = true;\r
- }\r
+ UNUSED(event);\r
+ // if ((event.GetDeltaY() > X_DRAG_OFFSET) && (event.GetDeltaY() > (DOUBLES * MATH_ABS(event.GetDeltaX())))) // 如果滑动的为直线\r
+ // {\r
+ // RecordListViewListener::X_DRAG_FLAG = true;\r
+ // }\r
return true;\r
}\r
\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnDragEnd");\r
std::string viewId = view.GetViewId();\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM && RecordListViewListener::X_DRAG_FLAG)\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
{\r
if (RecordingView::GetInstance() != nullptr && viewId == RECORDLISTSCROLLVIEW)\r
{\r
RecordingView::GetInstance()->ChangeView(RECORDINGLISTVIEW, RECORDINGVIEW);\r
- RecordListViewListener::X_DRAG_FLAG = false;\r
+ // RecordListViewListener::X_DRAG_FLAG = false;\r
}\r
}\r
return true;\r
RecordingViewScrollView[hideView]->SetVisible(false);\r
ClickFunc(showView);\r
RecordingViewScrollView[showView]->SetVisible(true);\r
+ RecordingModel::GetInstance()->SetCurView(showView);\r
Draw();\r
}\r
\r
#include <memory>
#define TOTAL_MUSIC_SPACE (10 * 1024 * 1024) // 10M
-#define TOTAL_MUSIC_SPACE_PATH "/user/musci/usermusci"
+#define TOTAL_MUSIC_SPACE_PATH "/user/music/user_music"
#define TOTAL_RECORDING_SPACE (10 * 1024 * 1024) // 10M
-#define TOTAL_RECORDING_SPACE_PATH "/user/musci/recording"
+#define TOTAL_RECORDING_SPACE_PATH "/user/music/recording"
#define TOTAL_RING_SPACE (2 * 1024 * 1024) // 2M
-#define TOTAL_RING_SPACE_PATH "/user/musci/ring"
+#define TOTAL_RING_SPACE_PATH "/user/music/ring"
#define TOTAL_DIAL_SPACE (24 * 1024 * 1024) // 24M
#define TOTAL_DIAL_SPACE_PATH "/user/dial/offline_dial"
#include "sleep/include/SleepModelC.h"
#include "player/include/PlayersModelC.h"
+#include "record/include/RecordingModelC.h"
#include "mmc5603_hal.h"
case CUSTOM_FILEOPERATE_MSG_TYPE_MUSICNAME_READ:
custom_setUpListCase();
break;
+
+ case CUSTOM_FILEOPERATE_MSG_TYPE_RECORDING_SPACE_READ:
+ CheckRecordingSpaceOutC();
+ break;
default:
PRINT("Unknown CUSTOM_FILE_OPERATE_MSG cmd 0x%02X \r\n", mail.cmd);
break;
"/user/system/ConfigModel.json",
"/user/userdata",
"/user/system/kvstore",
+ "/user/music/user_music",
+ "/user/music/recording",
"/user/dial/custom_dial/", //自定义表盘
"/user/dial/offline_dial/",//离线表盘
};
#define CUSTOM_FILEOPERATE_MSG_TYPE_MUSICNAME_READ 0x0C //读取音乐文件名
+#define CUSTOM_FILEOPERATE_MSG_TYPE_RECORDING_SPACE_READ 0x0D //读取录音空间
+
errcode_t uapi_custom_fileoperate_service_init(void);
errcode_t do_custom_fileoperate_service_check_msg(int cmd, void *params, int paramlen);
using Audio::AudioManager;
#define PLAYER_CONTROL_CMD_LEN 20
#define READ_RETRY_TIME_US 10000
-#define READ_COUNT_MAX 1000
+// #define READ_COUNT_MAX 1000 //原
+#define READ_COUNT_MAX 17000*2 //改过的 20分钟
#define GET_AUDIO_TIME_INTERVAL_TIMES 100
#define MAX_ARGC 5