STR_DISTURBNOTE_OFF = 503,\r
STR_4G_NOTE = 504,\r
STR_MUSIC_PLAYER_SOURCE_NOTE = 505,\r
- STR_MAX_ID = 506,\r
+ STR_MUSIC_LIST_IS_EMPTY = 506,\r
+ STR_BT_HEADSET_RESCAN = 507,\r
+ STR_BT_HEADSET_NOFOND = 508,\r
+ STR_MAX_ID = 509,\r
}; // UIResourceTextId\r
\r
enum FontLanguageId : uint8_t {\r
}
if (playerCoefficients == VOLUMEPLAYERS) {
- BtAndLocalVolumeSet(volumeSettingView->sounding);
+ BtAndLocalVolumeSet(volumeSettingView->sounding); /*蓝牙耳机音乐调节*/
ConfigModel::GetInstance()->SetSystemVolume(volumeSettingView->sounding);/*将设置的音量保存到系统音量*/
}
if (playerCoefficients == VOLUMEPHONE || playerCoefficients == VOLUMEPHONENOTIFY) {
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-08-05 15:20:03
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-12 17:59:14
+ * @LastEditTime: 2024-08-13 11:11:47
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
*/
#include "source.h"
#include "audio_manager.h"
#include "audio_base_type.h"
-#include "PlayersPresenter.h"
+#include "player/include/PlayersPresenter.h"
#include "bts_avrcp_controller.h"
#include "PlayersCaseListAdapter.h"
namespace OHOS {
std::string GetMusicPlayPath(void);
bool GetMusicSource();
void SetMusicSource(bool value);
+ void UpdateMusicPlayerList(void);
private:
bool musicSourceFlag{false};//音乐来源标志:false:默认为手表音乐,true:手机音乐
private:
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-12 14:54:57\r
+ * @LastEditTime: 2024-08-13 14:26:21\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h\r
*/\r
\r
static constexpr uint8_t FONT_FORTY_SIZE = 40; // 40:字体大小\r
\r
struct PlayerCaseInfo {\r
- char sliceId[DEC_NUM_256];\r
+ char sliceId[DEC_NUM_256]; /*音乐名*/\r
int16_t index;\r
};\r
\r
private:\r
List<PlayerCaseInfo> *playersCaseList_{nullptr};\r
int GetAllFiles(List<PlayerCaseInfo> *playersCaseList);\r
+ std::list<PlayerCaseInfo> playersList_; //音乐列表\r
+ int GetAllFiles(std::list<PlayerCaseInfo> &playersList);\r
+ void sortPlayersCaseList(std::list<PlayerCaseInfo>* playersCaseList);\r
};\r
\r
// Button OnClick\r
LOUD,\r
};\r
ButtonOnClickListener() {}\r
- ButtonOnClickListener(UIView *view) : view_(view) {}\r
~ButtonOnClickListener();\r
bool OnClick(UIView& view, const ClickEvent& event) override;\r
private:\r
- UIView *view_{nullptr};\r
void PlayerButtonOnClick();\r
void SoundButtonOnClick();\r
void PlayerModelButtonOnClick();\r
void OptionsButtonOnClick();\r
void MusicListButtonOnClick();\r
- VolumeSettingView *volumeSettingView{nullptr};\r
};\r
\r
// 播放器回调\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-12 14:57:23\r
+ * @LastEditTime: 2024-08-13 15:07:08\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
*/\r
\r
void PhoneMusicConnectStatusLabelColor(bool state);\r
void OptionsButtonSetImageStyle(ImageInfo *image);\r
void SetMusicPlayerButtonIsTouchable(bool musicSourceType);\r
+ void UpdateMusicListStatus(void);\r
\r
private:\r
VolumeSettingView *volumeSettingView{nullptr}; // 声音设置\r
UILabelExt *MusciSourceLabel{nullptr}; // 音乐来源标签\r
UILabelExt *PhoneMusicConnectStatusLabel{nullptr}; // 手机音乐连接状态标签\r
\r
+ /* -------------------------------- 音乐列表相关组件 -------------------------------- */\r
UIScrollView *musicListScrollView{nullptr}; // 音乐列表容器视图\r
UILabelExt *musicListTitle{nullptr}; // 音乐列表的标题\r
+ UILabelExt *musicListIsEmptyLabel{nullptr}; // 音乐列表为空的标签\r
+ UIImageView *musicListIsEmptyImage{nullptr}; // 音乐列表为空的图片\r
UIList *musicList{nullptr}; // 音乐列表\r
PlayersCaseListAdapter *musicAdapter{nullptr}; // 音乐列表适配器\r
+ /* -------------------------------------------------------------------------- */\r
\r
JumpView *jumpView{nullptr};\r
PlayersPresenter *playersPresenter{nullptr};\r
}\r
}\r
\r
+ /*获取歌曲数量*/\r
uint16_t PlayersCaseListAdapter::GetCount()\r
{\r
return PlayersListGroup::GetInstance()->GetCase().Size();\r
musicSourceFlag = value;
}
+/*更新音乐列表*/
+void PlayersModel::UpdateMusicPlayerList(void)
+{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersModel::UpdateMusicPlayerList");
+}
}
\ No newline at end of file
#include "bts_avrcp_target.h"\r
#include <PlayerListDelSongView.h>\r
#include "ConfigModel.h"\r
-\r
+#include "ctype.h"\r
namespace OHOS {\r
static PlayerOnDragListener *g_pPlayerOnDragListener = nullptr;\r
static JumpView *g_pJumpView = nullptr;\r
return true;\r
}\r
\r
-//切换到音乐来源视图\r
bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView)\r
{\r
/*\r
BluetoothModel::GetInstance()->SetCurView(showView);\r
}\r
\r
+/* --------------------------------- 音乐列表相关 --------------------------------- */\r
PlayersListGroup::~PlayersListGroup()\r
{\r
if (playersCaseList_ != nullptr) {\r
playersCaseList_->Clear();\r
+ \r
+ delete playersCaseList_;\r
+ playersCaseList_ = nullptr;\r
}\r
- delete playersCaseList_;\r
- playersCaseList_ = nullptr;\r
+ playersList_.clear();\r
}\r
\r
void PlayersListGroup::AddCase(PlayerCaseInfo testCaseInfo)\r
}\r
}\r
playersCaseList_->Clear();\r
+ playersList_.clear();\r
if(!PlayersModel::GetInstance()->CreateMusicPlayDirectory())\r
{\r
return;\r
}\r
- ret = GetAllFiles(playersCaseList_);\r
+ /* -------------------------------- 获取歌曲list -------------------------------- */\r
+ ret = GetAllFiles(playersList_);\r
if (ret == OHOS_FAILURE) {\r
return;\r
}\r
+ /* -------------------------------- 依照字母排序歌曲名 ------------------------------- */\r
+ sortPlayersCaseList(&playersList_); \r
+ // 遍历方式 使用迭代器\r
+ std::list<PlayerCaseInfo>::iterator it;\r
+ struct PlayerCaseInfo playerCaseInfo;\r
+ int i = 0;\r
+ for (it = playersList_.begin(); it!= playersList_.end(); ++it) {\r
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "it musicName = %s,it index = %d",it->sliceId,it->index);\r
+ ret = memcpy_s(playerCaseInfo.sliceId, DEC_NUM_256, it->sliceId, DEC_NUM_256);\r
+ if (ret != OHOS_SUCCESS) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "memcpy_s err %d.", ret);\r
+ return;\r
+ }\r
+ playerCaseInfo.index = i;\r
+ i++;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicName = %s,index = %d",playerCaseInfo.sliceId,playerCaseInfo.index);\r
+ playersCaseList_->PushBack(playerCaseInfo);\r
+ }\r
}\r
\r
List<PlayerCaseInfo>& PlayersListGroup::GetCase()\r
return nullptr;\r
}\r
\r
+// 比较函数,用于按照音乐名的字母顺序比较(不区分大小写)\r
+static bool comparePlayerCaseInfo(const PlayerCaseInfo& a, const PlayerCaseInfo& b) {\r
+ std::string nameA(a.sliceId);\r
+ std::string nameB(b.sliceId);\r
+\r
+ /*循环内部,tolower 函数将当前字符转换为小写*/\r
+ for (size_t i = 0; i < nameA.size() && i < nameB.size(); ++i) {\r
+ if (tolower(nameA[i]) < tolower(nameB[i])) {\r
+ return true;\r
+ } else if (tolower(nameA[i]) > tolower(nameB[i])) {\r
+ return false;\r
+ }\r
+ }\r
+ //如果循环结束而没有返回结果,则意味着当前字符比较没有得出结论,可能是两个字符串的前缀相同。此时,比较它们的长度:\r
+ return nameA.size() < nameB.size(); /*如:hello 与 hello word*/\r
+}\r
+\r
+/*将歌名排序*/\r
+void PlayersListGroup::sortPlayersCaseList(std::list<PlayerCaseInfo>* playersCaseList) {\r
+ playersCaseList->sort(comparePlayerCaseInfo);\r
+}\r
// 读取指定目录(APP_MUSIC_PATH)下的文件,并将文件名等信息填充到提供的列表中\r
int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)\r
{\r
return OHOS_SUCCESS;\r
}\r
\r
+// 读取指定目录(APP_MUSIC_PATH)下的文件,并将文件名等信息填充到提供的列表中\r
+int PlayersListGroup::GetAllFiles(std::list<PlayerCaseInfo> &playersList)\r
+{\r
+ int ret;\r
+ int i{0};\r
+ struct dirent *direntp;\r
+ struct PlayerCaseInfo playerCaseInfo;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles");\r
+ // 打开目录\r
+ DIR *dirp = opendir(APP_MUSIC_PATH);\r
+ // 遍历文件\r
+ if (dirp != NULL) {\r
+ while ((direntp = readdir(dirp)) != NULL) {\r
+ ret = memcpy_s(playerCaseInfo.sliceId, DEC_NUM_256, direntp->d_name, DEC_NUM_256);\r
+ if (ret != OHOS_SUCCESS) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "memcpy_s err %d.", ret);\r
+ closedir(dirp);\r
+ return OHOS_FAILURE;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "song Name %s.", playerCaseInfo.sliceId);\r
+ playerCaseInfo.index = i;\r
+ i++;\r
+ playersList.push_back(playerCaseInfo);\r
+ }\r
+ } else {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::opendir err!");\r
+ return OHOS_FAILURE;\r
+ }\r
+ // 关闭目录\r
+ closedir(dirp);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles end!");\r
+ return OHOS_SUCCESS;\r
+}\r
+\r
ButtonOnClickListener::~ButtonOnClickListener()\r
{\r
- delete volumeSettingView;\r
- volumeSettingView = nullptr;\r
}\r
\r
/*播放或暂停按钮被点击时调用*/\r
musicListScrollView->SetReboundSize(35);\r
musicListScrollView->SetDirection(UIScrollView::VERTICAL);\r
/* -------------------------------------------------------------------------- */\r
- musicListTitle = new UILabelExt();\r
if (musicListTitle == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListTitle new fail");\r
- return nullptr;\r
+ musicListTitle = new UILabelExt();\r
+ if (musicListTitle == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListTitle new fail");\r
+ return nullptr;\r
+ }\r
}\r
musicListTitle->SetPosition(83, 50, 300, 35);\r
musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
musicListTitle->SetRollSpeed(70);\r
musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ /* -------------------------- musicListIsEmptyImage ------------------------- */\r
+ if (musicListIsEmptyImage == nullptr)\r
+ {\r
+ musicListIsEmptyImage = new UIImageView();\r
+ if (musicListIsEmptyImage == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListIsEmptyImage new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ musicListIsEmptyImage->SetPosition(163, 110, 140, 140);\r
+ musicListIsEmptyImage->SetAutoEnable(false);\r
+ musicListIsEmptyImage->SetResizeMode(UIImageView::CENTER);\r
+ if (LoadPlayerImage(musicListIsEmptyImage, PLAYER_PLAYING_GLARY) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListIsEmptyImage LoadPlayerImage fail");\r
+ return nullptr;\r
+ }\r
+ /* ---------------------------- musicListIsEmptyLabel ---------------------------- */\r
+ if (musicListIsEmptyLabel == nullptr)\r
+ {\r
+ musicListIsEmptyLabel = new UILabelExt();\r
+ if (musicListIsEmptyLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListIsEmptyLabel new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ musicListIsEmptyLabel->SetPosition(53, 280, 360, 70);\r
+ musicListIsEmptyLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+ musicListIsEmptyLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ musicListIsEmptyLabel->SetTextId(STR_MUSIC_LIST_IS_EMPTY); // 当前音乐列表为空请通过APP下载添加\r
+ musicListIsEmptyLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ musicListIsEmptyLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
+ musicListIsEmptyLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ musicListIsEmptyLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
/* -------------------------------------------------------------------------- */\r
if (musicAdapter == nullptr)\r
{\r
musicList->SetAdapter(musicAdapter);\r
}\r
musicListScrollView->Add(musicListTitle);\r
+ musicListScrollView->Add(musicListIsEmptyImage);\r
+ musicListScrollView->Add(musicListIsEmptyLabel);\r
musicListScrollView->Add(musicList);\r
musicListGroupView->Add(musicListScrollView);\r
/* -------------------------------------------------------------------------- */\r
+ UpdateMusicListStatus(); // 音乐列表刷新\r
+ /* -------------------------------------------------------------------------- */\r
return musicListGroupView;\r
}\r
\r
/*删除容器上所有组件*/\r
void PlayersView::ClearAll(void)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ClearAll");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::ClearAll");\r
if (group[MAIN_MUSICPLAYER_VIEW] != nullptr)\r
{\r
group[MAIN_MUSICPLAYER_VIEW]->RemoveAll();\r
delete musicListTitle;\r
musicListTitle = nullptr;\r
}\r
+ if (musicListIsEmptyImage != nullptr)\r
+ {\r
+ ImageInfo *image = nullptr;\r
+ musicListIsEmptyImage->SetSrc(image);\r
+ delete musicListIsEmptyImage;\r
+ musicListIsEmptyImage = nullptr;\r
+ ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_PLAYING_GLARY, PLAYER_IAMGES);\r
+ }\r
+ if (musicListIsEmptyLabel != nullptr)\r
+ {\r
+ delete musicListIsEmptyLabel;\r
+ musicListIsEmptyLabel = nullptr;\r
+ }\r
if (musicAdapter != nullptr)\r
{\r
delete musicAdapter;\r
{\r
group[i] = nullptr;\r
}\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ClearAll end");\r
}\r
\r
UIButton *PlayersView::PlayerViewButtonInit(ButtonConfig &buttonconfig)\r
return true;\r
}\r
\r
+ /*创建音乐播放器主视图*/\r
bool PlayersView::CreatePlayerView(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerVIew");\r
/*设置音乐来源标签内容*/\r
void PlayersView::MusicSourceLabelSetText(int textId)\r
{\r
- MusciSourceLabel->SetTextId(textId);\r
- MusciSourceLabel->ForceResetText();\r
+ if (MusciSourceLabel)\r
+ {\r
+ MusciSourceLabel->SetTextId(textId);\r
+ MusciSourceLabel->ForceResetText();\r
+ }\r
}\r
\r
/// @brief 设置手机音乐连接状态标签内容\r
void PlayersView::PhoneMusicConnectStatusLabelSetText(int textId)\r
{\r
- PhoneMusicConnectStatusLabel->SetTextId(textId);\r
- PhoneMusicConnectStatusLabel->Invalidate();\r
+ if (PhoneMusicConnectStatusLabel)\r
+ {\r
+ PhoneMusicConnectStatusLabel->SetTextId(textId);\r
+ PhoneMusicConnectStatusLabel->Invalidate();\r
+ }\r
}\r
\r
/// @brief 设置手机连接状态标签是否可见\r
void PlayersView::PhoneMusicConnectStatusLabelIsSetVisible(bool status)\r
{\r
- PhoneMusicConnectStatusLabel->SetVisible(status);\r
+ if (PhoneMusicConnectStatusLabel)\r
+ {\r
+ PhoneMusicConnectStatusLabel->SetVisible(status);\r
+ }\r
}\r
\r
// 设置手机音乐连接状态标签颜色\r
void PlayersView::PhoneMusicConnectStatusLabelColor(bool state)\r
{\r
- if (state)\r
- {\r
- PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
- }\r
- else\r
+ if (PhoneMusicConnectStatusLabel)\r
{\r
- PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
+ if (state)\r
+ {\r
+ PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
+ }\r
+ else\r
+ {\r
+ PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
+ }\r
}\r
}\r
\r
/*设置音乐列表按钮是否可见*/\r
void PlayersView::MusicListButtonIsSetVisible(bool status)\r
{\r
- music_list_button->SetVisible(status);\r
+ if (music_list_button)\r
+ {\r
+ music_list_button->SetVisible(status);\r
+ }\r
}\r
\r
/// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片\r
void PlayersView::OptionsButtonSetImageStyle(ImageInfo *image)\r
{\r
- musicSourceButton->SetImageSrc(image, image);\r
- musicSourceButton->Invalidate();\r
+ if (musicSourceButton)\r
+ {\r
+ musicSourceButton->SetImageSrc(image, image);\r
+ musicSourceButton->Invalidate();\r
+ }\r
}\r
\r
void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode)\r
{\r
- LoadPlayerButtonImage(playerModelButton, playMode);\r
+ if (playerModelButton)\r
+ {\r
+ LoadPlayerButtonImage(playerModelButton, playMode);\r
+ }\r
}\r
\r
/// @brief 设置音乐播放按钮是否可点击\r
play_or_pause_Button->SetTouchable(touchableState);\r
preMusicButton->SetTouchable(touchableState);\r
nextMusicButton->SetTouchable(touchableState);\r
+ soundButton->SetTouchable(touchableState);\r
playerModelButton->SetTouchable(touchableState); // 如果音乐来源为手机音乐,播放顺序按钮就不可用\r
/* -------------------------------------------------------------------------- */\r
/*暂停音乐*/\r
if (state == UICheckBox::UICheckBoxState::SELECTED)\r
{\r
PlayersModel::GetInstance()->PlayerStop();\r
+ PlayersModel::GetInstance()->ClearActivateAudioInterrupt();\r
}\r
/* -------------------------------------------------------------------------- */\r
PreLoadPlayerModeImageRes();\r
}\r
\r
+ void PlayersView::UpdateMusicListStatus(void)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::UpdateMusicListStatus");\r
+ if (musicAdapter && musicListIsEmptyImage && musicListIsEmptyLabel && musicList)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicNum = %d", musicAdapter->GetCount());\r
+ if (0 == musicAdapter->GetCount()) /*歌曲为空*/\r
+ {\r
+ musicListIsEmptyImage->SetVisible(true);\r
+ musicListIsEmptyLabel->SetVisible(true);\r
+ musicList->SetVisible(false);\r
+ }\r
+ else\r
+ {\r
+ musicListIsEmptyImage->SetVisible(false);\r
+ musicListIsEmptyLabel->SetVisible(false);\r
+ musicList->SetVisible(true);\r
+ }\r
+ }\r
+ }\r
+\r
+ /*刷新播放器界面的组件状态*/\r
void PlayersView::UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdatePlayerView");\r
OptionsButtonSetImageStyle(image);\r
PhoneMusicConnectStatusLabelIsSetVisible(false);\r
MusicListButtonIsSetVisible(true);\r
+\r
MusicSourceLabelSetText(STR_WATCH_MUSIC); /*手表音乐*/\r
SetMusicPlayerButtonIsTouchable(musicSourceType);\r
}\r
{\r
std::string file = PLAYER_IAMGES;\r
ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
- if (image == nullptr)\r
+ if (view == nullptr || image == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view is nullptr or PlayersView::LoadPlayerImage %x fail", resId);\r
return false;\r
}\r
view->SetSrc(image);\r
{\r
std::string file = PLAYER_IAMGES;\r
ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
- if (image == nullptr)\r
+ if (button == nullptr || image == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "button is nullptr or PlayersView::LoadPlayerImage %x fail", resId);\r
return false;\r
}\r
button->SetImageSrc(image, image);\r
std::string file = PLAYER_IAMGES;\r
ImageInfo *image1 = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
ImageInfo *image2 = ImageCacheManager::GetInstance().LoadOneInMultiRes(hlResId, file);\r
- if (image1 == nullptr || image2 == nullptr)\r
+ if (button == nullptr || image1 == nullptr || image2 == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage resId = %x,hlResId = %x fail", resId, hlResId);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "button is nullptr or PlayersView::LoadPlayerImage resId = %x,hlResId = %x fail", resId, hlResId);\r
return false;\r
}\r
button->SetImages(image1, image2);\r
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-12 11:44:04
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-10 10:16:48
+ * @LastEditTime: 2024-08-13 11:06:07
* @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/uiservice/include/ui_service.h
*/
/*
UI_UPDATE_VIBRATION_MODE, //更新震动模式
UI_UPDATE_SILENT_MODE, //更新静音模式
UI_UPDATE_DNOTDISTURB_MODE, //更新勿扰模式
+ UI_UPDATE_MUSIC_PLAYER_LIST,//更新音乐列表
UI_UPDATE_WEATHER_DATA, //天气数据更新
UI_UPDATE_SLEEP_DATA, //更新睡眠数据
#include "rebootandshutdown/include/RebootAndShutdownModel.h"
#include "dnotdisturb/include/DnotDisturbModel.h"
#include "obumessage/include/OBUMessageModel.h"
+#include "player/include/PlayersModel.h"
#include "sleep/include/SleepModel.h"
#include "message/include/MessageModel.h"
#include "aivoice/include/AiVoiceModel.h"
static void HandleUpdateVibrationMode(Request *request);
static void HandleUpdateSilentMode(Request *request);
static void HandleUpdateDontDisturbMode(Request *request);
+static void HandleUpdateMusicPlayerList(Request *request);
static void HandleAiJumpToResultView(Request *request);
static void HandleAiJumpToListeningMessage(Request *request);
static void HandleUpdateUserQuestionStr(Request *request);
{UI_UPDATE_VIBRATION_MODE, HandleUpdateVibrationMode},
{UI_UPDATE_SILENT_MODE, HandleUpdateSilentMode},
{UI_UPDATE_DNOTDISTURB_MODE,HandleUpdateDontDisturbMode},
+ {UI_UPDATE_MUSIC_PLAYER_LIST,HandleUpdateMusicPlayerList},
{UI_AI_JUMP_TO_RESULT_VIEW, HandleAiJumpToResultView},
{UI_UPDATE_USER_QUESTION_STR,HandleUpdateUserQuestionStr},
{UI_UPDATE_AI_ANSWER_STR, HandleUpdateAIAnswerStr},
std::bind(&OHOS::DnotDisturbModel::UpdateDoNotDisturbMode, &OHOS::DnotDisturbModel::GetInstance()));
}
+//处理更新音乐列表
+void HandleUpdateMusicPlayerList(Request *request)
+{
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMusicPlayerList");
+ GraphicService::GetInstance()->PostGraphicEvent(
+ std::bind(&OHOS::PlayersModel::UpdateMusicPlayerList, OHOS::PlayersModel::GetInstance()));
+}
+
//处理Ai回应的用户数据
void HandleAiJumpToResultView(Request *request)
{
STR_DISTURBNOTE_OFF = 503,\r
STR_4G_NOTE = 504,\r
STR_MUSIC_PLAYER_SOURCE_NOTE = 505,\r
- STR_MAX_ID = 506,\r
+ STR_MUSIC_LIST_IS_EMPTY = 506,\r
+ STR_BT_HEADSET_RESCAN = 507,\r
+ STR_BT_HEADSET_NOFOND = 508,\r
+ STR_MAX_ID = 509,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {
STR_IFLYTEK_SPARK$Xunfei Spark\r
STR_DISTURBNOTE_OFF$Do not disturb mode is enabled or disabled\r
STR_4G_NOTE$Note: After opening, the power consumption of the watch will be increased and the standby time will be shortened\r
-STR_MUSIC_PLAYER_SOURCE_NOTE$Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again
\ No newline at end of file
+STR_MUSIC_PLAYER_SOURCE_NOTE$Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again\r
+STR_MUSIC_LIST_IS_EMPTY$The current music list is empty, please download and add via APP\r
+STR_BT_HEADSET_RESCAN$Rescan\r
+STR_BT_HEADSET_NOFOND$No headset Bluetooth device can be found
\ No newline at end of file
STR_IFLYTEK_SPARK$讯飞星火\r
STR_DISTURBNOTE_OFF$勿扰模式已开启是否关闭\r
STR_4G_NOTE$注:开启后,手表功耗会提高,待机时间会缩短\r
-STR_MUSIC_PLAYER_SOURCE_NOTE$请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试
\ No newline at end of file
+STR_MUSIC_PLAYER_SOURCE_NOTE$请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试\r
+STR_MUSIC_LIST_IS_EMPTY$当前音乐列表为空请通过APP下载添加\r
+STR_BT_HEADSET_RESCAN$重新搜索\r
+STR_BT_HEADSET_NOFOND$当前搜索不到耳机蓝牙设备
\ No newline at end of file
<lanstr id="STR_DISTURBNOTE_OFF" value="Do not disturb mode is enabled or disabled"/>
<lanstr id="STR_4G_NOTE" value="Note: After opening, the power consumption of the watch will be increased and the standby time will be shortened"/>
<lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again"/>
+ <lanstr id="STR_MUSIC_LIST_IS_EMPTY" value="The current music list is empty, please download and add via APP"/>
+ <lanstr id="STR_BT_HEADSET_RESCAN" value="Rescan"/>
+ <lanstr id="STR_BT_HEADSET_NOFOND" value="No headset Bluetooth device can be found"/>
</language>
<lanstr id="STR_DISTURBNOTE_OFF" value="勿扰模式已开启是否关闭"/>
<lanstr id="STR_4G_NOTE" value="注:开启后,手表功耗会提高,待机时间会缩短"/>
<lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试"/>
+ <lanstr id="STR_MUSIC_LIST_IS_EMPTY" value="当前音乐列表为空请通过APP下载添加"/>
+ <lanstr id="STR_BT_HEADSET_RESCAN" value="重新搜索"/>
+ <lanstr id="STR_BT_HEADSET_NOFOND" value="当前搜索不到耳机蓝牙设备"/>
</language>
STR_DISTURBNOTE_OFF = 503,\r
STR_4G_NOTE = 504,\r
STR_MUSIC_PLAYER_SOURCE_NOTE = 505,\r
- STR_MAX_ID = 506,\r
+ STR_MUSIC_LIST_IS_EMPTY = 506,\r
+ STR_BT_HEADSET_RESCAN = 507,\r
+ STR_BT_HEADSET_NOFOND = 508,\r
+ STR_MAX_ID = 509,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {