#include <cmsis_os2.h>
#include <service/graphic_service.h>
#include <cstring>
+#include <unistd.h>
+#include <sys/stat.h>
namespace OHOS
{
std::string RecordingModel::recordTempDuration = 0;
static MutexId g_mutex;
- RecordingModel::RecordingModel() {}
+ RecordingModel::RecordingModel()
+ {
+ CreateRecordPlayDirectory(directory.c_str());
+ }
RecordingModel::~RecordingModel() {}
audioInitStatus = value;
}
+ void RecordingModel::ClearRecordingPlayer(void)
+ {
+ RecordingPlayerStop(); // 录音播放器停止
+ ClearActivateAudioInterrupt(); // 清除音频中断
+ }
+
/*
* @brief 初始化音频系统并准备播放器控制器和回调
*/
void RecordingModel::AudioInit(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::AudioInit");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::AudioInit");
/* ---------- 检查一个成员变量 audioInitStatus 是否已经是 true。如果是,这表示音频已经初始化过了。 --------- */
if (audioInitStatus == true)
{
}
}
- /*
- * @brief 录音播放初始化,包括录音文件名,创建资源对象,录音时间和总时长
- */
- int RecordingModel::RecordingPlayerInit(int index)
+ // 点击录音列表中录音播放
+ int RecordingModel::RecordingListOnClickPlay(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::RecordingPlayerInit");
- int32_t ret;
- std::string recordingFileName = fileNames[index];
- if (recordingFileName.c_str() == nullptr)
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::RecordingListOnClickPlay");
+ int ret;
+ int32_t playerState;
+ uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
+ RecordingPlayerView *p_RecordingPlayerView = RecordingPlayerView::GetInstance();
+ if (p_RecordingPlayerView == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "No Recording files!!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_RecordingPlayerView null!");
return OHOS_FAILURE;
- };
- SetRecordingPlayerUri(directory + recordingFileName + ".mp3");
-
- int state = GetRecordingPlayerState();
- if (state != PlayerStates::PLAYER_STATE_ERROR) // 每次setSource前回到idle状态
- {
- ret = PlayerCtr->Reset();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
}
+ SetRecordingPlayerUri(directory + GetCurrentPlayRecordingName() + ".mp3");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uri: %s.", GetRecordingPlayerUri().c_str());
- /* ------------------------- 创建资源对象Resource并进行资源申请。 ------------------------- */
- Resource = std::make_shared<Source>(GetRecordingPlayerUri());
- if (Resource.get() == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "source request failed!");
- return OHOS_FAILURE;
- }
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Player Uri %s", GetRecordingPlayerUri().c_str());
- /* ----------------------- 设置播放器的数据源为Resource,并进行准备操作。 ---------------------- */
- PlayerCtr->SetSource(*Resource);
- PlayerCtr->Prepare();
- /* ------------------------------ 获取播放内容的时长。 ------------------------------ */
- ret = PlayerCtr->GetDuration(DurationTime);
- if (ret != -1)
+ state = p_RecordingPlayerView->GetPlayerButtonState();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "state %d", state);
+ if (state == UICheckBox::UICheckBoxState::UNSELECTED)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDuration:%ld, ret:%d", DurationTime, ret);
+ p_RecordingPlayerView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
+ SetRecordingPlayButtonState(true);
+ /* start play */
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "play");
+ playerState = GetRecordingPlayerState();
+ if (playerState == PlayerStates::PLAYER_PAUSED || playerState == PlayerStates::PLAYER_PLAYBACK_COMPLETE)
+ {
+ ret = PlayerCtr->Reset();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
+ }
+ RecordingPlayerStat(); // 播放
}
- else
+ else if (state == UICheckBox::UICheckBoxState::SELECTED)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Get Duration time fail!");
- return OHOS_FAILURE;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");
+ playerState = GetRecordingPlayerState();
+ if (playerState == PlayerStates::PLAYER_STARTED)
+ {
+ ret = PlayerCtr->Stop(); // 停止
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);
+ ret = PlayerCtr->Reset();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
+ }
+ RecordingPlayerStat();
}
- ConvertMillisecondToTime(DurationTime);
return OHOS_SUCCESS;
}
- /*
- * @brief 退出录音播放界面后清除播放器资源
- */
- void RecordingModel::ClearRecordingPlayer(void)
- {
- if (GetPlayerCtr() != nullptr)
- {
- GetPlayerCtr()->Reset();
- GetPlayerCtr()->Release();
- SetAudioInitStatus(false);
- ClearActivateAudioInterrupt();
- GetPlayerCtr().reset();
- }
- }
-
- /*
- * @brief 播放器状态的控制
- */
+ // 录音播放
int RecordingModel::RecordingPlayerStat()
{
- int ret;
- /* ------------------------------ 设置播放器的回调函数。 ----------------------------- */
- if (GetRecordingPlayerState() != PlayerStates::PLAYER_PREPARED) // 如果录音播放器状态为Prepared状态无需重置回到IDLE状态和setsource,Prepare
+ int32_t ret;
+
+ // 设置回调函数
+ PlayerCtr->SetPlayerCallback(PlayerCallback);
+ // 申请资源
+ Resource = std::make_shared<Source>(Uri, Header);
+ if (Resource.get() == nullptr)
{
- ResetPlayerModuleStatus();
- ResetSourceAndPrepare();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Resource new fail");
+ return OHOS_FAILURE;
}
- PlayerCtr->SetPlayerCallback(PlayerCallback);
- /* ----------------------------- 如果未激活音频中断处理: ----------------------------- */
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Player uri %s.", Uri.c_str());
+ PlayerCtr->SetSource(*Resource);
+ PlayerCtr->Prepare();
+ ret = PlayerCtr->GetDuration(DurationTime);
+ ConvertMillisecondToTime(DurationTime);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%s,%d] GetDuration:%lld,%s, ret:%d", __func__, __LINE__, DurationTime, TotalRecordDuration.c_str(), ret);
+ /* -------------------------------------------------------------------------- */
if (!IsActivateAudioInterrupt)
{
- /* -------------------------------- 申请音频会话ID。 -------------------------------- */
+ // 申请焦点
AudioManager &amIntance = AudioManager::GetInstance();
SessionId = amIntance.MakeSessionId();
if (SessionId == AUDIO_SESSION_ID_NONE)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SessionId invalid");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "session invalid");
return OHOS_FAILURE;
}
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MakeSessionId %d", SessionId);
- /* ----------------------------- 创建并设置播放器中断监听器。 ----------------------------- */
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MakeSessionId %d", SessionId);
p_RecordingPlayerInterruptListener = std::make_shared<RecordingPlayerInterruptListener>();
if (p_RecordingPlayerInterruptListener.get() == nullptr)
{
return OHOS_FAILURE;
}
p_RecordingPlayerInterruptListener->SetOwner(PlayerCtr);
- /*
- struct AudioInterrupt
- {
- AudioStreamType streamType; 标识不同种类的音频流
- AudioSession sessionID; 唯一标识不同的音频会话
- std::shared_ptr<InterruptListener> interruptListener;理音频中断事件的监听器
- };
- */
interrupt = {AUDIO_STREAM_MUSIC, SessionId, p_RecordingPlayerInterruptListener};
- /* --------------------------- 激活音频中断处理,设置超时时间为5秒 --------------------------- */
// 激活音频中断 5s超时
if (amIntance.ActivateAudioInterrupt(interrupt) == INTERRUPT_FAILED)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivateAudioInterrupt faild");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivateAudioInterrupt faild");
return OHOS_FAILURE;
}
IsActivateAudioInterrupt = true;
}
- /* ----------------------------- 设置播放器的音频会话ID。 ---------------------------- */
PlayerCtr->SetAudioSessionId(SessionId);
- /* ---------------------------- 开始播放内容,如果播放失败: ---------------------------- */
+ // 播放
ret = PlayerCtr->Play();
if (ret != 0)
{
PlayerCtr->Stop(); // 暂停
PlayerCtr->Reset(); // 初始化
+ RecordingPlayerView *p_RecordingPlayerView = RecordingPlayerView::GetInstance();
+ if (p_RecordingPlayerView != nullptr)
+ {
+ p_RecordingPlayerView->SetPlayerButtonState(UICheckBox::UNSELECTED);
+ SetCircleProgress(100); // 100:进度100%
+ p_RecordingPlayerView->SetPlayerProgressBarValue(CircleProgress);
+ }
+ else
+ {
+ SetRecordingPlayButtonState(false);
+ SetCircleProgress(100); // 100:进度100%
+ }
AudioManager::GetInstance().DeactivateAudioInterrupt(interrupt);
IsActivateAudioInterrupt = false;
}
return state;
}
- /*
- * @brief 重新设置SetSource和Prepare
- */
- int RecordingModel::ResetSourceAndPrepare(void)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::ResetSourceAndPrepare");
- if (PlayerCtr.get() == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerCtr.get() is nullptr!!");
- return OHOS_FAILURE;
- }
- PlayerCtr->SetSource(*Resource);
- PlayerCtr->Prepare();
-
- return OHOS_SUCCESS;
- }
-
- /*
- * @brief 重置播放器到IDLE状态
- */
- int RecordingModel::ResetPlayerModuleStatus(void)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::ResetPlayerModuleStatus");
- if (PlayerCtr.get() == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerCtr.get() is nullptr!!");
- return OHOS_FAILURE;
- }
- PlayerCtr->Reset();
-
- return OHOS_SUCCESS;
- }
-
/*
* @brief 录音播放器停止
*/
{
int index = GetClickRecordingIndex();
int num = GetRecordingListNum();
+ if (num == 1)
+ {
+ return; // 只有一首录音
+ }
+ RecordingPlayerView *p_RecordingPlayerView = RecordingPlayerView::GetInstance();
+ if (p_RecordingPlayerView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_RecordingPlayerView null!");
+ return;
+ }
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PreviousPlayout before index %d.", index);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NextPlayout before index %d,%s", GetClickRecordingIndex(), GetCurrentPlayRecordingName().c_str());
if ((index > num - 1) || (index < 0))
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "currentIndex err");
return;
}
SetClickRecordingIndex(--index < 0 ? num - 1 : index); // 如果从第一首录音设置上一首,那就跳到最后一首
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PreviousPlayout after index %d.", GetClickRecordingIndex());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NextPlayout after index %d,%s", GetClickRecordingIndex(), GetCurrentPlayRecordingName().c_str());
+ SetRecordingPlayerUri(directory + GetCurrentPlayRecordingName() + ".mp3");
SetCircleProgress(0);
+ int32_t ret;
+ int32_t playerState;
+ PlayerCtr->GetPlayerState(playerState);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerState Value %d.", playerState);
+ if ((playerState == PlayerStates::PLAYER_STARTED) || (playerState == PlayerStates::PLAYER_PLAYBACK_COMPLETE))
+ {
+ /* start play */
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "start play, 160.");
+ ret = PlayerCtr->Stop(); // 停止
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);
+ ret = PlayerCtr->Reset();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
+
+ p_RecordingPlayerView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
+ SetRecordingPlayButtonState(true);
+
+ ret = RecordingPlayerStat(); // 播放
+ if (ret != 0)
+ {
+ /* stop and exit */
+ ret = PlayerCtr->Stop(); // 停止
+ ret = PlayerCtr->Reset();
+ }
+ }
+ else if (playerState == PlayerStates::PLAYER_PAUSED || (playerState == PlayerStates::PLAYER_IDLE))
+ {
+ ret = PlayerCtr->Reset();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
+ }
}
/*
{
int index = GetClickRecordingIndex();
int num = GetRecordingListNum();
+ if (num == 1)
+ {
+ return; // 只有一首录音
+ }
+ RecordingPlayerView *p_RecordingPlayerView = RecordingPlayerView::GetInstance();
+ if (p_RecordingPlayerView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_RecordingPlayerView null!");
+ return;
+ }
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NextPlayout before index %d.", index);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NextPlayout before index %d,%s", GetClickRecordingIndex(), GetCurrentPlayRecordingName().c_str());
if ((index > num - 1) || (index < 0))
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "currentIndex err");
return;
}
SetClickRecordingIndex(++index > num - 1 ? 0 : index); // 如果从最后一首录音设置下一首,那就跳到第一首
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NextPlayout after index %d.", GetClickRecordingIndex());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NextPlayout after index %d,%s", GetClickRecordingIndex(), GetCurrentPlayRecordingName().c_str());
+ SetRecordingPlayerUri(directory + GetCurrentPlayRecordingName() + ".mp3");
SetCircleProgress(0);
+ int32_t ret;
+ int32_t playerState;
+ PlayerCtr->GetPlayerState(playerState);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerState Value %d.", playerState);
+ if ((playerState == PlayerStates::PLAYER_STARTED) || (playerState == PlayerStates::PLAYER_PLAYBACK_COMPLETE))
+ {
+ /* start play */
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "start play, 160.");
+ ret = PlayerCtr->Stop(); // 停止
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);
+ ret = PlayerCtr->Reset();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
+
+ p_RecordingPlayerView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
+ SetRecordingPlayButtonState(true);
+
+ ret = RecordingPlayerStat(); // 播放
+ if (ret != 0)
+ {
+ /* stop and exit */
+ ret = PlayerCtr->Stop(); // 停止
+ ret = PlayerCtr->Reset();
+ }
+ }
+ else if (playerState == PlayerStates::PLAYER_PAUSED || (playerState == PlayerStates::PLAYER_IDLE))
+ {
+ ret = PlayerCtr->Reset();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
+ }
}
/*
return RecordingMp3FileCount;
}
+ // 设置录音数量
void RecordingModel::SetRecordingListNum(int value)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::GetRecordingListNum %d", value);
return yyyymmhhh_date;
}
- RecordingInfo *RecordingModel::GetRecordingInfo()
- {
- return recordingInfo;
- }
-
- // 设置每首录音的信息
+ // 设置每首录音的信息:包含录音文件名,录音时长,录音时间
void RecordingModel::SetRecordingInfo(RecordingInfo &info, int index)
{
recordingInfo[index] = info;
std::string &RecordingModel::Getyyyymmhhh_dateAndTotalRecordDuration(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[RecordingModel] Getyyyymmhhh_dateAndTotalRecordDuration");
- std::string yyyymmhhh_date = RecordingModel::GetInstance()->Getyyyymmhhh_date();
- std::string TotalRecordDuration = RecordingModel::GetInstance()->GetTotalRecordDuration();
+ std::string yyyymmhhh_date = Getyyyymmhhh_date();
+ std::string TotalRecordDuration = recordingInfo[RecordingMp3FileCount - index - 1].recordingDuration;
// 去掉日期字符串末尾的换行符
if (!yyyymmhhh_date.empty() && yyyymmhhh_date.back() == '\n')
{
yyyymmhhh_date.erase(yyyymmhhh_date.length() - 1);
}
RecordingTimeAndDuration = (yyyymmhhh_date + "-" + TotalRecordDuration);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingTimeAndDuration %s\n", RecordingTimeAndDuration.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingTimeAndDuration %s", RecordingTimeAndDuration.c_str());
return RecordingTimeAndDuration;
}
+ void RecordingModel::GetDuration(int64_t &duration)
+ {
+ duration = DurationTime;
+ }
+
+ void RecordingModel::UpdateRecordProcess()
+ {
+ if (RecordingPresenter::GetInstance())
+ {
+ RecordingPresenter::GetInstance()->UpdateRecordProcess();
+ }
+ }
+
+ bool RecordingModel::GetRecordingPlayerViewCreate()
+ {
+ return RecordingPlayerViewIsCreate;
+ }
+ void RecordingModel::SetRecordingPlayerViewCreate(bool state)
+ {
+ RecordingPlayerViewIsCreate = state;
+ }
+
+ /*创建录音播放路径*/
+ bool RecordingModel::CreateRecordPlayDirectory(const char *path)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::CreateRecordPlayDirectory");
+ if (access(path, F_OK) == -1)
+ { // 如果路径不存在
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Directory %s not exist, creating directory", path);
+ if (mkdir(path, 0777) != 0)
+ { // 尝试创建目录,如果创建失败
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Create directory %s failed", path);
+ return false;
+ }
+ }
+ else
+ { // 如果路径存在
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Directory %s already exists", path);
+ }
+ return true;
+ }
+
+ // 获取录音目录
const char *RecordingModel::GetRecordDirectory() const
{
return directory.c_str();
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-03-30 09:14:38\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-27 17:48:39\r
+ * @LastEditTime: 2024-08-28 15:41:29\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPresenter.cpp\r
*/\r
\r
Presenter<RecordingView>::OnStop();\r
p_RecordingModel->ClearRecordingPlayer();\r
StopRecord();\r
-\r
+ RecordingModel::GetInstance()->SetRecordingPlayerViewCreate(false);\r
// ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
}\r
\r
return true;\r
}\r
\r
+ void RecordingPresenter::SetCircleProgress()\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPresenter::SetCircleProgress");\r
+ RecordingPlayerView *p_RecordingPlayerView = RecordingPlayerView::GetInstance();\r
+ if (p_RecordingPlayerView == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ UICircleProgress *playbackProgress = p_RecordingPlayerView->GetPlayerProgressBar();\r
+ if (playbackProgress == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ int32_t playerState;\r
+ playerState = p_RecordingModel->GetRecordingPlayerState();\r
+ state_ = p_RecordingPlayerView->GetPlayerButtonState();\r
+ if ((playerState != PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::SELECTED))\r
+ {\r
+ p_RecordingPlayerView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+ }\r
+ else if ((playerState == PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::UNSELECTED))\r
+ {\r
+ p_RecordingPlayerView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+ }\r
+ if (state_ == UICheckBox::UICheckBoxState::SELECTED)\r
+ {\r
+ p_RecordingModel->GetPlayerCtr()->GetCurrentTime(playerCurrentTime_);\r
+ p_RecordingModel->GetDuration(playerMusicDuration_);\r
+ if (playerMusicDuration_ != 0)\r
+ {\r
+ playerProgressValue_ = (playerCurrentTime_ * 100) / playerMusicDuration_;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerProgressValue_ %lld", playerProgressValue_);\r
+ }\r
+ else\r
+ {\r
+ playerProgressValue_ = 100; // 100: max progress value\r
+ }\r
+ p_RecordingModel->SetCircleProgress(playerProgressValue_);\r
+ p_RecordingPlayerView->SetPlayerProgressBarValue(playerProgressValue_);\r
+ }\r
+ }\r
+\r
+ void RecordingPresenter::UpdateRecordProcess()\r
+ {\r
+ if (view_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ if (view_->GetRecordingViewScrollView(RECORDINGPLAYERVIEW))\r
+ {\r
+ if (view_->GetRecordingViewScrollView(RECORDINGPLAYERVIEW)->IsVisible())\r
+ {\r
+ SetCircleProgress();\r
+ }\r
+ }\r
+ }\r
// 录音列表点击监听\r
bool RecordListViewListener::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_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnClick index:%d\n", index);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnClick index:%d", index);\r
if (index >= RecordingModel::GetInstance()->GetRecordingListNum())\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnClick is no index");\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel GetInstance fail");\r
return false;\r
}\r
- p_RecordingModel->SetClickRecordingIndex(index);\r
- /* ------------------------ 录音播放初始化,包括录音文件名,录音时间和总时长 ------------------------ */\r
- if (p_RecordingModel->RecordingPlayerInit(index) != OHOS_SUCCESS)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_RecordingModel->RecordingPlayerInit fail!!");\r
- return false;\r
- }\r
- /* ---------------------------------- 切换到录音播放界面 ---------------------------------- */\r
+ p_RecordingModel->SetClickRecordingIndex(index); // 标记当前要播放录音的index_\r
RecordingView *p_RecordingView = RecordingView::GetInstance();\r
if (p_RecordingView == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView GetInstance fail");\r
return false;\r
}\r
- p_RecordingView->ChangeView(RECORDINGLISTVIEW, RECORDINGPLAYERVIEW);\r
+ p_RecordingView->ChangeView(RECORDINGLISTVIEW, RECORDINGPLAYERVIEW); // 切换到录音播放界面\r
+ /* ------------------------ 播放录音 ------------------------ */\r
+ if (p_RecordingModel->RecordingListOnClickPlay() != OHOS_SUCCESS)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_RecordingModel->RecordingListOnClickPlay fail!!");\r
+ return false;\r
+ }\r
\r
return true;\r
}\r
p_RecordingPlayerView->GetPlayerProgressBar()->Invalidate();\r
}\r
}\r
- // RecordingModel::GetInstance()->ClearActivateAudioInterrupt();\r
- // usleep(20000);\r
+ // GraphicService::GetInstance()->PostGraphicEvent(\r
+ // std::bind(&OHOS::RecordingModel::ClearActivateAudioInterrupt, OHOS::RecordingModel::GetInstance()));\r
}\r
\r
void RecordingPlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)\r