${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingModel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingVolumeSettingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingNumLimitView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rotate/src/RotateView.cpp
STR_SEDENTARY_REMINDER = 456,\r
STR_SEDENTARY_REMINDER_NOTE = 457,\r
STR_SYSTEM_UPGRADING = 458,\r
- STR_NEWDEVICE_BIND_REMIND_NOTE = 459,\r
- STR_AI_VOICE = 460,\r
- STR_AI_INTELLIGENT_ASSISTANT = 461,\r
- STR_START_CHAT = 462,\r
- STR_BOOT_FAILED = 463,\r
- STR_ENABLE_MOBILE_DATA_FIRST = 464,\r
- STR_ENABLE_BLUETOOTH_FIRST = 465,\r
- STR_LISTENING = 466,\r
- STR_FINISH_SPEAKING = 467,\r
- STR_THINKING = 468,\r
- STR_CANCEL = 469,\r
- STR_CONNECT_TIMEOUT = 470,\r
- STR_PLEASE_RESTART_CHAT = 471,\r
- STR_CONTINUE_CHAT = 472,\r
- STR_AIMODELS_DOUBAO = 473,\r
- STR_AIMODES_WENXINYIYAN = 474,\r
- STR_AIMODES_KIMI = 475,\r
- STR_AIMODES_CHATGPT = 476,\r
- STR_SLIDE_TO_SHUTDOWN = 477,\r
- STR_SLIDE_TO_REBOOT = 478,\r
- STR_AI_FAMILY_MEALS = 479,\r
- STR_CHAT = 480,\r
- STR_PCY4GC_OR_AS = 481,\r
- STR_API_KEYS = 482,\r
- STR_PGTTAF = 483,\r
- STR_DAFBS = 484,\r
- STR_OPENAI_API_KEYS = 485,\r
- STR_KHBB = 486,\r
- STR_GTAS = 487,\r
- STR_DYWTDAK = 488,\r
- STR_CONNECTING = 489,\r
- STR_CONNECTION_FAIL = 490,\r
- STR_PTALORTM = 491,\r
- STR_MOTION_DETECTION_WALK_NOTE = 492,\r
- STR_MOTION_DETECTION_RUN_NOTE = 493,\r
- STR_MOTION_DETECTION_RIDE_NOTE = 494,\r
- STR_MOTION_DETECTION_ROWING_NOTE = 495,\r
- STR_MOTION_DETECTION_ELLIPTICAL_NOTE = 496,\r
- STR_PE4GC = 497,\r
- STR_OBU_MESSAGE = 498,\r
- STR_DELETE = 499,\r
- STR_CHARGE = 500,\r
- STR_CHARGE_NOTE = 501,\r
- STR_STEP_FREQUENCY = 502,\r
- STR_STEP_LENGTH = 503,\r
- STR_AVG_PACE = 504,\r
- STR_TONGYI_QIANWEN = 505,\r
- STR_IFLYTEK_SPARK = 506,\r
- STR_DISTURBNOTE_OFF = 507,\r
- STR_4G_NOTE = 508,\r
- STR_MUSIC_PLAYER_SOURCE_NOTE = 509,\r
- STR_MUSIC_LIST_IS_EMPTY = 510,\r
- STR_BT_HEADSET_RESCAN = 511,\r
- STR_BT_HEADSET_NOFOND = 512,\r
- STR_SCHEDULE = 513,\r
- STR_SCHEDULE_TITLE = 514,\r
- STR_SCHEDULE_NO_DATA = 515,\r
- STR_SCHEDULE_NO_DATA_PROMPT = 516,\r
- STR_NO_PAIRED_DEV = 517,\r
- STR_IGNORE = 518,\r
- STR_START = 519,\r
- STR_ARC_SCALE_LIST_DISPLAY = 520,\r
- STR_COUNT_DOWN = 521,\r
- STR_CUSTOM_TIME = 522,\r
- STR_QUICK_START = 523,\r
- STR_1_MIN = 524,\r
- STR_5_MIN = 525,\r
- STR_10_MIN = 526,\r
- STR_30_MIN = 527,\r
- STR_SET_COUNT_DOWN_NOTE = 528,\r
- STR_COUNTDOWN_ENDS = 529,\r
- STR_MAXIMUM_TIME_REACH_NOTE = 530,\r
- STR_STOPWATCH_STOP_NOTE = 531,\r
- STR_TMCHBR = 532,\r
- STR_SCHEDULE_TOPIC = 533,\r
- STR_SCHEDULE_TIME = 534,\r
- STR_SCHEDULE_NOTES = 535,\r
- STR_SCHEDULE_DELETE_PROMPT = 536,\r
- STR_HANG_UP_OR_ANSWER = 537,\r
- STR_WATCH_CALL = 538,\r
- STR_PHONE_CALL = 539,\r
- STR_STEPS_OF_THE_DAY = 540,\r
- STR_MILEAGE = 541,\r
- STR_FAT_BURNING_TIME = 542,\r
- STR_NUMBER_OF_STANDS = 543,\r
- STR_CONSUME_CALORIES = 544,\r
- STR_GOAL_HINT = 545,\r
- STR_SLEEPMODE = 546,\r
- STR_SLEEP_MODE_PROMPT_ON = 547,\r
- STR_LOW_POWER_NOTIF_1 = 548,\r
- STR_LOW_POWER_NOTIF_2 = 549,\r
- STR_MAX_ID = 550,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE1 = 459,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE2 = 460,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE3 = 461,\r
+ STR_AI_VOICE = 462,\r
+ STR_AI_INTELLIGENT_ASSISTANT = 463,\r
+ STR_START_CHAT = 464,\r
+ STR_BOOT_FAILED = 465,\r
+ STR_ENABLE_MOBILE_DATA_FIRST = 466,\r
+ STR_ENABLE_BLUETOOTH_FIRST = 467,\r
+ STR_LISTENING = 468,\r
+ STR_FINISH_SPEAKING = 469,\r
+ STR_THINKING = 470,\r
+ STR_CANCEL = 471,\r
+ STR_CONNECT_TIMEOUT = 472,\r
+ STR_PLEASE_RESTART_CHAT = 473,\r
+ STR_CONTINUE_CHAT = 474,\r
+ STR_AIMODELS_DOUBAO = 475,\r
+ STR_AIMODES_WENXINYIYAN = 476,\r
+ STR_AIMODES_KIMI = 477,\r
+ STR_AIMODES_CHATGPT = 478,\r
+ STR_SLIDE_TO_SHUTDOWN = 479,\r
+ STR_SLIDE_TO_REBOOT = 480,\r
+ STR_AI_FAMILY_MEALS = 481,\r
+ STR_CHAT = 482,\r
+ STR_PCY4GC_OR_AS = 483,\r
+ STR_API_KEYS = 484,\r
+ STR_PGTTAF = 485,\r
+ STR_DAFBS = 486,\r
+ STR_OPENAI_API_KEYS = 487,\r
+ STR_KHBB = 488,\r
+ STR_GTAS = 489,\r
+ STR_DYWTDAK = 490,\r
+ STR_CONNECTING = 491,\r
+ STR_CONNECTION_FAIL = 492,\r
+ STR_PTALORTM = 493,\r
+ STR_MOTION_DETECTION_WALK_NOTE = 494,\r
+ STR_MOTION_DETECTION_RUN_NOTE = 495,\r
+ STR_MOTION_DETECTION_RIDE_NOTE = 496,\r
+ STR_MOTION_DETECTION_ROWING_NOTE = 497,\r
+ STR_MOTION_DETECTION_ELLIPTICAL_NOTE = 498,\r
+ STR_PE4GC = 499,\r
+ STR_OBU_MESSAGE = 500,\r
+ STR_DELETE = 501,\r
+ STR_CHARGE = 502,\r
+ STR_CHARGE_NOTE = 503,\r
+ STR_STEP_FREQUENCY = 504,\r
+ STR_STEP_LENGTH = 505,\r
+ STR_AVG_PACE = 506,\r
+ STR_TONGYI_QIANWEN = 507,\r
+ STR_IFLYTEK_SPARK = 508,\r
+ STR_DISTURBNOTE_OFF = 509,\r
+ STR_4G_NOTE = 510,\r
+ STR_MUSIC_PLAYER_SOURCE_NOTE = 511,\r
+ STR_MUSIC_LIST_IS_EMPTY = 512,\r
+ STR_BT_HEADSET_RESCAN = 513,\r
+ STR_BT_HEADSET_NOFOND = 514,\r
+ STR_SCHEDULE = 515,\r
+ STR_SCHEDULE_TITLE = 516,\r
+ STR_SCHEDULE_NO_DATA = 517,\r
+ STR_SCHEDULE_NO_DATA_PROMPT = 518,\r
+ STR_NO_PAIRED_DEV = 519,\r
+ STR_IGNORE = 520,\r
+ STR_START = 521,\r
+ STR_ARC_SCALE_LIST_DISPLAY = 522,\r
+ STR_COUNT_DOWN = 523,\r
+ STR_CUSTOM_TIME = 524,\r
+ STR_QUICK_START = 525,\r
+ STR_1_MIN = 526,\r
+ STR_5_MIN = 527,\r
+ STR_10_MIN = 528,\r
+ STR_30_MIN = 529,\r
+ STR_SET_COUNT_DOWN_NOTE = 530,\r
+ STR_COUNTDOWN_ENDS = 531,\r
+ STR_MAXIMUM_TIME_REACH_NOTE = 532,\r
+ STR_STOPWATCH_STOP_NOTE = 533,\r
+ STR_TMCHBR = 534,\r
+ STR_SCHEDULE_TOPIC = 535,\r
+ STR_SCHEDULE_TIME = 536,\r
+ STR_SCHEDULE_NOTES = 537,\r
+ STR_SCHEDULE_DELETE_PROMPT = 538,\r
+ STR_HANG_UP_OR_ANSWER = 539,\r
+ STR_WATCH_CALL = 540,\r
+ STR_PHONE_CALL = 541,\r
+ STR_STEPS_OF_THE_DAY = 542,\r
+ STR_MILEAGE = 543,\r
+ STR_FAT_BURNING_TIME = 544,\r
+ STR_NUMBER_OF_STANDS = 545,\r
+ STR_CONSUME_CALORIES = 546,\r
+ STR_GOAL_HINT = 547,\r
+ STR_SLEEPMODE = 548,\r
+ STR_SLEEP_MODE_PROMPT_ON = 549,\r
+ STR_LOW_POWER_NOTIF_1 = 550,\r
+ STR_LOW_POWER_NOTIF_2 = 551,\r
+ STR_MAX_ID = 552,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {
#include "custom_runtime.h"\r
#include "uiservice/include/ui_service.h"\r
#include "power_display_service.h"\r
-#include "record/include/RecordingModel.h"\r
#include <NativeAbility.h>\r
#include "AppViewIDs.h"\r
#include "player/include/PlayersView.h"\r
+#include "record/include/RecordingPlayerView.h"\r
#ifdef __cplusplus\r
extern "C"\r
{\r
SendMsgToUIService(UI_UPDATE_PLAYERPROCESS, 0, nullptr, 0);\r
}\r
}\r
- else if(OHOS::RecordingModel::GetInstance()->GetRecordingPlayerViewCreate())\r
+ else if(OHOS::RecordingPlayerView::GetInstance())\r
{\r
- SendMsgToUIService(UI_UPDATE_RECORDPROCESS, 0, nullptr, 0);\r
+ OHOS::UICheckBox::UICheckBoxState state = OHOS::RecordingPlayerView::GetInstance()->GetPlayerButtonState();\r
+ if(state == OHOS::UICheckBox::UICheckBoxState::SELECTED)\r
+ {\r
+ SendMsgToUIService(UI_UPDATE_RECORDPROCESS, 0, nullptr, 0);\r
+ }\r
}\r
}\r
\r
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-03-27 10:47:46
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-31 16:40:57
+ * @LastEditTime: 2024-08-31 18:27:22
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/findphone/src/FindPhoneView.cpp
*/
#include "findphone/include/FindPhoneView.h"
FindPhoneView::~FindPhoneView()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FindPhoneView::~FindPhoneView");
- ClearAll();
g_pFindPhoneView = nullptr;
}
{
if (viewInitStatus == true)
{
+ // UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+ // UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+ // FreeImageInfoArray(FindPhonePathsArray, FIND_PONE_IMAGE_SRC, FINDPHONE_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
+
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
if (FindPhoneGroupView != nullptr)
{
FindPhoneGroupView->RemoveAll();
- if (FindPhoneTitleLabel == nullptr)
+ if (FindPhoneTitleLabel != nullptr)
{
delete FindPhoneTitleLabel;
FindPhoneTitleLabel = nullptr;
}
-
if (FindPhoneImageView != nullptr)
{
delete FindPhoneImageView;
FindPhoneImageView = nullptr;
}
-
if (FindPhoneImageAnimator != nullptr)
{
FindPhoneImageAnimator->Stop();
// FreeImagePathsArray(FindPhonePathsArray, FINDPHONE_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
FreeImageInfoArray(FindPhonePathsArray, FIND_PONE_IMAGE_SRC, FINDPHONE_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
}
-
if (FindPhoneLabel != nullptr)
{
delete FindPhoneLabel;
FindPhoneLabel = nullptr;
}
-
if (FindPhoneLabelButton != nullptr)
{
delete FindPhoneLabelButton;
FindPhoneLabelButton = nullptr;
}
-
delete FindPhoneGroupView;
FindPhoneGroupView = nullptr;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FindPhoneView::ClearAll over!!");
}
}
}
}
FindPhoneGroupView->SetPosition(0, 0, 466, 466);
FindPhoneGroupView->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ FindPhoneGroupView->SetTouchable(true);
+ FindPhoneGroupView->SetDraggable(true);
+ FindPhoneGroupView->SetOnDragListener(presenter_);
/* --------------------------- FindPhoneTitleLabel -------------------------- */
FindPhoneTitleLabel = new UILabelExt();
if (FindPhoneTitleLabel == nullptr)
FindPhoneLabelButton->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
FindPhoneLabelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
FindPhoneLabelButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
- UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(FindPhonePresenter::GetInstance());
- FindPhoneLabelButton->SetOnClickListener(clickListener);
+ FindPhoneLabelButton->SetOnClickListener(presenter_);
/* ----------------------------------- Add ---------------------------------- */
FindPhoneGroupView->Add(FindPhoneTitleLabel);
FindPhoneGroupView->Add(FindPhoneImageView);
FindPhoneGroupView->Add(FindPhoneLabel);
FindPhoneGroupView->Add(FindPhoneLabelButton);
+ container_->Add(FindPhoneGroupView);
}
viewInitStatus = true;
}
}
FindPhoneGroupView->SetPosition(0, 0, 466, 466);
FindPhoneGroupView->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ FindPhoneGroupView->SetTouchable(true);
+ FindPhoneGroupView->SetDraggable(true);
+ FindPhoneGroupView->SetOnDragListener(presenter_);
/* --------------------------- FindPhoneTitleLabel -------------------------- */
FindPhoneTitleLabel = new UILabelExt();
if (FindPhoneTitleLabel == nullptr)
FindPhoneImageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
FindPhoneImageAnimator->SetImageAnimatorSrc(FindPhoneImageInfo, FINDPHONE_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, FINDPHONE_IMAGE_ANIMATOR_VIEW_TIMEOFUPDATE);
FindPhoneImageAnimator->SetRepeat(true);
- FindPhoneImageAnimator->Start();
}
/* ----------------------------- FindPhoneLabel ----------------------------- */
FindPhoneLabel = new UILabelExt();
FindPhoneLabelButton->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
FindPhoneLabelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
FindPhoneLabelButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
- UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(FindPhonePresenter::GetInstance());
- FindPhoneLabelButton->SetOnClickListener(clickListener);
+ FindPhoneLabelButton->SetOnClickListener(presenter_);
/* ----------------------------------- Add ---------------------------------- */
FindPhoneGroupView->Add(FindPhoneTitleLabel);
FindPhoneGroupView->Add(FindPhoneImageAnimator);
FindPhoneGroupView->Add(FindPhoneLabel);
FindPhoneGroupView->Add(FindPhoneLabelButton);
+ container_->Add(FindPhoneGroupView);
}
viewInitStatus = true;
}
void FindPhoneView::OnStart()
{
View<FindPhonePresenter>::OnStart();
+ // if (FindPhoneModel::GetInstance().GetBlueToothConnectedState() == true) // 判断蓝牙是否是连接状态
+ // {
+ // FindPhoneViewInit_BlueToothConnected();
+ // senfindphoneSend(FINDPHONE_START);
+ // }
+ // else
+ // {
+ // FindPhoneViewInit_BlueToothDisConnected();
+ // }
+ SetContainerView(new UIViewGroup());
+ if (GetContainer() == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail!!");
+ return;
+ }
+ container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
- if (FindPhoneModel::GetInstance().GetBlueToothConnectedState() == true) // 判断蓝牙是否是连接状态
+ if (!viewInitStatus)
{
FindPhoneViewInit_BlueToothConnected();
senfindphoneSend(FINDPHONE_START);
+ viewInitStatus = true;
}
- else
- {
- FindPhoneViewInit_BlueToothDisConnected();
- }
-
- FindPhoneGroupView->SetTouchable(true);
- FindPhoneGroupView->SetDraggable(true);
- UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(FindPhonePresenter::GetInstance());
- FindPhoneGroupView->SetOnDragListener(dragListener);
-
- // 增加按键监听
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::FindPhonePresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+ RootView::GetInstance()->SetOnKeyActListener(presenter_);
}
void FindPhoneView::OnSetUpView()
{
View<FindPhonePresenter>::OnSetUpView();
- RootView::GetInstance()->Add(FindPhoneGroupView);
- container_ = FindPhoneGroupView;
+ if (FindPhoneImageAnimator)
+ {
+ FindPhoneImageAnimator->Start();
+ }
Draw();
}
void FindPhoneView::OnStop()
{
View<FindPhonePresenter>::OnStop();
- RootView::GetInstance()->RemoveAll();
RootView::GetInstance()->ClearOnKeyActListener();
+ ClearAll();
return;
}
}
\ No newline at end of file
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-03-30 09:14:38\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-26 09:44:39\r
+ * @LastEditTime: 2024-08-31 20:51:23\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeleteView.h\r
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r
*/\r
UILabelExt *DeleteNameLabel{nullptr};\r
UIButton *RECORD_DELETE_ON_BUTTON{nullptr}; // 是否删除录音:是\r
UIButton *RECORD_DELETE_OFF_BUTTON{nullptr}; // 是否删除录音:否\r
+ std::string mergefileName;\r
};\r
} // namespace OHOS\r
#endif
\ No newline at end of file
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-05 15:20:03
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-31 20:19:31
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingListAdapter.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
#ifndef RECORDING_LIST_ADAPTER_H
#define RECORDING_LIST_ADAPTER_H
typedef struct
{
int index;
- const char *recordId; // 录音编号
+ std::string recordId; // 录音名
const char *recordTotalTime; // 录音总时长
const char *recordTime; // 录音时间
} RecordingListItem;
RECORDER_RESPONSE_MAX,
};
-#define MAX_RECORDING_NUM 20
+#define MAX_RECORDING_NUM 30
typedef struct
{
char recordingFileName[32]; // 录音文件名
void InitRecordingListItem();
std::vector<RecordingListItem> &GetRecordinglistItems();
std::string GetCurrentPlayRecordingName(void);
+ std::string GetCurrentPlayRecordingName(std::string name);
int GetRecordingListNum();
void SetRecordingListNum(int value);
std::string GetCleanFileName(const std::string &filePath);
- void SearchFiles(const std::string &directory, std::vector<std::string> &fileNames, int &mp3FileCount);
+ void SearchFiles(const std::string &directory, std::vector<RecordingListItem> &Recordings, int &mp3FileCount);
void SetClickRecordingIndex(int index_);
int GetClickRecordingIndex(void);
std::vector<std::string> &GetFileNames(void);
void SetTotalRecordDuration(std::string time);
std::string GetTotalRecordDuration(void) const;
- void SetRecordingInfo(RecordingInfo &info, int index);
- void UpdateRecordingInfo(int index);
+ void UpdateRecordingInfo();
void SetRecordFileName(std::string name);
std::string GetRecordFileName(void);
std::string Getyyyymmhhh_date(void);
bool CreateRecordPlayDirectory(const char *path);
const char *GetRecordDirectory() const;
static std::string recordTempDuration; // 录音时长
- int RecordDataWriteToFile();
- int RecordDataReadToFile();
+ int RecordDataWriteToFile(std::string name);
+ int RecordDataReadToFile(std::string name);
+ void printfRecordData();
void GetDuration(int64_t &duration);
void UpdateRecordProcess();
- bool GetRecordingPlayerViewCreate();
- void SetRecordingPlayerViewCreate(bool state);
+ int getMaxRecordingNumber(void);
+ void setMaxRecordingNumber(int number);
private:
RecordingModel();
bool isStopAndReset{false}; // 判断是否是停止还是重置状态
bool audioInitStatus{false};
/* -------------------------------------------------------------------------- */
- std::vector<std::string> fileNames; // 文件名数组
+ std::vector<std::string> fileNames; // 录音文件名数组
int RecordingMp3FileCount = 0; // 录音MP3数量
const std::string directory = "/user/userdata/recording/"; // 录音目录
const std::string recordInfoFile = "/user/userdata/recording/recordinfo.bin";
char *yyyymmhhh_date; // 保存年月日时间
std::string TotalRecordDuration; // 保存录音的总时长
std::string RecordingTimeAndDuration; // 录音日期和录音时长
- RecordingInfo recordingInfo[MAX_RECORDING_NUM] = {0};
+ RecordingInfo info[MAX_RECORDING_NUM] = {0};
+ RecordingInfo recordingInfo{0};
+ std::string mergefileName;
+ int MaxRecordingNumber{0}; //要录取的最大录音编号
/* -------------------------------------------------------------------------- */
bool RecordingPlayerViewIsCreate{false};
};
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-30 15:38:55
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-30 16:08:59
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingNumLimitView.h
+ */
+#ifndef _RECORDING_NUM_LIMIT_VIEW_
+#define _RECORDING_NUM_LIMIT_VIEW_
+#include "BaseView.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+
+namespace OHOS
+{
+ static constexpr const char *RECORDINGNUMLIMITVIEW = "RecordingNumLimitView";
+ static constexpr const char *RECORDINGNUMLIMITBUTTONVIEW = "RecordingNumLimitButtonView";
+ class RecordingNumLimitView
+ {
+ public:
+ struct LabelConfig
+ {
+ int16_t left;
+ int16_t top;
+ int16_t width;
+ int16_t height;
+ int16_t fontSize; // 字体大小
+ int16_t lineHeigh; // 行高
+ int16_t textId; // 文本id
+ uint8_t lineBreakMode; // 断行模式。
+ };
+ RecordingNumLimitView();
+ ~RecordingNumLimitView();
+ UIScrollView *RecordingNumLimitViewInit(void);
+
+ private:
+ UILabelExt *CreateRecordingNumLimitLabel(LabelConfig &labelconfig); // 设置标签
+ void ClearAll(void);
+ UIScrollView *scrollView{nullptr};
+ UILabelExt *title{nullptr};
+ UIImageView *image{nullptr};
+ UILabelExt *note{nullptr};
+ UILabelExt *goitlabel{nullptr};
+ UIButton *goitbutton{nullptr};
+ };
+
+}
+#endif
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-03-30 09:14:38\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-28 14:45:22\r
+ * @LastEditTime: 2024-08-30 16:16:24\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingView.h\r
*/\r
#ifndef RECORD_VIEW_H\r
#include "record/include/RecordingPlayerView.h"\r
#include "record/include/RecordDeleteView.h"\r
#include "record/include/RecordingVolumeSettingView.h"\r
+#include "record/include/RecordingNumLimitView.h"\r
\r
namespace OHOS\r
{\r
RECORDINGPLAYERVIEW, // 录音播放视图(subView)\r
RECORDINGDELETEVIEW, // 录音删除视图(subView)\r
RECORDINGVOLUMESETTINGVIEW, // 声音设置视图(subView)\r
+ RECORDINGEXCELIMIT, // 录音数量超出限制(subView)\r
MAX_RECORDINGVIEWID,\r
} RECORDINGVIEWID;\r
\r
bool ChangeRecordingPlayerView(int16_t thisView); // 切换到“录音播放”视图\r
bool ChangeRecordDeleteView(int16_t thisView); // 切换到“录音删除”视图\r
bool ChangeRecordVolumeSettingView(int16_t thisView); // 切换到“声音设置”视图\r
+ bool ChangeRecordNumLimitView(int16_t thisView); // 切换到“录音超出限制”视图\r
bool ClickFunc(int16_t interface);\r
void ChangeView(int16_t hideView, int16_t showView);\r
- int GetCurrentViewType(UIScrollView * view);\r
+ int GetCurrentViewType(UIScrollView *view);\r
UIScrollView *GetRecordingViewScrollView(int index);\r
\r
public:\r
RecordingPlayerView *p_RecordingPlayerView{nullptr};\r
RecordDeleteView *p_RecordDeleteView{nullptr};\r
RecordingVolumeSettingView *p_RecordingVolumeSettingView{nullptr};\r
+ RecordingNumLimitView *p_RecordingNumLimitView{nullptr};\r
\r
private:\r
bool RecordingScrollViewInit(void);\r
#include "record/include/RecordDeleteView.h"\r
#include "record/include/RecordingPresenter.h"\r
+#include "record/include/RecordingModel.h"\r
#include "wearable_log.h"\r
#include "ui_resource_string.h"\r
+#include "ConfigModel.h"\r
namespace OHOS\r
{\r
static RecordDeleteView *g_pRecordDeleteView{nullptr};\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordDeleteViewInit::SetRecordDeleteName");\r
if (DeleteNameLabel)\r
{\r
- DeleteNameLabel->SetText(name);\r
+ mergefileName = RecordingModel::GetInstance()->GetCurrentPlayRecordingName(name);\r
+ DeleteNameLabel->SetText(mergefileName.c_str());\r
DeleteNameLabel->Invalidate();\r
}\r
}\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-02-27 09:16:50\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-27 14:38:37\r
+ * @LastEditTime: 2024-09-02 09:57:10\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp\r
*/\r
\r
recordList->SetDragACCLevel(5);\r
recordList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
recordList->SetReboundSize(30);\r
- recordList->SetScrollBlankSize(30);\r
+ // recordList->SetScrollBlankSize(30);\r
recordList->SetIntercept(true); // 设置是否拦截输入事件。如果被截获,视图在本地处理后不会将输入事件传递给父视图。\r
recordList->SetAdapter(p_RecordingListAdapter);\r
RecordListScrollView->Add(recordList);\r
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-05 15:20:03
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-31 09:26:00
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingListAdapter.cpp
+ */
#include "record/include/RecordingListAdapter.h"
#include "record/include/RecordingListitemView.h"
namespace OHOS
if (inView == nullptr)
{
item = new RecordingListitemView();
- }
+ }
else
{
item = static_cast<RecordingListitemView *>(inView);
}
item->SetItemInfo(itemData);
item->SetOnClickListener(itemClickListener);
+ item->SetViewIndex(index);
return item;
}
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-03-02 20:10:18
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-24 17:40:14
+ * @LastEditTime: 2024-08-31 20:19:43
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingListitemView.cpp
*/
#include "record/include/RecordingListitemView.h"
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingListitemView::SetItemInfo");
m_ItemInfo = itemInfo;
- m_recordId.SetText(itemInfo.recordId);
+ m_recordId.SetText(itemInfo.recordId.c_str());
m_recordTotalTime.SetText(itemInfo.recordTotalTime);
m_recordTime.SetText(itemInfo.recordTime);
}
int RecordingListitemView::GetRecordingListIndex()
{
- return m_ItemInfo.index;
+ // return m_ItemInfo.index;
+ return GetViewIndex();
}
}
\ No newline at end of file
#include <cstring>
#include <unistd.h>
#include <sys/stat.h>
+#include "ConfigModel.h"
namespace OHOS
{
std::string RecordingModel::recordTempDuration = 0;
* @param -mp3FileCount 录音文件数量
* @return void
*/
- void RecordingModel::SearchFiles(const std::string &directory, std::vector<std::string> &fileNames, int &mp3FileCount)
+ void RecordingModel::SearchFiles(const std::string &directory, std::vector<RecordingListItem> &Recordings, int &mp3FileCount)
{
DIR *dir;
struct dirent *ent;
std::string cleanFileName = GetCleanFileName(filePath);
if (!cleanFileName.empty())
{
+ RecordDataReadToFile(cleanFileName.c_str());
+ strcpy(info[mp3FileCount].recordingFileName, recordingInfo.recordingFileName);
+ strcpy(info[mp3FileCount].recordingDuration, recordingInfo.recordingDuration);
+ strcpy(info[mp3FileCount].recordingTime, recordingInfo.recordingTime);
mp3FileCount++;
- fileNames.push_back(cleanFileName);
}
}
else if (ent->d_type == DT_DIR) // 目录
{
std::string subDirectory = directory + fileName + "/";
- SearchFiles(subDirectory, fileNames, mp3FileCount); // 递归搜索子目录
+ SearchFiles(subDirectory, Recordings, mp3FileCount); // 递归搜索子目录
}
}
}
void RecordingModel::InitRecordingListItem(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingModel::InitRecordingListItem");
- RecordingMp3FileCount = 0;
+ if (!Recordings.empty())
+ {
+ Recordings.clear();
+ }
if (!fileNames.empty())
{
fileNames.clear();
}
- if (!Recordings.empty())
+ for (int i = 0; i < RecordingMp3FileCount; ++i)
{
- Recordings.clear();
+ memset(info[i].recordingFileName, 0, sizeof(info[i].recordingFileName));
+ memset(info[i].recordingDuration, 0, sizeof(info[i].recordingDuration));
+ memset(info[i].recordingTime, 0, sizeof(info[i].recordingTime));
}
- SearchFiles(directory, fileNames, RecordingMp3FileCount);
- RecordDataReadToFile();
+ RecordingMp3FileCount = 0;
+ SearchFiles(directory, Recordings, RecordingMp3FileCount);
if (RecordingMp3FileCount != 0)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Total .mp3 Files Count:%d", RecordingMp3FileCount);
- for (const auto &filename : fileNames)
+ MaxRecordingNumber = atoi(info[0].recordingFileName);
+ for (int i = 1; i < RecordingMp3FileCount; i++)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File Name::%s", filename.c_str());
+ if (atoi(info[i].recordingFileName) > MaxRecordingNumber)
+ {
+ MaxRecordingNumber = atoi(info[i].recordingFileName);
+ }
}
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MaxRecordingNumber:%d", MaxRecordingNumber);
// 对 Recordings 数组进行操作
for (int i = 0; i < RecordingMp3FileCount; i++)
{
- for (int j = 0; j < RecordingMp3FileCount; j++)
- {
- if (fileNames[i] == recordingInfo[j].recordingFileName)
- {
- Recordings.push_back({i, recordingInfo[j].recordingFileName, recordingInfo[j].recordingDuration, recordingInfo[j].recordingTime});
- break;
- }
- }
+ Recordings.push_back({i, GetCurrentPlayRecordingName(info[i].recordingFileName), info[i].recordingDuration, info[i].recordingTime});
}
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::InitRecordingListItem over!!");
*/
std::string RecordingModel::GetCurrentPlayRecordingName(void)
{
- return fileNames[GetClickRecordingIndex()];
+ return info[GetClickRecordingIndex()].recordingFileName;
+ }
+
+ std::string RecordingModel::GetCurrentPlayRecordingName(std::string name)
+ {
+ int language = ConfigModel::GetInstance()->GetLanguage();
+ if (language == 0) // 如果当前系统为中文
+ {
+ mergefileName = "录音 ";
+ mergefileName += name;
+ }
+ else
+ {
+ mergefileName = "Audio ";
+ mergefileName += name;
+ }
+ return mergefileName;
+ }
+
+ /*
+ * @brief 获取年月日时间和录音时长
+ */
+ std::string &RecordingModel::Getyyyymmhhh_dateAndTotalRecordDuration(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[RecordingModel] Getyyyymmhhh_dateAndTotalRecordDuration");
+ std::string yyyymmhhh_date = Recordings[GetClickRecordingIndex()].recordTime;
+ std::string TotalRecordDuration = Recordings[GetClickRecordingIndex()].recordTotalTime;
+ // 去掉日期字符串末尾的换行符
+ 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, "recordTime = %s recordTotalTime = %s", yyyymmhhh_date.c_str(), TotalRecordDuration.c_str());
+ return RecordingTimeAndDuration;
}
/*
void RecordingModel::SetRecordingListNum(int value)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::GetRecordingListNum %d", value);
+ if (value > MAX_RECORDING_NUM)
+ {
+ RecordingMp3FileCount = MAX_RECORDING_NUM;
+ return;
+ }
RecordingMp3FileCount = value;
}
return yyyymmhhh_date;
}
- // 设置每首录音的信息:包含录音文件名,录音时长,录音时间
- void RecordingModel::SetRecordingInfo(RecordingInfo &info, int index)
+ void RecordingModel::UpdateRecordingInfo()
{
- recordingInfo[index] = info;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingFileName = %s", recordingInfo[index].recordingFileName);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingDuration = %s", recordingInfo[index].recordingDuration);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingTime = %s", recordingInfo[index].recordingTime);
- }
-
- void RecordingModel::UpdateRecordingInfo(int index)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateRecordingInfo %s", recordingInfo[index].recordingFileName);
if (index < 0 || index > RecordingMp3FileCount)
{
return;
}
- char *file_name = recordingInfo[index].recordingFileName;
- std::string delete_filename = (directory + file_name).append(".mp3");
+ std::string delete_filename_mp3 = (directory + GetCurrentPlayRecordingName()).append(".mp3");
+ std::string delete_filename_txt = (directory + GetCurrentPlayRecordingName()).append(".txt");
/* -------------------------------- 删除录音文件 -------------------------------- */
- uapi_delete_files(delete_filename.c_str());
+ uapi_delete_files(delete_filename_mp3.c_str());
+ uapi_delete_files(delete_filename_txt.c_str());
/* -------------------------------------------------------------------------- */
- int i = 0;
- for (i = index; i < (RecordingMp3FileCount - 1); i++)
- {
- strcpy(recordingInfo[i].recordingFileName, recordingInfo[i + 1].recordingFileName);
- strcpy(recordingInfo[i].recordingDuration, recordingInfo[i + 1].recordingDuration);
- strcpy(recordingInfo[i].recordingTime, recordingInfo[i + 1].recordingTime);
-
- fileNames[i] = fileNames[i + 1];
- }
- RecordingMp3FileCount--;
- RecordingInfo info = {0};
- SetRecordingInfo(info, i);
- fileNames[i].clear();
- RecordDataWriteToFile();
}
// 设置当前的录音文件名,每次录音会更改
return recordFileName;
}
- /*
- * @brief 获取年月日时间和录音时长
- */
- std::string &RecordingModel::Getyyyymmhhh_dateAndTotalRecordDuration(void)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[RecordingModel] Getyyyymmhhh_dateAndTotalRecordDuration");
- 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_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingTimeAndDuration %s", RecordingTimeAndDuration.c_str());
- return RecordingTimeAndDuration;
- }
-
void RecordingModel::GetDuration(int64_t &duration)
{
duration = DurationTime;
}
}
- bool RecordingModel::GetRecordingPlayerViewCreate()
+ int RecordingModel::getMaxRecordingNumber(void)
{
- return RecordingPlayerViewIsCreate;
+ return MaxRecordingNumber;
}
- void RecordingModel::SetRecordingPlayerViewCreate(bool state)
+
+ void RecordingModel::setMaxRecordingNumber(int number)
{
- RecordingPlayerViewIsCreate = state;
+ MaxRecordingNumber = number;
}
/*创建录音播放路径*/
return directory.c_str();
}
- int RecordingModel::RecordDataWriteToFile()
+ // 保存录音信息文件
+ int RecordingModel::RecordDataWriteToFile(std::string name)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataWriteToFile,%d", __LINE__, RecordingMp3FileCount);
- if (0 == RecordingMp3FileCount)
+ if (name.empty())
{
return OHOS_FAILURE;
}
-
- FILE *fp = fopen(recordInfoFile.c_str(), "wb+");
+ name = directory + name.append(".txt");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataWriteToFile %s", __LINE__, name.c_str());
+ FILE *fp = fopen(name.c_str(), "wb+");
if (nullptr == fp)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataWriteToFile fail", __LINE__);
return OHOS_FAILURE;
}
- size_t ret = fwrite(recordingInfo, sizeof(RecordingInfo), RecordingMp3FileCount, fp);
- if (RecordingMp3FileCount != ret)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataWriteToFile fail", __LINE__);
- }
+ std::string recordingFileName = GetRecordFileName(); // 录音文件名
+ std::string yyymmhhh_date = Getyyyymmhhh_date(); // 保存录音年月日时间
+ std::string TotalRecordDuration = RecordingModel::recordTempDuration; // 录音的总时长
+ recordingInfo = {0};
+ strncpy_s(recordingInfo.recordingFileName, 32, recordingFileName.c_str(), recordingFileName.length());
+ strncpy_s(recordingInfo.recordingDuration, 16, TotalRecordDuration.c_str(), TotalRecordDuration.length());
+ strncpy_s(recordingInfo.recordingTime, 16, yyymmhhh_date.c_str(), yyymmhhh_date.length());
+
+ size_t ret = fwrite((void *)&recordingInfo, sizeof(RecordingInfo), 1, fp);
fclose(fp);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataWriteToFile success", __LINE__);
return OHOS_SUCCESS;
}
- int RecordingModel::RecordDataReadToFile()
+ // 读取录音信息文件
+ int RecordingModel::RecordDataReadToFile(std::string name)
{
- if (0 == RecordingMp3FileCount)
+ if (name.empty())
{
return OHOS_FAILURE;
}
- FILE *fp = fopen(recordInfoFile.c_str(), "rb");
+ name = directory + name.append(".txt");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataReadToFile %s", __LINE__, name.c_str());
+ FILE *fp = fopen(name.c_str(), "rb");
if (fp == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataReadToFile", __LINE__);
return OHOS_FAILURE;
}
- fread(recordingInfo, sizeof(RecordingInfo), RecordingMp3FileCount, fp);
+ fread((void *)&recordingInfo, sizeof(RecordingInfo), 1, fp);
+ printfRecordData();
fclose(fp);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:RecordDataReadToFile success", __LINE__);
return OHOS_SUCCESS;
}
+
+ void RecordingModel::printfRecordData()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingFileName %s", recordingInfo.recordingFileName);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingDuration %s", recordingInfo.recordingDuration);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordingTime %s", recordingInfo.recordingTime);
+ }
/* ----------------------------------- 定时器 ---------------------------------- */
// 声明定时器变量
osTimerId_t g_timer = NULL;
--- /dev/null
+#include "record/include/RecordingNumLimitView.h"
+#include "wearable_log.h"
+#include "record/include/RecordingPresenter.h"
+namespace OHOS
+{
+
+ RecordingNumLimitView::RecordingNumLimitView()
+ {
+ }
+
+ RecordingNumLimitView::~RecordingNumLimitView()
+ {
+ ClearAll();
+ }
+
+ void RecordingNumLimitView::ClearAll(void)
+ {
+ if (scrollView != nullptr)
+ {
+ scrollView->RemoveAll();
+ if (title)
+ {
+ delete title;
+ title = nullptr;
+ }
+ if (image)
+ {
+ delete image;
+ image = nullptr;
+ }
+ if (note)
+ {
+ delete note;
+ note = nullptr;
+ }
+ if (goitlabel)
+ {
+ delete goitlabel;
+ goitlabel = nullptr;
+ }
+ if (goitbutton)
+ {
+ delete goitbutton;
+ goitbutton = nullptr;
+ }
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ }
+
+ UILabelExt *RecordingNumLimitView::CreateRecordingNumLimitLabel(LabelConfig &labelconfig)
+ {
+ UILabelExt *label = new UILabelExt();
+ if (label == nullptr)
+ {
+ return nullptr;
+ }
+ label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); // 位置大小
+ label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); // 字体大小
+ label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); // 字体行高
+ label->SetTextId(labelconfig.textId);
+ label->SetLineBreakMode(labelconfig.lineBreakMode); // 断行模式。
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);
+ return label;
+ }
+
+ UIScrollView *RecordingNumLimitView::RecordingNumLimitViewInit(void)
+ {
+ if (scrollView == nullptr)
+ {
+ scrollView = new UIScrollView();
+ if (scrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail!");
+ return nullptr;
+ }
+ scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(RecordingPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "draglistener can not be nullptr!");
+ return nullptr;
+ }
+ scrollView->SetViewId(RECORDINGNUMLIMITVIEW);
+ scrollView->SetOnDragListener(draglistener);
+ scrollView->SetTouchable(true);
+ scrollView->SetDraggable(true);
+ /* -------------------------------------------------------------------------- */
+ LabelConfig labelconfig = {
+ .left = 83,
+ .top = 50,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_RECORDER,
+ .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,
+ };
+ if (title == nullptr)
+ {
+ title = CreateRecordingNumLimitLabel(labelconfig);
+ if (title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "title can not be nullptr!");
+ return nullptr;
+ }
+ scrollView->Add(title);
+ }
+ /* -------------------------------------------------------------------------- */
+ if (image == nullptr)
+ {
+ image = new UIImageView();
+ if (image == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image can not be nullptr!");
+ return nullptr;
+ }
+ image->SetPosition(193, 120, 80, 80);
+ image->SetSrc(PNG_ATTENTION_IMAGE);
+ scrollView->Add(image);
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig = {
+ .left = 53,
+ .top = 222,
+ .width = 360,
+ .height = 70,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_VOICE_RECORDING_REMINDER_NOTE, // 录音数量不得超过30首,请删除已有录音
+ .lineBreakMode = UILabel::LINE_BREAK_WRAP,
+ };
+ if (note == nullptr)
+ {
+ note = CreateRecordingNumLimitLabel(labelconfig);
+ if (note == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "note can not be nullptr!");
+ return nullptr;
+ }
+ scrollView->Add(note);
+ }
+ /* -------------------------------------------------------------------------- */
+ if (goitbutton == nullptr)
+ {
+ goitbutton = new UIButton();
+ 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->SetViewId(RECORDINGNUMLIMITBUTTONVIEW);
+ goitbutton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+ goitbutton->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ goitbutton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
+ UIView::OnClickListener *clicilistener = static_cast<UIView::OnClickListener *>(RecordingPresenter::GetInstance());
+ if (clicilistener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clicilistener can not be nullptr!");
+ return nullptr;
+ }
+ goitbutton->SetOnClickListener(clicilistener);
+ scrollView->Add(goitbutton);
+ }
+ /* -------------------------------------------------------------------------- */
+ int16_t y = goitbutton->GetY() + 28;
+ labelconfig = {
+ .left = 133,
+ .top = y,
+ .width = 200,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_KONW, // 知道了
+ .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,
+ };
+ if (goitlabel == nullptr)
+ {
+ goitlabel = CreateRecordingNumLimitLabel(labelconfig);
+ if (goitlabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "goitlabel can not be nullptr!");
+ return nullptr;
+ }
+ scrollView->Add(goitlabel);
+ }
+ }
+ return scrollView;
+ }
+}
\ No newline at end of file
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[RecordingPlayerView] ResetComponentStatus");\r
\r
+ RecordingModel *p_RecordingModel = RecordingModel::GetInstance();\r
+ if (p_RecordingModel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingModel::GetInstance fail!!");\r
+ return;\r
+ }\r
+\r
if (PlayerProgressBar != nullptr)\r
{\r
PlayerProgressBar->SetValue(0); // 0:进度0%\r
}\r
if (RecordingFileName != nullptr)\r
{\r
- RecordingFileName->SetText(RecordingModel::GetInstance()->GetCurrentPlayRecordingName().c_str());\r
+ std::string name = p_RecordingModel->GetCurrentPlayRecordingName();\r
+ RecordingFileName->SetText(p_RecordingModel->GetCurrentPlayRecordingName(name).c_str());\r
RecordingFileName->Invalidate();\r
}\r
if (RecordingTimeAndDuration != nullptr)\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-03-30 09:14:38\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-28 15:41:29\r
+ * @LastEditTime: 2024-09-02 09:47:40\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
- RecordingModel::GetInstance()->SetRecordingPlayerViewCreate(false);\r
// ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
}\r
\r
case RECORDINGVOLUMESETTINGVIEW:\r
p_RecordingView->ChangeView(RECORDINGVOLUMESETTINGVIEW, RECORDINGPLAYERVIEW); // 声音设置视图(subView)->录音播放视图(subView)\r
break;\r
+ case RECORDINGEXCELIMIT:\r
+ p_RecordingView->ChangeView(RECORDINGEXCELIMIT, RECORDINGVIEW);\r
+ break;\r
default:\r
break;\r
}\r
}\r
args[5] = (char *)malloc(100); // 分配内存\r
/* -------------------------------------------------------------------------- */\r
- int num = p_RecordingModel->GetRecordingListNum();\r
+ int num = p_RecordingModel->getMaxRecordingNumber();\r
std::string recordfileNme;\r
- if (num < 9)\r
- {\r
- recordfileNme = "record_0" + std::to_string(num + 1);\r
- }\r
- else\r
- {\r
- recordfileNme = "record_" + std::to_string(num + 1);\r
- }\r
+ // if (num < 9)\r
+ // {\r
+ // recordfileNme = "record_0" + std::to_string(num + 1);\r
+ // }\r
+ // else\r
+ // {\r
+ // recordfileNme = "record_" + std::to_string(num + 1);\r
+ // }\r
+ recordfileNme = std::to_string(num + 1);\r
p_RecordingModel->SetRecordFileName(recordfileNme);\r
sprintf(args[5], "%s%s.mp3", RecordingModel::GetInstance()->GetRecordDirectory(), recordfileNme.c_str());\r
/* ---------------------------------- 开始录音 ---------------------------------- */\r
AudioCaptureSample(argc, (const char **)&argv);\r
/* ---------------------------------- 停止定时器 --------------------------------- */\r
p_RecordingModel->Recording_StopTimer();\r
+ /* --------------------------------- 录音数量加1 --------------------------------- */\r
+ p_RecordingModel->SetRecordingListNum(p_RecordingModel->GetRecordingListNum() + 1);\r
/* --------------------------------- 设置录音信息 --------------------------------- */\r
- int index = p_RecordingModel->GetRecordingListNum(); // 保存录音的下标\r
- std::string recordingFileName = p_RecordingModel->GetRecordFileName(); // 录音文件名\r
- std::string yyymmhhh_date = RecordingModel::GetInstance()->Getyyyymmhhh_date(); // 保存录音年月日时间\r
- std::string TotalRecordDuration = RecordingModel::recordTempDuration; // 录音的总时长\r
- RecordingInfo info = {0};\r
- strncpy_s(info.recordingFileName, 32, recordingFileName.c_str(), recordingFileName.length());\r
- strncpy_s(info.recordingDuration, 16, TotalRecordDuration.c_str(), TotalRecordDuration.length());\r
- strncpy_s(info.recordingTime, 16, yyymmhhh_date.c_str(), yyymmhhh_date.length());\r
- p_RecordingModel->SetRecordingInfo(info, index);\r
- p_RecordingModel->SetRecordingListNum(index + 1);\r
- p_RecordingModel->RecordDataWriteToFile();\r
+ // int num = p_RecordingModel->GetRecordingListNum(); // 保存录音的下标\r
+ std::string recordingFileName = p_RecordingModel->GetRecordFileName(); // 录音文件名\r
+ // std::string yyymmhhh_date = RecordingModel::GetInstance()->Getyyyymmhhh_date(); // 保存录音年月日时间\r
+ // std::string TotalRecordDuration = RecordingModel::recordTempDuration; // 录音的总时长\r
+ // RecordingInfo info = {0};\r
+ // strncpy_s(info.recordingFileName, 32, recordingFileName.c_str(), recordingFileName.length());\r
+ // strncpy_s(info.recordingDuration, 16, TotalRecordDuration.c_str(), TotalRecordDuration.length());\r
+ // strncpy_s(info.recordingTime, 16, yyymmhhh_date.c_str(), yyymmhhh_date.length());\r
+ p_RecordingModel->RecordDataWriteToFile(recordingFileName.c_str());\r
\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView StopRecord over!!");\r
}\r
\r
if (strcmp(view.GetViewId(), RECORD_BUTTON) == 0)\r
{\r
+ if (p_RecordingModel->GetRecordingListNum() >= MAX_RECORDING_NUM)\r
+ {\r
+ view_->ChangeView(RECORDINGVIEW, RECORDINGEXCELIMIT);\r
+ return true;\r
+ }\r
StartRecord();\r
return true;\r
}\r
else if (strcmp(view.GetViewId(), RECORD_DELETE_ON_BUTTON_VIEWID) == 0) // 若点击的是录音删除按钮\r
{\r
int index = p_RecordingModel->GetClickRecordingIndex();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index = %d", index);\r
// std::string delete_path = RecordingModel::GetInstance()->GetRecordDirectory();\r
// std::string delete_filename = p_RecordingModel->GetFileNames()[index] + ".mp3";\r
// std::string fileName = delete_path + delete_filename;\r
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index = %d ", index);\r
// uapi_delete_files(fileName.c_str());//删除录音文件\r
- p_RecordingModel->UpdateRecordingInfo(p_RecordingModel->GetRecordingListNum() - index - 1);\r
+ p_RecordingModel->UpdateRecordingInfo();\r
\r
p_RecordingView->ChangeView(RECORDINGDELETEVIEW, RECORDINGVIEW);\r
return true;\r
p_RecordingView->ChangeView(RECORDINGDELETEVIEW, RECORDINGPLAYERVIEW);\r
return true;\r
}\r
+ else if (strcmp(view.GetViewId(), RECORDINGNUMLIMITBUTTONVIEW) == 0)\r
+ {\r
+ p_RecordingView->ChangeView(RECORDINGEXCELIMIT, RECORDINGVIEW);\r
+ return true;\r
+ }\r
return true;\r
}\r
\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, "RecordListViewListener::OnClick is no index");\r
return false;\r
}\r
/* -------------------------------- 保存被点击录音下标 ------------------------------- */\r
delete p_RecordingVolumeSettingView;\r
p_RecordingVolumeSettingView = nullptr;\r
}\r
+ if (p_RecordingNumLimitView != nullptr)\r
+ {\r
+ delete p_RecordingNumLimitView;\r
+ p_RecordingNumLimitView = nullptr;\r
+ }\r
for (int i = RECORDINGVIEW; i < MAX_RECORDINGVIEWID; i++)\r
{\r
RecordingViewScrollView[i] = nullptr;\r
return false;\r
}\r
RecordingViewScrollView[thisView] = p_RecordingPlayerView->RecordingPlayerViewInit();\r
- RecordingModel::GetInstance()->SetRecordingPlayerViewCreate(true);\r
container_->Add(RecordingViewScrollView[thisView]);\r
}\r
// 设置“录音播放器”【录音文件名标签】的"文本内容"为被点击的"录音"的录音名\r
return true;\r
}\r
\r
+ // 切换到“录音超出限制”视图\r
+ bool RecordingView::ChangeRecordNumLimitView(int16_t thisView)\r
+ {\r
+ if (RecordingViewScrollView[thisView] == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::ChangeRecordNumLimitView");\r
+ p_RecordingNumLimitView = new RecordingNumLimitView();\r
+ if (p_RecordingNumLimitView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView:: new scrollView[%d] fail", thisView);\r
+ return false;\r
+ }\r
+ RecordingViewScrollView[thisView] = p_RecordingNumLimitView->RecordingNumLimitViewInit();\r
+ container_->Add(RecordingViewScrollView[thisView]);\r
+ }\r
+ return true;\r
+ }\r
+\r
// 1.RecordingViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
struct RecordingViewMapper\r
{\r
{RECORDINGPLAYERVIEW, &RecordingView::ChangeRecordingPlayerView},\r
{RECORDINGDELETEVIEW, &RecordingView::ChangeRecordDeleteView},\r
{RECORDINGVOLUMESETTINGVIEW, &RecordingView::ChangeRecordVolumeSettingView},\r
+ {RECORDINGEXCELIMIT, &RecordingView::ChangeRecordNumLimitView},\r
};\r
\r
// 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-03-22 09:48:07
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-12 10:20:11
+ * @LastEditTime: 2024-09-02 17:22:48
* @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/pairing_notification.h
*/
#ifndef PAIRING_NOTIFICATION_H
bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) override;
void SetDeviceName(char *Name);
char *GetDeviceName();
+ void DeviceUnBindingViewIsVisible(bool state);
#if NO_LCD_TEST_CONNECT
void Pairing_StartTimer(uint32_t interval = 1000*5);
#else
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-03-22 10:04:36
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-31 16:49:39
+ * @LastEditTime: 2024-09-02 17:27:00
* @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp
*/
#include "notification_manager.h"
#include <broadcast_feature.h>
#include <custom_utils.h>
#include "uicomponents/UIComponents.h"
+#include "ConfigModel.h"
+#include <custom_runtime.h>
+#include "../../../../../../drivers/peripheral/vibrator/service/vibrator_service.h"
+#include <ui_service.h>
namespace OHOS
{
UIViewGroup *DeviceBindingView{nullptr};
+ UIScrollView *DeviceBindingScrollView{nullptr};
UILabelExt *DeviceBindingViewTitleLabel{nullptr}; // 标题 :设备绑定
UILabelExt *DeviceBindingName{nullptr}; // 绑定的设备名称
- UILabelExt *DeviceBindingViewLabel{nullptr}; // 标签内容:“想要进行连接是否同意”
UIButton *DeviceBindingButtonOK{nullptr}; // 设备绑定确认
UIButton *DeviceBindingButtonCancel{nullptr}; // 设备绑定取消
+ UIImageAnimatorView *DeviceBindingAnimatorView{nullptr}; // 设备绑定动画
+ static constexpr int BIND_IMAGE_ANIMATOR_VIEW_X = 183;
+ static constexpr int BIND_IMAGE_ANIMATOR_VIEW_Y = 125;
+ static constexpr int BIND_IMAGE_ANIMATOR_VIEW_W = 100;
+ static constexpr int BIND_IMAGE_ANIMATOR_VIEW_H = 66;
+ static constexpr int BIND_IMAGE_ANIMATOR_VIEW_TIMEOFUPDATE = 70;
+ static constexpr int BIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 25; // 绑定动画帧数
+ const ImageInfo **BindPathsArray{nullptr};
+ ImageAnimatorInfo BindImageInfo[BIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];
+ static constexpr const char *BIND_IMAGE_SRC = "/user/res/remind/bind/";
+
UIViewGroup *DeviceUnBindingView{nullptr};
+ UIScrollView *DeviceUnBindingScrollView{nullptr};
UILabelExt *DeviceUnBindingViewTitleLabel{nullptr}; // 标题 :设备解绑
UILabelExt *DeviceUnBindingName{nullptr}; // 解绑的设备名称
- UILabelExt *DeviceUnBindingViewLabel{nullptr}; // 标签内容:“想要进行解绑是否同意”
UIButton *DeviceUnBindingButtonOK{nullptr}; // 设备解绑定确认
UIButton *DeviceUnBindingButtonCancel{nullptr}; // 设备解绑取消
UIImageAnimatorView *DeviceUnBindingAnimatorView{nullptr}; // 设备解绑动画
static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_X = 193;
- static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_Y = 110;
+ static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_Y = 118;
static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_W = 80;
static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_H = 80;
static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_TIMEOFUPDATE = 100;
static constexpr int UNBIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 25; // 解绑动画帧数
const ImageInfo **UnBindPathsArray{nullptr};
ImageAnimatorInfo UnBindImageInfo[UNBIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];
+ static constexpr const char *UNBIND_IMAGE_SRC = "/user/res/remind/unbind/";
UIViewGroup *DeviceUnbindingRequestGroupView{nullptr};
UIScrollView *DeviceUnbindingRequestScrollView{nullptr}; // 设备解除绑定请求(与新设备连接)视图
UILabelExt *DeviceUnbindingRequestViewTitleLabel{nullptr}; // 标题 :注意
UIImageView *DeviceUnbindingRequestViewImageView{nullptr}; //
- UILabelExt *DeviceUnbindingRequestViewLabel[2]{nullptr}; //
+ UILabelExt *DeviceUnbindingRequestViewLabel[3]{nullptr}; //
UIButton *DeviceUnbindingRequestButtonOK{nullptr}; // 设备解除绑定请求(与新设备连接)确认
UIButton *DeviceUnbindingRequestButtonCancel{nullptr}; // 设备解除绑定请求(与新设备连接)取消
else if (&view == DeviceUnBindingButtonOK) // 设备解绑确认按钮
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PairingViewEventListener:: DeviceUnBindingButtonOK OnClick");
-/*
- * 可能会执行的解绑流程:
- * 1.通知设备或服务器执行解绑操作.
- * 2.从绑定设备列表移除设备.
- * 3.更新UI状态.
- */
-
-// 关闭通知界面
-#ifdef SUPPORT_BLE_SERVICE
- cleanUnbindInfor(1);
-#endif
- NotificationManager::GetInstance()->StopNotify();
+ // 切换到再次确认解绑弹窗
+ if (DeviceUnbindingRequestGroupView == nullptr)
+ {
+ RootView::GetInstance()->Add(CreateDeviceUnbindingRequestGroupView());
+ }
+ DeviceUnBindingViewIsVisible(false);
}
else if (&view == DeviceUnbindingRequestButtonOK) // 设备解除绑定请求(与新设备连接)确认
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PairingViewEventListener:: DeviceUnbindingRequestButtonOK OnClick");
-
+ // 关闭通知界面
+#ifdef SUPPORT_BLE_SERVICE
+ cleanUnbindInfor(1);
+#endif
NotificationManager::GetInstance()->StopNotify();
}
else if (&view == DeviceUnbindingRequestButtonCancel) // 设备解除绑定请求(与新设备连接)取消
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PairingViewEventListener:: DeviceUnbindingRequestButtonCancel OnClick");
- NotificationManager::GetInstance()->StopNotify();
+ DeviceUnBindingViewIsVisible(true);
}
return true;
}
}
button->SetPosition(x, y, w, h);
button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
- button->SetStyle(STYLE_BACKGROUND_OPA, 0x2d);
- button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED);
+ button->SetStyle(STYLE_BACKGROUND_OPA, 0x19);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
button->SetImageSrc(imageSrc, imageSrc);
return button;
}
memcpy(DeviceName, Name, len);
}
+ void PairingViewEventListener::DeviceUnBindingViewIsVisible(bool state)
+ {
+ if (DeviceUnBindingView && DeviceUnbindingRequestGroupView)
+ {
+ DeviceUnBindingView->SetVisible(state);
+ DeviceUnbindingRequestGroupView->SetVisible(!state);
+ }
+ }
+
/*获取设备名称*/
char *PairingViewEventListener::GetDeviceName(void)
{
- return DeviceName; // 先用固定字符串测试
+ return DeviceName;
}
/*
DeviceBindingView->SetPosition(0, 0, 466, 466);
DeviceBindingView->SetDraggable(true);
DeviceBindingView->SetTouchable(true);
+ /* ------------------------- DeviceBindingScrollView ------------------------ */
+ if (DeviceBindingScrollView == nullptr)
+ {
+ DeviceBindingScrollView = new UIScrollView();
+ if (DeviceBindingScrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DeviceBindingScrollView new fail");
+ return nullptr;
+ }
+ }
+ DeviceBindingScrollView->SetPosition(0, 0, 466, 466);
+ DeviceBindingScrollView->SetThrowDrag(true);
+ DeviceBindingScrollView->SetDraggable(true);
+ DeviceBindingScrollView->SetTouchable(true);
+ DeviceBindingScrollView->SetReboundSize(30);
+ DeviceBindingScrollView->SetScrollBlankSize(30);
+ DeviceBindingScrollView->SetSwipeACCLevel(800); // 800: compensation distance
+ DeviceBindingScrollView->SetDragACCLevel(5); // 5: drag acceleration
+ DeviceBindingScrollView->SetMaxScrollDistance(1000);
+ DeviceBindingScrollView->SetDirection(UIScrollView::VERTICAL);
/* ----------------------- DeviceBindingViewTitleLabel ---------------------- */
- DeviceBindingViewTitleLabel = new UILabelExt();
if (DeviceBindingViewTitleLabel == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingViewTitleLabel new fail!!");
- return nullptr;
+ DeviceBindingViewTitleLabel = new UILabelExt();
+ if (DeviceBindingViewTitleLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingViewTitleLabel new fail!!");
+ return nullptr;
+ }
}
- DeviceBindingViewTitleLabel->SetPosition(173, 52, 120, 35);
+ DeviceBindingViewTitleLabel->SetPosition(83, 50, 300, 35);
DeviceBindingViewTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);
DeviceBindingViewTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
- DeviceBindingViewTitleLabel->SetText("设备绑定");
- DeviceBindingViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ // DeviceBindingViewTitleLabel->SetText("设备绑定");
+ DeviceBindingViewTitleLabel->SetTextId(STR_DEVICE_BINDING);
+ DeviceBindingViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
DeviceBindingViewTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
DeviceBindingViewTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ DeviceBindingViewTitleLabel->SetRollSpeed(70);
+ /* ----------------------- DeviceBindingAnimatorView ---------------------- */
+ BindPathsArray = CreateImageInfoArray(BIND_IMAGE_SRC, BIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
+ if (DeviceBindingAnimatorView == nullptr)
+ {
+ DeviceBindingAnimatorView = new UIImageAnimatorView();
+ if (DeviceBindingAnimatorView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView]DeviceBindingAnimatorView new fail");
+ return nullptr;
+ }
+ for (uint8_t i = 0; i < BIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)
+ {
+ BindImageInfo[i].imageInfo = (BindPathsArray[i]);
+ BindImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;
+ BindImageInfo[i].pos.x = BIND_IMAGE_ANIMATOR_VIEW_X;
+ BindImageInfo[i].pos.y = BIND_IMAGE_ANIMATOR_VIEW_Y;
+ BindImageInfo[i].width = BIND_IMAGE_ANIMATOR_VIEW_W;
+ BindImageInfo[i].height = BIND_IMAGE_ANIMATOR_VIEW_H;
+ }
+ DeviceBindingAnimatorView->SetPosition(BIND_IMAGE_ANIMATOR_VIEW_X, BIND_IMAGE_ANIMATOR_VIEW_Y, BIND_IMAGE_ANIMATOR_VIEW_W, BIND_IMAGE_ANIMATOR_VIEW_H);
+ DeviceBindingAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+ DeviceBindingAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ DeviceBindingAnimatorView->SetImageAnimatorSrc(BindImageInfo, BIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, BIND_IMAGE_ANIMATOR_VIEW_TIMEOFUPDATE);
+ DeviceBindingAnimatorView->SetRepeat(true);
+ DeviceBindingAnimatorView->SetAutoEnable(false);
+ DeviceBindingAnimatorView->SetResizeMode(UIImageAnimatorView::CENTER);
+ DeviceBindingAnimatorView->Start();
+ }
/* ---------------------------- DeviceBindingName --------------------------- */
- DeviceBindingName = new UILabelExt();
if (DeviceBindingName == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingName new fail!!");
- return nullptr;
+ DeviceBindingName = new UILabelExt();
+ if (DeviceBindingName == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingName new fail!!");
+ return nullptr;
+ }
}
char *devanme = PairingViewEventListener::GetInstance().GetDeviceName();
- DeviceBindingName->SetPosition(33, 180, 400, 40);
+ DeviceBindingName->SetPosition(53, 230, 360, 70);
DeviceBindingName->SetStyle(STYLE_TEXT_FONT, 30);
DeviceBindingName->SetStyle(STYLE_LINE_HEIGHT, 35);
+ DeviceBindingName->SetTextId(STR_DEVICE_BINDING_NOTE); // XX想要与你进行连接绑定
if (strlen(devanme))
{
- DeviceBindingName->SetText(devanme);
+ // DeviceBindingName->SetText(devanme);
+ UpdateLabel(DeviceBindingName, devanme, STR_DEVICE_BINDING_NOTE);
}
else
{
- DeviceBindingName->SetText(" ");
+ // DeviceBindingName->SetText(" ");
+ UpdateLabel(DeviceBindingName, " ", STR_DEVICE_BINDING_NOTE);
}
-
- DeviceBindingName->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ DeviceBindingName->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
DeviceBindingName->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- DeviceBindingName->SetRollSpeed(60);
DeviceBindingName->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- /* ------------------------- DeviceBindingViewLabel ------------------------- */
- DeviceBindingViewLabel = new UILabelExt();
- if (DeviceBindingViewLabel == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingViewLabel new fail!!");
- return nullptr;
- }
- DeviceBindingViewLabel->SetPosition(33, 240, 400, 40);
- DeviceBindingViewLabel->SetStyle(STYLE_TEXT_FONT, 30);
- DeviceBindingViewLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
- DeviceBindingViewLabel->SetText("想要进行连接是否同意");
- DeviceBindingViewLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
- DeviceBindingViewLabel->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xff));
- DeviceBindingViewLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- DeviceBindingViewLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ DeviceBindingName->SetRollSpeed(70);
/* ------------------------------ DeviceBindingButtonCancel ------------------------------ */
- DeviceBindingButtonCancel = CreateButton(111, 320, 100, 100, "/user/res/SYSTEM_CheckOff.bin");
+ int y = DeviceBindingName->GetY() + DeviceBindingName->GetTextHeight() + 20;
+ DeviceBindingButtonCancel = CreateButton(111, y, 100, 100, "/user/res/SYSTEM_CheckOff.bin");
if (DeviceBindingButtonCancel == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingButtonCancel new fail!!");
return nullptr;
}
/* -------------------------------- DeviceBindingButtonOK -------------------------------- */
- DeviceBindingButtonOK = CreateButton(256, 320, 100, 100, "/user/res/SYSTEM_CheckOn.bin");
+ DeviceBindingButtonOK = CreateButton(256, y, 100, 100, "/user/res/SYSTEM_CheckOn.bin");
if (DeviceBindingButtonOK == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] DeviceBindingButtonOK new fail!!");
}
UIView::OnClickListener *listener = static_cast<UIView::OnClickListener *>(&PairingViewEventListener::GetInstance());
+ if (listener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceBindingView] PairingViewEventListener::GetInstance fail!!");
+ return nullptr;
+ }
DeviceBindingButtonCancel->SetOnClickListener(listener);
DeviceBindingButtonOK->SetOnClickListener(listener);
/* ----------------------------------- Add ---------------------------------- */
- DeviceBindingView->Add(DeviceBindingViewTitleLabel);
- DeviceBindingView->Add(DeviceBindingName);
- DeviceBindingView->Add(DeviceBindingViewLabel);
- DeviceBindingView->Add(DeviceBindingButtonCancel);
- DeviceBindingView->Add(DeviceBindingButtonOK);
+ DeviceBindingScrollView->Add(DeviceBindingViewTitleLabel);
+ DeviceBindingScrollView->Add(DeviceBindingAnimatorView);
+ DeviceBindingScrollView->Add(DeviceBindingName);
+ DeviceBindingScrollView->Add(DeviceBindingButtonCancel);
+ DeviceBindingScrollView->Add(DeviceBindingButtonOK);
+ DeviceBindingView->Add(DeviceBindingScrollView);
#if NO_LCD_TEST_CONNECT
PairingViewEventListener::GetInstance().Pairing_StartTimer();
#endif
}
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()))
+ {
+ ui_api_vibrate_once_func();
+ }
+
+ ScreenTurnOn(40 * 1000); // 亮屏操作 40秒关闭
+
NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeDeviceBindingView);
return DeviceBindingView;
}
DeviceUnBindingView->SetPosition(0, 0, 466, 466);
DeviceUnBindingView->SetDraggable(true);
DeviceUnBindingView->SetTouchable(true);
+ /* ------------------------- DeviceUnBindingScrollView ------------------------ */
+ if (DeviceUnBindingScrollView == nullptr)
+ {
+ DeviceUnBindingScrollView = new UIScrollView();
+ if (DeviceUnBindingScrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DeviceUnBindingScrollView new fail");
+ return nullptr;
+ }
+ }
+ DeviceUnBindingScrollView->SetPosition(0, 0, 466, 466);
+ DeviceUnBindingScrollView->SetThrowDrag(true);
+ DeviceUnBindingScrollView->SetDraggable(true);
+ DeviceUnBindingScrollView->SetTouchable(true);
+ DeviceUnBindingScrollView->SetReboundSize(30);
+ DeviceUnBindingScrollView->SetScrollBlankSize(30);
+ DeviceUnBindingScrollView->SetSwipeACCLevel(800); // 800: compensation distance
+ DeviceUnBindingScrollView->SetDragACCLevel(5); // 5: drag acceleration
+ DeviceUnBindingScrollView->SetMaxScrollDistance(1000);
+ DeviceUnBindingScrollView->SetDirection(UIScrollView::VERTICAL);
/* ----------------------- DeviceUnBindingAnimatorView ---------------------- */
- UnBindPathsArray = CreateImageInfoArray("/user/res/remind/unbind/", UNBIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
+ UnBindPathsArray = CreateImageInfoArray(UNBIND_IMAGE_SRC, UNBIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
if (DeviceUnBindingAnimatorView == nullptr)
{
DeviceUnBindingAnimatorView = new UIImageAnimatorView();
DeviceUnBindingAnimatorView->Start();
}
/* ----------------------- DeviceUnBindingViewTitleLabel ---------------------- */
- DeviceUnBindingViewTitleLabel = new UILabelExt();
if (DeviceUnBindingViewTitleLabel == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingViewTitleLabel new fail!!");
- return nullptr;
+ DeviceUnBindingViewTitleLabel = new UILabelExt();
+ if (DeviceUnBindingViewTitleLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingViewTitleLabel new fail!!");
+ return nullptr;
+ }
}
- DeviceUnBindingViewTitleLabel->SetPosition(173, 52, 120, 35);
+ DeviceUnBindingViewTitleLabel->SetPosition(83, 50, 300, 35);
DeviceUnBindingViewTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);
DeviceUnBindingViewTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
- DeviceUnBindingViewTitleLabel->SetText("设备解绑");
- DeviceUnBindingViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ // DeviceUnBindingViewTitleLabel->SetText("设备解绑");
+ DeviceUnBindingViewTitleLabel->SetTextId(STR_EQUIPMENT_UNTYING);
+ DeviceUnBindingViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
DeviceUnBindingViewTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
DeviceUnBindingViewTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
/* ---------------------------- DeviceUnBindingName --------------------------- */
- DeviceUnBindingName = new UILabelExt();
if (DeviceUnBindingName == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingName new fail!!");
- return nullptr;
+ DeviceUnBindingName = new UILabelExt();
+ if (DeviceUnBindingName == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingName new fail!!");
+ return nullptr;
+ }
}
- DeviceUnBindingName->SetPosition(33, 200, 400, 40);
+ DeviceUnBindingName->SetPosition(53, 230, 360, 70);
DeviceUnBindingName->SetStyle(STYLE_TEXT_FONT, 30);
DeviceUnBindingName->SetStyle(STYLE_LINE_HEIGHT, 35);
+ DeviceUnBindingName->SetTextId(STR_EQUIPMENT_UNTYING_NOTE); // XX想要与你进行解绑
char *devanme = PairingViewEventListener::GetInstance().GetDeviceName();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingName devanme :%s", devanme);
if (strlen(devanme))
{
- DeviceUnBindingName->SetText(devanme);
+ // DeviceUnBindingName->SetText(devanme);
+ UpdateLabel(DeviceUnBindingName, devanme, STR_EQUIPMENT_UNTYING_NOTE);
}
else
{
- DeviceUnBindingName->SetText(" ");
+ // DeviceUnBindingName->SetText(" ");
+ UpdateLabel(DeviceUnBindingName, " ", STR_EQUIPMENT_UNTYING_NOTE);
}
// DeviceUnBindingName->SetText("小米5\n");
- DeviceUnBindingName->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ DeviceUnBindingName->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
DeviceUnBindingName->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- DeviceUnBindingName->SetRollSpeed(60);
DeviceUnBindingName->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- /* ------------------------- DeviceUnBindingViewLabel ------------------------- */
- DeviceUnBindingViewLabel = new UILabelExt();
- if (DeviceUnBindingViewLabel == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingViewLabel new fail!!");
- return nullptr;
- }
- DeviceUnBindingViewLabel->SetPosition(33, 250, 400, 40);
- DeviceUnBindingViewLabel->SetStyle(STYLE_TEXT_FONT, 30);
- DeviceUnBindingViewLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
- DeviceUnBindingViewLabel->SetText("想要进行解绑是否同意");
- DeviceUnBindingViewLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
- DeviceUnBindingViewLabel->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xff));
- DeviceUnBindingViewLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- DeviceUnBindingViewLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
/* ------------------------------ DeviceBindingButtonCancel ------------------------------ */
- DeviceUnBindingButtonCancel = CreateButton(111, 320, 100, 100, "/user/res/SYSTEM_CheckOff.bin");
+ int y = DeviceUnBindingName->GetY() + DeviceUnBindingName->GetTextHeight() + 20;
+ DeviceUnBindingButtonCancel = CreateButton(111, y, 100, 100, "/user/res/SYSTEM_CheckOff.bin");
if (DeviceUnBindingButtonCancel == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingButtonCancel new fail!!");
return nullptr;
}
/* -------------------------------- DeviceUnBindingButtonOK -------------------------------- */
- DeviceUnBindingButtonOK = CreateButton(256, 320, 100, 100, "/user/res/SYSTEM_CheckOn.bin");
+ DeviceUnBindingButtonOK = CreateButton(256, y, 100, 100, "/user/res/SYSTEM_CheckOn.bin");
if (DeviceUnBindingButtonOK == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingButtonOK new fail!!");
}
/* ------------------------- button OnClickListener ------------------------- */
UIView::OnClickListener *listener = static_cast<UIView::OnClickListener *>(&PairingViewEventListener::GetInstance());
+ if (nullptr == listener)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] PairingViewEventListener::GetInstance fail!!");
+ return nullptr;
+ }
DeviceUnBindingButtonCancel->SetOnClickListener(listener);
DeviceUnBindingButtonOK->SetOnClickListener(listener);
/* ----------------------------------- Add ---------------------------------- */
- DeviceUnBindingView->Add(DeviceUnBindingViewTitleLabel);
- DeviceUnBindingView->Add(DeviceUnBindingAnimatorView);
- DeviceUnBindingView->Add(DeviceUnBindingName);
- DeviceUnBindingView->Add(DeviceUnBindingViewLabel);
- DeviceUnBindingView->Add(DeviceUnBindingButtonCancel);
- DeviceUnBindingView->Add(DeviceUnBindingButtonOK);
+ DeviceUnBindingScrollView->Add(DeviceUnBindingViewTitleLabel);
+ DeviceUnBindingScrollView->Add(DeviceUnBindingAnimatorView);
+ DeviceUnBindingScrollView->Add(DeviceUnBindingName);
+ DeviceUnBindingScrollView->Add(DeviceUnBindingButtonCancel);
+ DeviceUnBindingScrollView->Add(DeviceUnBindingButtonOK);
+ DeviceUnBindingView->Add(DeviceUnBindingScrollView);
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] DeviceUnBindingView new success!!");
+
+ /* -------------------------------------------------------------------------- */
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()))
+ {
+ ui_api_vibrate_once_func(); // 震动一次
+ }
+
+ ScreenTurnOn(40 * 1000); // 亮屏操作 40秒关闭
+ /* -------------------------------------------------------------------------- */
+
NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeDeviceUnBindingView);
return DeviceUnBindingView;
}
}
DeviceUnbindingRequestGroupView->SetPosition(0, 0, 466, 466);
DeviceUnbindingRequestGroupView->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ DeviceUnbindingRequestGroupView->SetVisible(false);
/* -------------------- DeviceUnbindingRequestScrollView -------------------- */
DeviceUnbindingRequestScrollView = new UIScrollView();
if (DeviceUnbindingRequestScrollView == nullptr)
return nullptr;
}
DeviceUnbindingRequestScrollView->SetPosition(0, 0, 466, 466);
- DeviceUnbindingRequestScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- DeviceUnbindingRequestScrollView->SetScrollBlankSize(20);
- DeviceUnbindingRequestScrollView->SetReboundSize(50);
- DeviceUnbindingRequestScrollView->SetDirection(1);
+ DeviceUnbindingRequestScrollView->SetThrowDrag(true);
+ DeviceUnbindingRequestScrollView->SetDraggable(true);
+ DeviceUnbindingRequestScrollView->SetTouchable(true);
+ DeviceUnbindingRequestScrollView->SetReboundSize(30);
+ DeviceUnbindingRequestScrollView->SetScrollBlankSize(30);
+ DeviceUnbindingRequestScrollView->SetSwipeACCLevel(800); // 800: compensation distance
+ DeviceUnbindingRequestScrollView->SetDragACCLevel(5); // 5: drag acceleration
+ DeviceUnbindingRequestScrollView->SetMaxScrollDistance(1000);
+ DeviceUnbindingRequestScrollView->SetDirection(UIScrollView::VERTICAL);
/* ------------------ DeviceUnbindingRequestViewTitleLabel ------------------ */
- DeviceUnbindingRequestViewTitleLabel = new UILabelExt();
if (DeviceUnbindingRequestViewTitleLabel == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewTitleLabel is nullptr");
- return nullptr;
+ DeviceUnbindingRequestViewTitleLabel = new UILabelExt();
+ if (DeviceUnbindingRequestViewTitleLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewTitleLabel is nullptr");
+ return nullptr;
+ }
}
- DeviceUnbindingRequestViewTitleLabel->SetPosition(203, 52, 200, 60);
+ DeviceUnbindingRequestViewTitleLabel->SetPosition(83, 50, 300, 35);
DeviceUnbindingRequestViewTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);
DeviceUnbindingRequestViewTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
- DeviceUnbindingRequestViewTitleLabel->SetText("注意");
- DeviceUnbindingRequestViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ // DeviceUnbindingRequestViewTitleLabel->SetText("注意");
+ DeviceUnbindingRequestViewTitleLabel->SetTextId(STR_LOOK_OUT);
+ DeviceUnbindingRequestViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
DeviceUnbindingRequestViewTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
DeviceUnbindingRequestViewTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
/* ------------------- DeviceUnbindingRequestViewImageView ------------------ */
- DeviceUnbindingRequestViewImageView = new UIImageView();
if (DeviceUnbindingRequestViewImageView == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewImageView is nullptr");
- return nullptr;
+ DeviceUnbindingRequestViewImageView = new UIImageView();
+ if (DeviceUnbindingRequestViewImageView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewImageView is nullptr");
+ return nullptr;
+ }
}
DeviceUnbindingRequestViewImageView->SetPosition(193, 121, 80, 80);
const char *imageimagesPath = "/user/res/Attention.bin";
DeviceUnbindingRequestViewImageView->SetSrc(imageimagesPath);
/* --------------------- DeviceUnbindingRequestViewLabel[0] -------------------- */
- DeviceUnbindingRequestViewLabel[0] = new UILabelExt();
- if (DeviceUnbindingRequestViewLabel[0] == nullptr)
+ if (nullptr == DeviceUnbindingRequestViewLabel[0])
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewLabel[0] is nullptr");
- return nullptr;
+ DeviceUnbindingRequestViewLabel[0] = new UILabelExt();
+ if (DeviceUnbindingRequestViewLabel[0] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewLabel[0] is nullptr");
+ return nullptr;
+ }
}
- DeviceUnbindingRequestViewLabel[0]->SetPosition(33, 220, 400, 90);
+ DeviceUnbindingRequestViewLabel[0]->SetPosition(53, 242, 360, 70);
DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_TEXT_FONT, 30);
- DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_LINE_HEIGHT, 40);
- char str[512];
- memset(str, 0, 512);
+ DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_LINE_HEIGHT, 35);
+ DeviceUnbindingRequestViewLabel[0]->SetTextId(STR_NEWDEVICE_BIND_REMIND_NOTE1);
+
+ char *devanme = PairingViewEventListener::GetInstance().GetDeviceName();
+ if (strlen(devanme))
+ {
+ UpdateLabel(DeviceUnbindingRequestViewLabel[0], devanme, STR_NEWDEVICE_BIND_REMIND_NOTE1);
+ }
+ else
+ {
+ UpdateLabel(DeviceUnbindingRequestViewLabel[0], " ", STR_NEWDEVICE_BIND_REMIND_NOTE1);
+ }
- sprintf(str, "当前设备已经与 %s 绑定", PairingViewEventListener::GetInstance().GetDeviceName());
- DeviceUnbindingRequestViewLabel[0]->SetText(str);
DeviceUnbindingRequestViewLabel[0]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
DeviceUnbindingRequestViewLabel[0]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
DeviceUnbindingRequestViewLabel[0]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
/* ------------------- DeviceUnbindingRequestViewLabel[1] ------------------- */
- DeviceUnbindingRequestViewLabel[1] = new UILabelExt();
if (DeviceUnbindingRequestViewLabel[1] == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewLabel[1] is nullptr");
- return nullptr;
+ DeviceUnbindingRequestViewLabel[1] = new UILabelExt();
+ if (DeviceUnbindingRequestViewLabel[1] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewLabel[1] is nullptr");
+ return nullptr;
+ }
}
- int y = DeviceUnbindingRequestViewLabel[0]->GetY() + DeviceUnbindingRequestViewLabel[0]->GetHeight();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " %d %d %d", DeviceUnbindingRequestViewLabel[0]->GetY(), DeviceUnbindingRequestViewLabel[0]->GetHeight(), y);
- DeviceUnbindingRequestViewLabel[1]->SetPosition(33, y, 400, 300);
+ int y = DeviceUnbindingRequestViewLabel[0]->GetY() + DeviceUnbindingRequestViewLabel[0]->GetTextHeight() + 50;
+ DeviceUnbindingRequestViewLabel[1]->SetPosition(53, y, 360, 280);
DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_TEXT_FONT, 30);
- DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_LINE_HEIGHT, 40);
- memset(str, 0, 512);
- sprintf(str, "继续连接操作会解除与%s的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n", PairingViewEventListener::GetInstance().GetDeviceName());
- // str = "继续连接操作会解除与 " + GetDeviceName() + " 的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n";
- DeviceUnbindingRequestViewLabel[1]->SetText(str);
+ DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_LINE_HEIGHT, 35);
+ DeviceUnbindingRequestViewLabel[1]->SetTextId(STR_NEWDEVICE_BIND_REMIND_NOTE2);
+ if (strlen(devanme))
+ {
+ UpdateLabel(DeviceUnbindingRequestViewLabel[1], devanme, STR_NEWDEVICE_BIND_REMIND_NOTE2);
+ }
+ else
+ {
+ UpdateLabel(DeviceUnbindingRequestViewLabel[1], " ", STR_NEWDEVICE_BIND_REMIND_NOTE2);
+ }
DeviceUnbindingRequestViewLabel[1]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
- DeviceUnbindingRequestViewLabel[1]->SetTextColor(Color::GetColorFromRGBA(0xff, 0x8a, 0x36, 0xff));
DeviceUnbindingRequestViewLabel[1]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
DeviceUnbindingRequestViewLabel[1]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ /* ------------------- DeviceUnbindingRequestViewLabel[2] ------------------- */
+ if (DeviceUnbindingRequestViewLabel[2] == nullptr)
+ {
+ DeviceUnbindingRequestViewLabel[2] = new UILabelExt();
+ if (DeviceUnbindingRequestViewLabel[2] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnbindingRequestGroupView] DeviceUnbindingRequestViewLabel[2] is nullptr");
+ return nullptr;
+ }
+ }
+ y = DeviceUnbindingRequestViewLabel[1]->GetY() + DeviceUnbindingRequestViewLabel[1]->GetTextHeight() + 50;
+ DeviceUnbindingRequestViewLabel[2]->SetPosition(53, y, 360, 35);
+ DeviceUnbindingRequestViewLabel[2]->SetStyle(STYLE_TEXT_FONT, 30);
+ DeviceUnbindingRequestViewLabel[2]->SetStyle(STYLE_LINE_HEIGHT, 35);
+ DeviceUnbindingRequestViewLabel[2]->SetTextId(STR_NEWDEVICE_BIND_REMIND_NOTE3);
+ DeviceUnbindingRequestViewLabel[2]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ DeviceUnbindingRequestViewLabel[2]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ DeviceUnbindingRequestViewLabel[2]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
/* ------------------------------ DeviceBindingButtonCancel ------------------------------ */
- y = DeviceUnbindingRequestViewLabel[1]->GetY() + DeviceUnbindingRequestViewLabel[1]->GetHeight();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " %d %d %d", DeviceUnbindingRequestViewLabel[1]->GetY(), DeviceUnbindingRequestViewLabel[1]->GetHeight(), y);
+ y = DeviceUnbindingRequestViewLabel[2]->GetY() + DeviceUnbindingRequestViewLabel[2]->GetTextHeight() + 50;
DeviceUnbindingRequestButtonCancel = CreateButton(111, y, 100, 100, "/user/res/SYSTEM_CheckOff.bin");
if (DeviceUnbindingRequestButtonCancel == nullptr)
{
}
/* ------------------------- button OnClickListener ------------------------- */
UIView::OnClickListener *listener = static_cast<UIView::OnClickListener *>(&PairingViewEventListener::GetInstance());
+ if (listener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView] PairingViewEventListener::GetInstance fail!!");
+ return nullptr;
+ }
DeviceUnbindingRequestButtonCancel->SetOnClickListener(listener);
DeviceUnbindingRequestButtonOK->SetOnClickListener(listener);
-
+ /* -------------------------------------------------------------------------- */
DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestViewTitleLabel);
DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestViewImageView);
DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestViewLabel[0]);
DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestViewLabel[1]);
+ DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestViewLabel[2]);
DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestButtonCancel);
DeviceUnbindingRequestScrollView->Add(DeviceUnbindingRequestButtonOK);
DeviceUnbindingRequestGroupView->Add(DeviceUnbindingRequestScrollView);
}
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeDeviceBindingView);
return DeviceUnbindingRequestGroupView;
}
*/
void FreeDeviceBindingView(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FreeDeviceBindingView]");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FreeDeviceBindingView]");
if (DeviceBindingView != nullptr)
{
DeviceBindingView->RemoveAll();
-
- delete DeviceBindingViewTitleLabel;
- DeviceBindingViewTitleLabel = nullptr;
-
- delete DeviceBindingName;
- DeviceBindingName = nullptr;
-
- delete DeviceBindingViewLabel;
- DeviceBindingViewLabel = nullptr;
-
- delete DeviceBindingButtonCancel;
- DeviceBindingButtonCancel = nullptr;
-
- delete DeviceBindingButtonOK;
- DeviceBindingButtonOK = nullptr;
-
+ if (DeviceBindingScrollView != nullptr)
+ {
+ DeviceBindingScrollView->RemoveAll();
+ if (DeviceBindingViewTitleLabel)
+ {
+ delete DeviceBindingViewTitleLabel;
+ DeviceBindingViewTitleLabel = nullptr;
+ }
+ if (DeviceBindingName)
+ {
+ delete DeviceBindingName;
+ DeviceBindingName = nullptr;
+ }
+ if (DeviceBindingAnimatorView)
+ {
+ DeviceBindingAnimatorView->Stop();
+ delete DeviceBindingAnimatorView;
+ DeviceBindingAnimatorView = nullptr;
+ FreeImageInfoArray(BindPathsArray, BIND_IMAGE_SRC, BIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
+ }
+ if (DeviceBindingButtonCancel)
+ {
+ delete DeviceBindingButtonCancel;
+ DeviceBindingButtonCancel = nullptr;
+ }
+ if (DeviceBindingButtonOK)
+ {
+ delete DeviceBindingButtonOK;
+ DeviceBindingButtonOK = nullptr;
+ }
+ delete DeviceBindingScrollView;
+ DeviceBindingScrollView = nullptr;
+ }
RootView::GetInstance()->Remove(DeviceBindingView);
-
delete DeviceBindingView;
DeviceBindingView = nullptr;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FreeDeviceBindingView] success");
*/
void FreeDeviceUnBindingView(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FreeDeviceUnBindingView]");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FreeDeviceUnBindingView]");
if (DeviceUnBindingView != nullptr)
{
DeviceUnBindingView->RemoveAll();
-
- delete DeviceUnBindingViewTitleLabel;
- DeviceUnBindingViewTitleLabel = nullptr;
-
- FreeImageInfoArray(UnBindPathsArray, "/user/res/remind/unbind/", UNBIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
-
- DeviceUnBindingAnimatorView->Stop();
- delete DeviceUnBindingAnimatorView;
- DeviceUnBindingAnimatorView = nullptr;
-
- delete DeviceUnBindingName;
- DeviceUnBindingName = nullptr;
-
- delete DeviceUnBindingViewLabel;
- DeviceUnBindingViewLabel = nullptr;
-
- delete DeviceUnBindingButtonCancel;
- DeviceUnBindingButtonCancel = nullptr;
-
- delete DeviceUnBindingButtonOK;
- DeviceUnBindingButtonOK = nullptr;
-
+ if (DeviceUnBindingScrollView != nullptr)
+ {
+ DeviceUnBindingScrollView->RemoveAll();
+ if (DeviceUnBindingViewTitleLabel)
+ {
+ delete DeviceUnBindingViewTitleLabel;
+ DeviceUnBindingViewTitleLabel = nullptr;
+ }
+ if (DeviceUnBindingAnimatorView)
+ {
+ DeviceUnBindingAnimatorView->Stop();
+ delete DeviceUnBindingAnimatorView;
+ DeviceUnBindingAnimatorView = nullptr;
+ FreeImageInfoArray(UnBindPathsArray, UNBIND_IMAGE_SRC, UNBIND_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);
+ }
+ if (DeviceUnBindingName)
+ {
+ delete DeviceUnBindingName;
+ DeviceUnBindingName = nullptr;
+ }
+ if (DeviceUnBindingButtonCancel)
+ {
+ delete DeviceUnBindingButtonCancel;
+ DeviceUnBindingButtonCancel = nullptr;
+ }
+ if (DeviceUnBindingButtonOK)
+ {
+ delete DeviceUnBindingButtonOK;
+ DeviceUnBindingButtonOK = nullptr;
+ }
+ delete DeviceUnBindingScrollView;
+ DeviceUnBindingScrollView = nullptr;
+ }
RootView::GetInstance()->Remove(DeviceUnBindingView);
-
delete DeviceUnBindingView;
DeviceUnBindingView = nullptr;
+ FreeDeviceUnbindingRequestGroupView();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FreeDeviceUnBindingView] success");
}
}
*/
void FreeDeviceUnbindingRequestGroupView(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FreeDeviceUnbindingRequestGroupView]");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FreeDeviceUnbindingRequestGroupView]");
if (DeviceUnbindingRequestGroupView != nullptr)
{
- DeviceUnbindingRequestGroupView->Remove(DeviceUnbindingRequestScrollView);
-
- DeviceUnbindingRequestScrollView->RemoveAll();
-
- delete DeviceUnbindingRequestViewTitleLabel;
- DeviceUnbindingRequestViewTitleLabel = nullptr;
-
- delete DeviceUnbindingRequestViewImageView;
- DeviceUnbindingRequestViewImageView = nullptr;
-
- delete DeviceUnbindingRequestViewLabel[0];
- DeviceUnbindingRequestViewLabel[0] = nullptr;
-
- delete DeviceUnbindingRequestViewLabel[1];
- DeviceUnbindingRequestViewLabel[1] = nullptr;
-
- delete DeviceUnbindingRequestButtonOK;
- DeviceUnbindingRequestButtonOK = nullptr;
-
- delete DeviceUnbindingRequestButtonCancel;
- DeviceUnbindingRequestButtonCancel = nullptr;
-
- delete DeviceUnbindingRequestScrollView;
- DeviceUnbindingRequestScrollView = nullptr;
-
+ DeviceUnbindingRequestGroupView->RemoveAll();
+ if (nullptr != DeviceUnbindingRequestScrollView)
+ {
+ DeviceUnbindingRequestScrollView->RemoveAll();
+ if (DeviceUnbindingRequestViewTitleLabel)
+ {
+ delete DeviceUnbindingRequestViewTitleLabel;
+ DeviceUnbindingRequestViewTitleLabel = nullptr;
+ }
+ if (DeviceUnbindingRequestViewImageView)
+ {
+ delete DeviceUnbindingRequestViewImageView;
+ DeviceUnbindingRequestViewImageView = nullptr;
+ }
+ for (int i = 0; i < (sizeof(DeviceUnbindingRequestViewLabel) / sizeof(DeviceUnbindingRequestViewLabel[0])); i++)
+ {
+ if (DeviceUnbindingRequestViewLabel[i])
+ {
+ delete DeviceUnbindingRequestViewLabel[i];
+ DeviceUnbindingRequestViewLabel[i] = nullptr;
+ }
+ }
+ if (DeviceUnbindingRequestButtonOK)
+ {
+ delete DeviceUnbindingRequestButtonOK;
+ DeviceUnbindingRequestButtonOK = nullptr;
+ }
+ if (DeviceUnbindingRequestButtonCancel)
+ {
+ delete DeviceUnbindingRequestButtonCancel;
+ DeviceUnbindingRequestButtonCancel = nullptr;
+ }
+ delete DeviceUnbindingRequestScrollView;
+ DeviceUnbindingRequestScrollView = nullptr;
+ }
RootView::GetInstance()->Remove(DeviceUnbindingRequestGroupView);
-
delete DeviceUnbindingRequestGroupView;
DeviceUnbindingRequestGroupView = nullptr;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FreeDeviceUnbindingRequestGroupView] success");
STR_SEDENTARY_REMINDER = 456,\r
STR_SEDENTARY_REMINDER_NOTE = 457,\r
STR_SYSTEM_UPGRADING = 458,\r
- STR_NEWDEVICE_BIND_REMIND_NOTE = 459,\r
- STR_AI_VOICE = 460,\r
- STR_AI_INTELLIGENT_ASSISTANT = 461,\r
- STR_START_CHAT = 462,\r
- STR_BOOT_FAILED = 463,\r
- STR_ENABLE_MOBILE_DATA_FIRST = 464,\r
- STR_ENABLE_BLUETOOTH_FIRST = 465,\r
- STR_LISTENING = 466,\r
- STR_FINISH_SPEAKING = 467,\r
- STR_THINKING = 468,\r
- STR_CANCEL = 469,\r
- STR_CONNECT_TIMEOUT = 470,\r
- STR_PLEASE_RESTART_CHAT = 471,\r
- STR_CONTINUE_CHAT = 472,\r
- STR_AIMODELS_DOUBAO = 473,\r
- STR_AIMODES_WENXINYIYAN = 474,\r
- STR_AIMODES_KIMI = 475,\r
- STR_AIMODES_CHATGPT = 476,\r
- STR_SLIDE_TO_SHUTDOWN = 477,\r
- STR_SLIDE_TO_REBOOT = 478,\r
- STR_AI_FAMILY_MEALS = 479,\r
- STR_CHAT = 480,\r
- STR_PCY4GC_OR_AS = 481,\r
- STR_API_KEYS = 482,\r
- STR_PGTTAF = 483,\r
- STR_DAFBS = 484,\r
- STR_OPENAI_API_KEYS = 485,\r
- STR_KHBB = 486,\r
- STR_GTAS = 487,\r
- STR_DYWTDAK = 488,\r
- STR_CONNECTING = 489,\r
- STR_CONNECTION_FAIL = 490,\r
- STR_PTALORTM = 491,\r
- STR_MOTION_DETECTION_WALK_NOTE = 492,\r
- STR_MOTION_DETECTION_RUN_NOTE = 493,\r
- STR_MOTION_DETECTION_RIDE_NOTE = 494,\r
- STR_MOTION_DETECTION_ROWING_NOTE = 495,\r
- STR_MOTION_DETECTION_ELLIPTICAL_NOTE = 496,\r
- STR_PE4GC = 497,\r
- STR_OBU_MESSAGE = 498,\r
- STR_DELETE = 499,\r
- STR_CHARGE = 500,\r
- STR_CHARGE_NOTE = 501,\r
- STR_STEP_FREQUENCY = 502,\r
- STR_STEP_LENGTH = 503,\r
- STR_AVG_PACE = 504,\r
- STR_TONGYI_QIANWEN = 505,\r
- STR_IFLYTEK_SPARK = 506,\r
- STR_DISTURBNOTE_OFF = 507,\r
- STR_4G_NOTE = 508,\r
- STR_MUSIC_PLAYER_SOURCE_NOTE = 509,\r
- STR_MUSIC_LIST_IS_EMPTY = 510,\r
- STR_BT_HEADSET_RESCAN = 511,\r
- STR_BT_HEADSET_NOFOND = 512,\r
- STR_SCHEDULE = 513,\r
- STR_SCHEDULE_TITLE = 514,\r
- STR_SCHEDULE_NO_DATA = 515,\r
- STR_SCHEDULE_NO_DATA_PROMPT = 516,\r
- STR_NO_PAIRED_DEV = 517,\r
- STR_IGNORE = 518,\r
- STR_START = 519,\r
- STR_ARC_SCALE_LIST_DISPLAY = 520,\r
- STR_COUNT_DOWN = 521,\r
- STR_CUSTOM_TIME = 522,\r
- STR_QUICK_START = 523,\r
- STR_1_MIN = 524,\r
- STR_5_MIN = 525,\r
- STR_10_MIN = 526,\r
- STR_30_MIN = 527,\r
- STR_SET_COUNT_DOWN_NOTE = 528,\r
- STR_COUNTDOWN_ENDS = 529,\r
- STR_MAXIMUM_TIME_REACH_NOTE = 530,\r
- STR_STOPWATCH_STOP_NOTE = 531,\r
- STR_TMCHBR = 532,\r
- STR_SCHEDULE_TOPIC = 533,\r
- STR_SCHEDULE_TIME = 534,\r
- STR_SCHEDULE_NOTES = 535,\r
- STR_SCHEDULE_DELETE_PROMPT = 536,\r
- STR_HANG_UP_OR_ANSWER = 537,\r
- STR_WATCH_CALL = 538,\r
- STR_PHONE_CALL = 539,\r
- STR_STEPS_OF_THE_DAY = 540,\r
- STR_MILEAGE = 541,\r
- STR_FAT_BURNING_TIME = 542,\r
- STR_NUMBER_OF_STANDS = 543,\r
- STR_CONSUME_CALORIES = 544,\r
- STR_GOAL_HINT = 545,\r
- STR_SLEEPMODE = 546,\r
- STR_SLEEP_MODE_PROMPT_ON = 547,\r
- STR_LOW_POWER_NOTIF_1 = 548,\r
- STR_LOW_POWER_NOTIF_2 = 549,\r
- STR_MAX_ID = 550,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE1 = 459,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE2 = 460,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE3 = 461,\r
+ STR_AI_VOICE = 462,\r
+ STR_AI_INTELLIGENT_ASSISTANT = 463,\r
+ STR_START_CHAT = 464,\r
+ STR_BOOT_FAILED = 465,\r
+ STR_ENABLE_MOBILE_DATA_FIRST = 466,\r
+ STR_ENABLE_BLUETOOTH_FIRST = 467,\r
+ STR_LISTENING = 468,\r
+ STR_FINISH_SPEAKING = 469,\r
+ STR_THINKING = 470,\r
+ STR_CANCEL = 471,\r
+ STR_CONNECT_TIMEOUT = 472,\r
+ STR_PLEASE_RESTART_CHAT = 473,\r
+ STR_CONTINUE_CHAT = 474,\r
+ STR_AIMODELS_DOUBAO = 475,\r
+ STR_AIMODES_WENXINYIYAN = 476,\r
+ STR_AIMODES_KIMI = 477,\r
+ STR_AIMODES_CHATGPT = 478,\r
+ STR_SLIDE_TO_SHUTDOWN = 479,\r
+ STR_SLIDE_TO_REBOOT = 480,\r
+ STR_AI_FAMILY_MEALS = 481,\r
+ STR_CHAT = 482,\r
+ STR_PCY4GC_OR_AS = 483,\r
+ STR_API_KEYS = 484,\r
+ STR_PGTTAF = 485,\r
+ STR_DAFBS = 486,\r
+ STR_OPENAI_API_KEYS = 487,\r
+ STR_KHBB = 488,\r
+ STR_GTAS = 489,\r
+ STR_DYWTDAK = 490,\r
+ STR_CONNECTING = 491,\r
+ STR_CONNECTION_FAIL = 492,\r
+ STR_PTALORTM = 493,\r
+ STR_MOTION_DETECTION_WALK_NOTE = 494,\r
+ STR_MOTION_DETECTION_RUN_NOTE = 495,\r
+ STR_MOTION_DETECTION_RIDE_NOTE = 496,\r
+ STR_MOTION_DETECTION_ROWING_NOTE = 497,\r
+ STR_MOTION_DETECTION_ELLIPTICAL_NOTE = 498,\r
+ STR_PE4GC = 499,\r
+ STR_OBU_MESSAGE = 500,\r
+ STR_DELETE = 501,\r
+ STR_CHARGE = 502,\r
+ STR_CHARGE_NOTE = 503,\r
+ STR_STEP_FREQUENCY = 504,\r
+ STR_STEP_LENGTH = 505,\r
+ STR_AVG_PACE = 506,\r
+ STR_TONGYI_QIANWEN = 507,\r
+ STR_IFLYTEK_SPARK = 508,\r
+ STR_DISTURBNOTE_OFF = 509,\r
+ STR_4G_NOTE = 510,\r
+ STR_MUSIC_PLAYER_SOURCE_NOTE = 511,\r
+ STR_MUSIC_LIST_IS_EMPTY = 512,\r
+ STR_BT_HEADSET_RESCAN = 513,\r
+ STR_BT_HEADSET_NOFOND = 514,\r
+ STR_SCHEDULE = 515,\r
+ STR_SCHEDULE_TITLE = 516,\r
+ STR_SCHEDULE_NO_DATA = 517,\r
+ STR_SCHEDULE_NO_DATA_PROMPT = 518,\r
+ STR_NO_PAIRED_DEV = 519,\r
+ STR_IGNORE = 520,\r
+ STR_START = 521,\r
+ STR_ARC_SCALE_LIST_DISPLAY = 522,\r
+ STR_COUNT_DOWN = 523,\r
+ STR_CUSTOM_TIME = 524,\r
+ STR_QUICK_START = 525,\r
+ STR_1_MIN = 526,\r
+ STR_5_MIN = 527,\r
+ STR_10_MIN = 528,\r
+ STR_30_MIN = 529,\r
+ STR_SET_COUNT_DOWN_NOTE = 530,\r
+ STR_COUNTDOWN_ENDS = 531,\r
+ STR_MAXIMUM_TIME_REACH_NOTE = 532,\r
+ STR_STOPWATCH_STOP_NOTE = 533,\r
+ STR_TMCHBR = 534,\r
+ STR_SCHEDULE_TOPIC = 535,\r
+ STR_SCHEDULE_TIME = 536,\r
+ STR_SCHEDULE_NOTES = 537,\r
+ STR_SCHEDULE_DELETE_PROMPT = 538,\r
+ STR_HANG_UP_OR_ANSWER = 539,\r
+ STR_WATCH_CALL = 540,\r
+ STR_PHONE_CALL = 541,\r
+ STR_STEPS_OF_THE_DAY = 542,\r
+ STR_MILEAGE = 543,\r
+ STR_FAT_BURNING_TIME = 544,\r
+ STR_NUMBER_OF_STANDS = 545,\r
+ STR_CONSUME_CALORIES = 546,\r
+ STR_GOAL_HINT = 547,\r
+ STR_SLEEPMODE = 548,\r
+ STR_SLEEP_MODE_PROMPT_ON = 549,\r
+ STR_LOW_POWER_NOTIF_1 = 550,\r
+ STR_LOW_POWER_NOTIF_2 = 551,\r
+ STR_MAX_ID = 552,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:07c7cbd5cfeb97582a505d48afd570a9f74a0066f869d6cc996fefacb7521a05
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:6076283dac4750c3d7714f2bbb7164ae5f54a9adc3ce77467a934e90319acb61
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:c43c329379fc475ee20d508dd225616ecc30009d8fe385a2c0d9fe94243fbfc0
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:381eaa136b2eefeed2748e4bcc752d637ee59dba251ecf4dbb8c442910d52811
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:f01c7fbf2dee3ef6cabf29b68e00659b2d451a70e4891027f71a7ab5bfe840df
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:a044f16a1965e41206cc68a9e22962a99aea77b0aaadcaa2fd103efb68525984
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd98bb418bf1eb70eddd8c973710e0b065bd8af8204b35d760a58d71a1f7dcb4
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:64c9e9d2f3c9ebda907735861bee00155f4d6c60dbfdd9748532d059b34644e3
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:59be6514cb63e3e8bd8fb1ecaae320cd7ad5f17709b32b16f551ee0cfbb539e3
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:1556ce058ca766754498b6bc10211fc92a8cb2bd7debe2e4d0660a79ac6a6353
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:72160d1e0a53af62665748acb48b102f55bdc2e037206ed375403516530850a1
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:b386670b6a7a8537faae550e1a5ba6722b5ee2b1c9f930e6280d296db524673a
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdf466e6d270ab45885d43a59ff33d32ef7fd2701eb1c93876e3ac0e2042a323
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:31f56d8d7428dbc8596d13b01ba07eddd97e6b5200cea92e3746aa9ced330320
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b700dcdaee851b9601170f7fb9ab0d4bf4c3ac47996b7e98e48a9ed1b25811f
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:60d7333660668af77425a3c8500cbc813e1195a6b107be71ae95a25ad39834b5
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ffbbc356f1b98b39e5dd1ca78a02c6056ab02eb573991788aa5e90891aae795
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:d62911189dc30a26da643ff18ea673e43047b30b3c425a343e0a4a5120fe5a2a
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:05207dd8eb765df916ae844d5f0e930a503968328141231e753cf9bc2c84418a
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8a62f8fd53985ea2b67092ac62198661da5d8c7b75db20faaea9b278d333637
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:167430c4c886ed9e1f3a10a13df1fe6b1c123a286a4e5b15eadb801c05c9d188
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:99885608307cfed4d6403e936cfe9f1dd77325d951edc09c6f0e29b615657bc4
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:f6c462da49181ea9de01ce56bb7b44994bb64ee7967284dde6c2f7a8e98de0c6
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a040e7715228683193d4d8c807cf3a75a57a3d7ebb89cbb70579a4f54dfb830
+size 4648
--- /dev/null
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b3501c653ca9a5502063f7c0ca6fbb882d722b6657eeaeec746bb3db2da9e85
+size 4648
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$Erinnerung an langes Sitzen\r
STR_SEDENTARY_REMINDER_NOTE$Sie waren XX Stunden inaktiv, stehen Sie auf und bewegen Sie sich!\r
STR_SYSTEM_UPGRADING$Systemaktualisierung läuft\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$Das aktuelle Gerät ist bereits mit XX verbunden. Das Fortsetzen der Verbindung entfernt die Bindung und setzt die Uhr auf die Werkseinstellungen zurück (Daten der Uhr werden gelöscht). Möchten Sie fortfahren?\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$Das aktuelle Gerät ist bereits mit XX verbunden\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$Die Fortsetzung der Verbindungsoperation löst die Bindung an XX auf und setzt die Uhr auf die Werkseinstellungen zurück (dadurch werden die Uhrdaten gelöscht).\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$Möchten Sie fortfahren\r
STR_AI_VOICE$KI Stimme\r
STR_AI_INTELLIGENT_ASSISTANT$KI Sprachassistent\r
STR_START_CHAT$Gespräch starten\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$Sedentary reminder\r
STR_SEDENTARY_REMINDER_NOTE$You haven't moved for XX hours. Get up and move.\r
STR_SYSTEM_UPGRADING$System upgrading\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$The device has been bound to XX. If you continue to connect the device, the device will be unbound and the watch will be restored to factory Settings (the watch data will be cleared).\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$The device has been bound to XX \r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$Continuing to connect will unbind XX and restore the watch to factory Settings (will clear the watch data)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$Whether to continue the operation\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI Intelligent Assistant\r
STR_START_CHAT$Start Chat\r
STR_SEDENTARY_REMINDER$Recordatorio de sedentarismo\r
STR_SEDENTARY_REMINDER_NOTE$Has estado inactivo durante XX horas, ¡levántate y muévete un poco!\r
STR_SYSTEM_UPGRADING$Actualización del sistema\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$El dispositivo actual ya está conectado a XX. Continuar con la conexión eliminará el vínculo y restaurará el reloj a la configuración de fábrica (se borrarán los datos del reloj). ¿Desea continuar?\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$El dispositivo actual ya está conectado a XX. \r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$La operación de conexión continua desvinculará el reloj del XX y restablecerá el reloj a la configuración de fábrica (borrará todos los datos del reloj)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$¿Desea continuar esta operación\r
STR_AI_VOICE$AI Voz\r
STR_AI_INTELLIGENT_ASSISTANT$Asistente Inteligente de AI\r
STR_START_CHAT$Iniciar diálogo\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$Podsetnik za dugotrajno sedenje\r
STR_SEDENTARY_REMINDER_NOTE$Niste bili aktivni već XX sati, ustanite i malo se pomaknite!\r
STR_SYSTEM_UPGRADING$Ažuriranje sustava\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$Trenutni uređaj je već povezan s XX. Nastavak povezivanja će ukinuti vezu i vratiti sat na tvorničke postavke (izbrisat će podatke sa sata). Da li želite nastaviti?\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$Trenutni uređaj je već povezan s XX\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$Nastavljanjem operacije spajanja bit će otkazana veza s XX i sat će biti vraćen na fabričke postavke (podaci na satu će biti izbrisani)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$ Da li želite nastaviti\r
STR_AI_VOICE$AI Glas\r
STR_AI_INTELLIGENT_ASSISTANT$AI Pametni asistent\r
STR_START_CHAT$Započni razgovor\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$座りっぱなしの通知\r
STR_SEDENTARY_REMINDER_NOTE$あなたはXX時間活動していません。立ち上がって少し動きましょう。\r
STR_SYSTEM_UPGRADING$システムアップグレード中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$現在のデバイスはXXとバインドされています。続行するとバインドが解除され、時計は工場出荷時設定に戻ります(データが消去されます)。この操作を続けますか?\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$現在のデバイスはXXとバインドされています\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$続けて接続操作を行うと、XXとのバインドが解除され、腕時計は出荷時の設定に戻ります(腕時計のデータはすべて消去されます)。\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$この操作を続けますか\r
STR_AI_VOICE$AI音声\r
STR_AI_INTELLIGENT_ASSISTANT$AIスマートアシスタント\r
STR_START_CHAT$会話を開始\r
STR_SEDENTARY_REMINDER$오랜 시간 앉아 있습니다.\r
STR_SEDENTARY_REMINDER_NOTE$XX시간 동안 활동이 없었습니다. 일어나서 움직이세요!\r
STR_SYSTEM_UPGRADING$시스템 업그레이드 중\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$현재 장치가 XX에 연결되어 있습니다. 계속 연결 작업을 수행하면 연결 해제되며 시계가 초기화(시계 데이터 삭제)됩니다. 이 작업을 계속 하시겠습니까?\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$현재 기기는 이미 XX와 바인딩되었습니다\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$계속 연결 작업을 하면 XX와의 바인딩이 해제되고 손목시계는 출고 시 설정으로 되돌아갑니다(손목시계 데이터가 모두 삭제됩니다)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$이 작업을 계속하시겠습니까\r
STR_AI_VOICE$AI 음성\r
STR_AI_INTELLIGENT_ASSISTANT$AI 스마트 어시스턴트\r
STR_START_CHAT$대화 시작\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$Напоминание о сидячем образе жизни\r
STR_SEDENTARY_REMINDER_NOTE$Вы не активны уже XX часов, встаньте и немного подвигайтесь!\r
STR_SYSTEM_UPGRADING$Идет обновление системы\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$Текущее устройство уже подключено к XX. Продолжение подключения отменит связывание и вернет часы к заводским настройкам (будут удалены данные часов). Вы хотите продолжить?\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$Текущее устройство уже подключено к XX \r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$Продолжение операции подключения приведет к отмене привязки к XX и восстановлению часов до заводских настроек (данные на часах будут удалены)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$Вы хотите продолжить\r
STR_AI_VOICE$ИИ Голос\r
STR_AI_INTELLIGENT_ASSISTANT$Умный помощник ИИ\r
STR_START_CHAT$Начать диалог\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
STR_ABOUT_WATCH$关于手表\r
STR_WATCH_QR_CODE$手表二维码\r
STR_SYSTEM_LANGUAGE$系统语言\r
-STR_RESTART$重启\r
+STR_RESTART$重新启动\r
STR_SHUTDOWN$关机\r
STR_FACTORY_RESET$恢复出厂\r
STR_WATCH_NAME$手表名称\r
STR_SEDENTARY_REMINDER$久坐提醒\r
STR_SEDENTARY_REMINDER_NOTE$你已经XX小时未活动了,站起来活动一下吧。\r
STR_SYSTEM_UPGRADING$系统升级中\r
-STR_NEWDEVICE_BIND_REMIND_NOTE$当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作\r
+STR_NEWDEVICE_BIND_REMIND_NOTE1$当前设备已经与XX绑定\r
+STR_NEWDEVICE_BIND_REMIND_NOTE2$继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)\r
+STR_NEWDEVICE_BIND_REMIND_NOTE3$是否继续此操作\r
STR_AI_VOICE$AI Voice\r
STR_AI_INTELLIGENT_ASSISTANT$AI智能助手\r
STR_START_CHAT$开始对话\r
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="Erinnerung an langes Sitzen"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="Sie waren XX Stunden inaktiv, stehen Sie auf und bewegen Sie sich!"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="Systemaktualisierung läuft"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="Das aktuelle Gerät ist bereits mit XX verbunden. Das Fortsetzen der Verbindung entfernt die Bindung und setzt die Uhr auf die Werkseinstellungen zurück (Daten der Uhr werden gelöscht). Möchten Sie fortfahren?"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="Das aktuelle Gerät ist bereits mit XX verbunden"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="Die Fortsetzung der Verbindungsoperation löst die Bindung an XX auf und setzt die Uhr auf die Werkseinstellungen zurück (dadurch werden die Uhrdaten gelöscht)."/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="Möchten Sie fortfahren"/>
<lanstr id="STR_AI_VOICE" value="KI Stimme"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="KI Sprachassistent"/>
<lanstr id="STR_START_CHAT" value="Gespräch starten"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="Sedentary reminder"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="You haven't moved for XX hours. Get up and move."/>
<lanstr id="STR_SYSTEM_UPGRADING" value="System upgrading"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="The device has been bound to XX. If you continue to connect the device, the device will be unbound and the watch will be restored to factory Settings (the watch data will be cleared)."/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="The device has been bound to XX"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="Continuing to connect will unbind XX and restore the watch to factory Settings (will clear the watch data)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="Whether to continue the operation"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI Intelligent Assistant"/>
<lanstr id="STR_START_CHAT" value="Start Chat"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="Recordatorio de sedentarismo"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="Has estado inactivo durante XX horas, ¡levántate y muévete un poco!"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="Actualización del sistema"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="El dispositivo actual ya está conectado a XX. Continuar con la conexión eliminará el vínculo y restaurará el reloj a la configuración de fábrica (se borrarán los datos del reloj). ¿Desea continuar?"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="El dispositivo actual ya está conectado a XX."/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="La operación de conexión continua desvinculará el reloj del XX y restablecerá el reloj a la configuración de fábrica (borrará todos los datos del reloj)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="¿Desea continuar esta operación"/>
<lanstr id="STR_AI_VOICE" value="AI Voz"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="Asistente Inteligente de AI"/>
<lanstr id="STR_START_CHAT" value="Iniciar diálogo"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="Podsetnik za dugotrajno sedenje"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="Niste bili aktivni već XX sati, ustanite i malo se pomaknite!"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="Ažuriranje sustava"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="Trenutni uređaj je već povezan s XX. Nastavak povezivanja će ukinuti vezu i vratiti sat na tvorničke postavke (izbrisat će podatke sa sata). Da li želite nastaviti?"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="Trenutni uređaj je već povezan s XX"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="Nastavljanjem operacije spajanja bit će otkazana veza s XX i sat će biti vraćen na fabričke postavke (podaci na satu će biti izbrisani)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value=" Da li želite nastaviti"/>
<lanstr id="STR_AI_VOICE" value="AI Glas"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI Pametni asistent"/>
<lanstr id="STR_START_CHAT" value="Započni razgovor"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="座りっぱなしの通知"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="あなたはXX時間活動していません。立ち上がって少し動きましょう。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="システムアップグレード中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="現在のデバイスはXXとバインドされています。続行するとバインドが解除され、時計は工場出荷時設定に戻ります(データが消去されます)。この操作を続けますか?"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="現在のデバイスはXXとバインドされています"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="続けて接続操作を行うと、XXとのバインドが解除され、腕時計は出荷時の設定に戻ります(腕時計のデータはすべて消去されます)。"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="この操作を続けますか"/>
<lanstr id="STR_AI_VOICE" value="AI音声"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AIスマートアシスタント"/>
<lanstr id="STR_START_CHAT" value="会話を開始"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="오랜 시간 앉아 있습니다."/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="XX시간 동안 활동이 없었습니다. 일어나서 움직이세요!"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="시스템 업그레이드 중"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="현재 장치가 XX에 연결되어 있습니다. 계속 연결 작업을 수행하면 연결 해제되며 시계가 초기화(시계 데이터 삭제)됩니다. 이 작업을 계속 하시겠습니까?"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="현재 기기는 이미 XX와 바인딩되었습니다"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="계속 연결 작업을 하면 XX와의 바인딩이 해제되고 손목시계는 출고 시 설정으로 되돌아갑니다(손목시계 데이터가 모두 삭제됩니다)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="이 작업을 계속하시겠습니까"/>
<lanstr id="STR_AI_VOICE" value="AI 음성"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI 스마트 어시스턴트"/>
<lanstr id="STR_START_CHAT" value="대화 시작"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="Напоминание о сидячем образе жизни"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="Вы не активны уже XX часов, встаньте и немного подвигайтесь!"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="Идет обновление системы"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="Текущее устройство уже подключено к XX. Продолжение подключения отменит связывание и вернет часы к заводским настройкам (будут удалены данные часов). Вы хотите продолжить?"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="Текущее устройство уже подключено к XX"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="Продолжение операции подключения приведет к отмене привязки к XX и восстановлению часов до заводских настроек (данные на часах будут удалены)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="Вы хотите продолжить"/>
<lanstr id="STR_AI_VOICE" value="ИИ Голос"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="Умный помощник ИИ"/>
<lanstr id="STR_START_CHAT" value="Начать диалог"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
<lanstr id="STR_ABOUT_WATCH" value="关于手表"/>
<lanstr id="STR_WATCH_QR_CODE" value="手表二维码"/>
<lanstr id="STR_SYSTEM_LANGUAGE" value="系统语言"/>
- <lanstr id="STR_RESTART" value="重启"/>
+ <lanstr id="STR_RESTART" value="重新启动"/>
<lanstr id="STR_SHUTDOWN" value="关机"/>
<lanstr id="STR_FACTORY_RESET" value="恢复出厂"/>
<lanstr id="STR_WATCH_NAME" value="手表名称"/>
<lanstr id="STR_SEDENTARY_REMINDER" value="久坐提醒"/>
<lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="你已经XX小时未活动了,站起来活动一下吧。"/>
<lanstr id="STR_SYSTEM_UPGRADING" value="系统升级中"/>
- <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE" value="当前设备已经与XX绑定继续连接操作会解除绑定并将手表恢复出厂设置(会清空手表数据)是否继续此操作"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="当前设备已经与XX绑定"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="继续连接操作会解除与XX的绑定并将手表恢复出厂设置(会清空手表数据)"/>
+ <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE3" value="是否继续此操作"/>
<lanstr id="STR_AI_VOICE" value="AI Voice"/>
<lanstr id="STR_AI_INTELLIGENT_ASSISTANT" value="AI智能助手"/>
<lanstr id="STR_START_CHAT" value="开始对话"/>
STR_SEDENTARY_REMINDER = 456,\r
STR_SEDENTARY_REMINDER_NOTE = 457,\r
STR_SYSTEM_UPGRADING = 458,\r
- STR_NEWDEVICE_BIND_REMIND_NOTE = 459,\r
- STR_AI_VOICE = 460,\r
- STR_AI_INTELLIGENT_ASSISTANT = 461,\r
- STR_START_CHAT = 462,\r
- STR_BOOT_FAILED = 463,\r
- STR_ENABLE_MOBILE_DATA_FIRST = 464,\r
- STR_ENABLE_BLUETOOTH_FIRST = 465,\r
- STR_LISTENING = 466,\r
- STR_FINISH_SPEAKING = 467,\r
- STR_THINKING = 468,\r
- STR_CANCEL = 469,\r
- STR_CONNECT_TIMEOUT = 470,\r
- STR_PLEASE_RESTART_CHAT = 471,\r
- STR_CONTINUE_CHAT = 472,\r
- STR_AIMODELS_DOUBAO = 473,\r
- STR_AIMODES_WENXINYIYAN = 474,\r
- STR_AIMODES_KIMI = 475,\r
- STR_AIMODES_CHATGPT = 476,\r
- STR_SLIDE_TO_SHUTDOWN = 477,\r
- STR_SLIDE_TO_REBOOT = 478,\r
- STR_AI_FAMILY_MEALS = 479,\r
- STR_CHAT = 480,\r
- STR_PCY4GC_OR_AS = 481,\r
- STR_API_KEYS = 482,\r
- STR_PGTTAF = 483,\r
- STR_DAFBS = 484,\r
- STR_OPENAI_API_KEYS = 485,\r
- STR_KHBB = 486,\r
- STR_GTAS = 487,\r
- STR_DYWTDAK = 488,\r
- STR_CONNECTING = 489,\r
- STR_CONNECTION_FAIL = 490,\r
- STR_PTALORTM = 491,\r
- STR_MOTION_DETECTION_WALK_NOTE = 492,\r
- STR_MOTION_DETECTION_RUN_NOTE = 493,\r
- STR_MOTION_DETECTION_RIDE_NOTE = 494,\r
- STR_MOTION_DETECTION_ROWING_NOTE = 495,\r
- STR_MOTION_DETECTION_ELLIPTICAL_NOTE = 496,\r
- STR_PE4GC = 497,\r
- STR_OBU_MESSAGE = 498,\r
- STR_DELETE = 499,\r
- STR_CHARGE = 500,\r
- STR_CHARGE_NOTE = 501,\r
- STR_STEP_FREQUENCY = 502,\r
- STR_STEP_LENGTH = 503,\r
- STR_AVG_PACE = 504,\r
- STR_TONGYI_QIANWEN = 505,\r
- STR_IFLYTEK_SPARK = 506,\r
- STR_DISTURBNOTE_OFF = 507,\r
- STR_4G_NOTE = 508,\r
- STR_MUSIC_PLAYER_SOURCE_NOTE = 509,\r
- STR_MUSIC_LIST_IS_EMPTY = 510,\r
- STR_BT_HEADSET_RESCAN = 511,\r
- STR_BT_HEADSET_NOFOND = 512,\r
- STR_SCHEDULE = 513,\r
- STR_SCHEDULE_TITLE = 514,\r
- STR_SCHEDULE_NO_DATA = 515,\r
- STR_SCHEDULE_NO_DATA_PROMPT = 516,\r
- STR_NO_PAIRED_DEV = 517,\r
- STR_IGNORE = 518,\r
- STR_START = 519,\r
- STR_ARC_SCALE_LIST_DISPLAY = 520,\r
- STR_COUNT_DOWN = 521,\r
- STR_CUSTOM_TIME = 522,\r
- STR_QUICK_START = 523,\r
- STR_1_MIN = 524,\r
- STR_5_MIN = 525,\r
- STR_10_MIN = 526,\r
- STR_30_MIN = 527,\r
- STR_SET_COUNT_DOWN_NOTE = 528,\r
- STR_COUNTDOWN_ENDS = 529,\r
- STR_MAXIMUM_TIME_REACH_NOTE = 530,\r
- STR_STOPWATCH_STOP_NOTE = 531,\r
- STR_TMCHBR = 532,\r
- STR_SCHEDULE_TOPIC = 533,\r
- STR_SCHEDULE_TIME = 534,\r
- STR_SCHEDULE_NOTES = 535,\r
- STR_SCHEDULE_DELETE_PROMPT = 536,\r
- STR_HANG_UP_OR_ANSWER = 537,\r
- STR_WATCH_CALL = 538,\r
- STR_PHONE_CALL = 539,\r
- STR_STEPS_OF_THE_DAY = 540,\r
- STR_MILEAGE = 541,\r
- STR_FAT_BURNING_TIME = 542,\r
- STR_NUMBER_OF_STANDS = 543,\r
- STR_CONSUME_CALORIES = 544,\r
- STR_GOAL_HINT = 545,\r
- STR_SLEEPMODE = 546,\r
- STR_SLEEP_MODE_PROMPT_ON = 547,\r
- STR_LOW_POWER_NOTIF_1 = 548,\r
- STR_LOW_POWER_NOTIF_2 = 549,\r
- STR_MAX_ID = 550,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE1 = 459,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE2 = 460,\r
+ STR_NEWDEVICE_BIND_REMIND_NOTE3 = 461,\r
+ STR_AI_VOICE = 462,\r
+ STR_AI_INTELLIGENT_ASSISTANT = 463,\r
+ STR_START_CHAT = 464,\r
+ STR_BOOT_FAILED = 465,\r
+ STR_ENABLE_MOBILE_DATA_FIRST = 466,\r
+ STR_ENABLE_BLUETOOTH_FIRST = 467,\r
+ STR_LISTENING = 468,\r
+ STR_FINISH_SPEAKING = 469,\r
+ STR_THINKING = 470,\r
+ STR_CANCEL = 471,\r
+ STR_CONNECT_TIMEOUT = 472,\r
+ STR_PLEASE_RESTART_CHAT = 473,\r
+ STR_CONTINUE_CHAT = 474,\r
+ STR_AIMODELS_DOUBAO = 475,\r
+ STR_AIMODES_WENXINYIYAN = 476,\r
+ STR_AIMODES_KIMI = 477,\r
+ STR_AIMODES_CHATGPT = 478,\r
+ STR_SLIDE_TO_SHUTDOWN = 479,\r
+ STR_SLIDE_TO_REBOOT = 480,\r
+ STR_AI_FAMILY_MEALS = 481,\r
+ STR_CHAT = 482,\r
+ STR_PCY4GC_OR_AS = 483,\r
+ STR_API_KEYS = 484,\r
+ STR_PGTTAF = 485,\r
+ STR_DAFBS = 486,\r
+ STR_OPENAI_API_KEYS = 487,\r
+ STR_KHBB = 488,\r
+ STR_GTAS = 489,\r
+ STR_DYWTDAK = 490,\r
+ STR_CONNECTING = 491,\r
+ STR_CONNECTION_FAIL = 492,\r
+ STR_PTALORTM = 493,\r
+ STR_MOTION_DETECTION_WALK_NOTE = 494,\r
+ STR_MOTION_DETECTION_RUN_NOTE = 495,\r
+ STR_MOTION_DETECTION_RIDE_NOTE = 496,\r
+ STR_MOTION_DETECTION_ROWING_NOTE = 497,\r
+ STR_MOTION_DETECTION_ELLIPTICAL_NOTE = 498,\r
+ STR_PE4GC = 499,\r
+ STR_OBU_MESSAGE = 500,\r
+ STR_DELETE = 501,\r
+ STR_CHARGE = 502,\r
+ STR_CHARGE_NOTE = 503,\r
+ STR_STEP_FREQUENCY = 504,\r
+ STR_STEP_LENGTH = 505,\r
+ STR_AVG_PACE = 506,\r
+ STR_TONGYI_QIANWEN = 507,\r
+ STR_IFLYTEK_SPARK = 508,\r
+ STR_DISTURBNOTE_OFF = 509,\r
+ STR_4G_NOTE = 510,\r
+ STR_MUSIC_PLAYER_SOURCE_NOTE = 511,\r
+ STR_MUSIC_LIST_IS_EMPTY = 512,\r
+ STR_BT_HEADSET_RESCAN = 513,\r
+ STR_BT_HEADSET_NOFOND = 514,\r
+ STR_SCHEDULE = 515,\r
+ STR_SCHEDULE_TITLE = 516,\r
+ STR_SCHEDULE_NO_DATA = 517,\r
+ STR_SCHEDULE_NO_DATA_PROMPT = 518,\r
+ STR_NO_PAIRED_DEV = 519,\r
+ STR_IGNORE = 520,\r
+ STR_START = 521,\r
+ STR_ARC_SCALE_LIST_DISPLAY = 522,\r
+ STR_COUNT_DOWN = 523,\r
+ STR_CUSTOM_TIME = 524,\r
+ STR_QUICK_START = 525,\r
+ STR_1_MIN = 526,\r
+ STR_5_MIN = 527,\r
+ STR_10_MIN = 528,\r
+ STR_30_MIN = 529,\r
+ STR_SET_COUNT_DOWN_NOTE = 530,\r
+ STR_COUNTDOWN_ENDS = 531,\r
+ STR_MAXIMUM_TIME_REACH_NOTE = 532,\r
+ STR_STOPWATCH_STOP_NOTE = 533,\r
+ STR_TMCHBR = 534,\r
+ STR_SCHEDULE_TOPIC = 535,\r
+ STR_SCHEDULE_TIME = 536,\r
+ STR_SCHEDULE_NOTES = 537,\r
+ STR_SCHEDULE_DELETE_PROMPT = 538,\r
+ STR_HANG_UP_OR_ANSWER = 539,\r
+ STR_WATCH_CALL = 540,\r
+ STR_PHONE_CALL = 541,\r
+ STR_STEPS_OF_THE_DAY = 542,\r
+ STR_MILEAGE = 543,\r
+ STR_FAT_BURNING_TIME = 544,\r
+ STR_NUMBER_OF_STANDS = 545,\r
+ STR_CONSUME_CALORIES = 546,\r
+ STR_GOAL_HINT = 547,\r
+ STR_SLEEPMODE = 548,\r
+ STR_SLEEP_MODE_PROMPT_ON = 549,\r
+ STR_LOW_POWER_NOTIF_1 = 550,\r
+ STR_LOW_POWER_NOTIF_2 = 551,\r
+ STR_MAX_ID = 552,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {