From: luozheng <1732036298@qq.com> Date: Mon, 22 Apr 2024 12:48:17 +0000 (+0800) Subject: 增加震动提醒功能 X-Git-Tag: release_V1.2.70_20241020_135402~1025^2~84 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=dc3a2d3f667d5c99ec4be7ca4a9c3d054585925f;p=mirrors%2FFD230.git 增加震动提醒功能 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 7dbc8cb53..499db9233 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -360,6 +360,7 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SystemVolumeView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/CallVolumePresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/CallVolumeView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/VibrationModeView.cpp #显示与亮度 ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h index e1bedb40d..2f7777c99 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h @@ -43,7 +43,7 @@ namespace OHOS CONFIGMODEL_ITEM_LANGUAGE_ID, //语言ID int id CONFIGMODEL_ITEM_LANGUAGE_CODE, //语言Code string "zh","en" CONFIGMODEL_ITEM_SILENT_MODE, //静音模式模式 - CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关, 0 关, 1 å¼±, 2 中,3 强 + CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关,0 强,1 中,2 å¼±,3 关 // CONFIGMODEL_ITEM_HRS_QUICKACCESS, // CONFIGMODEL_ITEM_SPO2_QUICKACCESS, CONFIGMODEL_ITEM_RAISE_TO_WAKE, //抬腕亮屏开关 @@ -123,8 +123,7 @@ namespace OHOS void SetpyVer(char *str); void SetmoderVer(char *str); - void SetVibrationReminder(int state); - int GetVibrationReminder(void); + void SetCat1_4Gability(bool state); bool GetCat1_4Gability(); @@ -149,6 +148,8 @@ namespace OHOS void SetCallVolume(int value); int GetCallVolume(void); + void SetVibrationReminder(int state); + int GetVibrationReminder(void); void SetSilentMode(bool state); bool GetSilentMode(void); @@ -168,7 +169,7 @@ namespace OHOS {ConfigDataType::DATATYPE_INT, "LanguageID", "-1" },//CONFIGMODEL_ITEM_LANGUAGE_ID, //默认没有选择语言 {ConfigDataType::DATATYPE_STRING, "LanguageCode", "zh" },//CONFIGMODEL_ITEM_LANGUAGE_CODE, //默认没有选择语言 {ConfigDataType::DATATYPE_BOOL, "SlientMode", "false" },//CONFIGMODEL_ITEM_SILENT_MODE, - {ConfigDataType::DATATYPE_INT, "VibratorSwitch", "1" },//CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关, 0 关, 1 å¼±, 2 中,3 强 + {ConfigDataType::DATATYPE_INT, "VibratorSwitch", "1" },//CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关,0 强,1 中,2 å¼±,3 关 // {ConfigDataType::DATATYPE_BOOL, "HRS_QuickAccess", "false"},//CONFIGMODEL_ITEM_HRS_SPO2_QUICKACCESS, // {ConfigDataType::DATATYPE_BOOL, "SPO2_QuickAccess", "false"},//CONFIGMODEL_ITEM_HRS_SPO2_QUICKACCESS, {ConfigDataType::DATATYPE_BOOL, "Rase2Wake", "true" },//CONFIGMODEL_ITEM_RAISE_TO_WAKE, diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModelC.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModelC.h index 691618415..be5d7976c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModelC.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModelC.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-17 09:32:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-22 10:54:51 + * @LastEditTime: 2024-04-22 18:06:14 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModelC.h */ #ifndef _CONFIG_MODEL_C_H_ @@ -51,6 +51,10 @@ void initializeRaiseToWake(void); */ void initializeVolume(void); +/* + * @brief 初始化震动模式 + */ +void initializeVibrationModel(void); /* * @brief 初始化静音模式 */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp index d36ff1968..ceab7a73f 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp @@ -576,11 +576,11 @@ namespace OHOS /* * @brief 设置震动模式强度 - * @param 马达 开关, 0 关, 1 å¼±, 2 中,3 强 + * @param 马达 开关,0 强,1 中,2 å¼±,3 关 */ void ConfigModel::SetVibrationReminder(int state) { - set_condigData_Bool(CONFIGMODEL_ITEM_VIBRATOR_SWITCH,state); + set_condigData_Int(CONFIGMODEL_ITEM_VIBRATOR_SWITCH,state); } /*获取震动模式强度*/ @@ -814,9 +814,16 @@ void initializeVolume(void) uapi_callVolumeSet(callVolume); } +void initializeVibrationModel(void) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "initializeVibrationModel"); + int value = OHOS::ConfigModel::GetInstance()->GetVibrationReminder(); + uapi_vibrationModeSet(value); +} + void initializeSilentModel(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "initializeVolume"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "initializeSilentModel"); bool isopen = OHOS::ConfigModel::GetInstance()->GetSilentMode(); uapi_setSilentMode(isopen); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationModel.h b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationModel.h index b22c34ffa..162e6338f 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationModel.h @@ -1,3 +1,10 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-02-23 09:17:12 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-04-22 17:39:22 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationModel.h + */ #ifndef SOUND_AND_VIBRATION_MODEL_H #define SOUND_AND_VIBRATION_MODEL_H @@ -8,7 +15,8 @@ namespace OHOS public: static SoundAndVibrationModel *GetInstance(void); - void SetVibrationReminderToggleButtonStaus(bool value); + void SetVibrationReminderToggleButtonStaus(int value); + int GetVibrationReminderToggleButtonStaus(); void SetSilentModeToggleButtonStatus(bool value); bool GetSilentModeToggleButtonStatus(void); @@ -17,10 +25,6 @@ namespace OHOS SoundAndVibrationModel(const SoundAndVibrationModel &); SoundAndVibrationModel &operator=(const SoundAndVibrationModel &); virtual ~SoundAndVibrationModel(); - - private: - bool VibrationReminderToggleButtonState{false}; // “震动提醒”切换按钮状态 - bool SilentModeToggleButtonState{false}; // “静音模式”切换按钮状态 }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h index eca2e78b9..d3cbfa6c9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-02-19 10:39:08 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-18 18:05:12 + * @LastEditTime: 2024-04-22 16:09:04 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h */ #ifndef SOUND_AND_VIBRATION_PRESENTER_H @@ -21,6 +21,7 @@ namespace OHOS public UIView::OnClickListener, public RootView::OnKeyActListener, public UICheckBox::OnChangeListener, + public UIView::OnRotateListener, public UIView::OnDragListener { public: @@ -41,6 +42,8 @@ namespace OHOS bool OnDragEnd(UIView &view, const DragEvent &event) override; bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 bool OnChange(UICheckBox::UICheckBoxState state) override; + bool OnRotate(UIView& view, const RotateEvent& event); + bool OnRotateEnd(UIView& view, const RotateEvent& event); }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationView.h b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationView.h index 5bdef0ae1..df21fdb43 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationView.h @@ -8,6 +8,8 @@ #include "components/ui_label_button_ext.h" #include "components/ui_toggle_button.h" #include "iostream" +#include "soundandvibration/include/VibrationModeView.h" + namespace OHOS { /* ---------------------------------- 组件ID ---------------------------------- */ @@ -15,6 +17,13 @@ namespace OHOS static constexpr const char *CALL_VOLUME_BUTTON = "CallVolumeButton"; // 通话音量按钮ID static constexpr const char *VIBRATION_REMINDER_BUTTON = "VibrationReminderButton"; // 震动模式按钮ID static constexpr const char *SILENT_MODE_BUTTON = "SilentModeButton"; // 静音模式按钮ID + typedef enum + { + SOUNDANDVIBRATIONVIEW = 0, // 声音与震动 + VIBRATIONMODEVIEW, // 震动模式 + MAX_SOUNDANDVIBRATIONVIEWID, + } SOUNDANDVIBRATIONVIEWID; + class SoundAndVibrationPresenter; class SoundAndVibrationView : public View { @@ -26,22 +35,26 @@ namespace OHOS int16_t y; int16_t w; int16_t h; - const char * ViewId; + const char *ViewId; std::string Text; }; SoundAndVibrationView(); virtual ~SoundAndVibrationView(); static SoundAndVibrationView *GetInstance(void); - - void SetSilentModeToggleButtonState(bool value); - bool GetSilentModeToggleButtonState(void); - UIToggleButton *GetSilentModeToggleButton(); + bool ChangeSoundAndVibrationView(int16_t thisView); + bool ChangeVibrationModeView(int16_t thisView); + bool ClickFunc(int16_t interface); + void ChangeView(int16_t hideView, int16_t showView); + VibrationModeView*GetVibrationModeView(void); void OnStart() override; void OnSetUpView() override; void OnTearDownView() override; void OnStop() override; + private: + VibrationModeView *vibrationModeView{nullptr}; + private: void InitView(void); void ClearAll(void); @@ -52,13 +65,13 @@ namespace OHOS bool InitSoundAndVibrationToggleButton(void); private: - UIScrollView *SoundAndVibrationScrollView{nullptr}; + UIScrollView *SoundAndVibrationScrollView[MAX_SOUNDANDVIBRATIONVIEWID]{nullptr}; UILabelExt *Title{nullptr}; // 标题:“声音与震动” UILabelButtonExt *SystemVolumeButton{nullptr}; // 系统音量按钮 UILabelButtonExt *CallVolumeButton{nullptr}; // 通话音量按钮 UILabelButtonExt *VibrationReminderButton{nullptr}; // 震动提醒按钮 UILabelButtonExt *SilentModeButton{nullptr}; // 静音模式按钮 - UIToggleButton *SilentModeToggleButton{nullptr}; // 静音模式切换按钮 + UIToggleButton *SilentModeToggleButton{nullptr}; // 静音模式切换按钮 }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationVolumeSettingC.h b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationVolumeSettingC.h index 03ce63cc3..e0c3a9743 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationVolumeSettingC.h +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationVolumeSettingC.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-19 18:59:49 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-22 11:26:38 + * @LastEditTime: 2024-04-22 18:35:35 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationVolumeSettingC.h */ #ifndef SOUND_AND_VIBRATION_VOLUME_SETTINGC_H @@ -19,7 +19,8 @@ extern "C" void SystemVolumeSet(int16_t sounding); void CallVolumeSet(int16_t sounding); - bool SilentModelSet(bool isopen); + void VibationModeSet(int value); + void SilentModelSet(bool isopen); #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/VibrationModeView.h b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/VibrationModeView.h new file mode 100644 index 000000000..c3ea861f0 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/VibrationModeView.h @@ -0,0 +1,39 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-04-22 14:35:10 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-04-22 16:59:48 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/VibrationModeView.h + */ +#ifndef VIBRATION_MODE_H +#define VIBRATION_MODE_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_picker.h" +#include "components/ui_label_button_ext.h" + +namespace OHOS +{ + class VibrationModeView + { + public: + VibrationModeView(); + ~VibrationModeView(); + static VibrationModeView *GetInstance(); + UIScrollView *VibrationModeViewInit(void); + UIScrollView *GetVibrationModeScrollView(void); + UILabelButtonExt *GetVibrationModeLabelButton(void); + UIPicker *GetVibrationModePicker(void); + + private: + void ClearAll(); + UIScrollView *scrollView{nullptr}; + UILabelExt *Title = nullptr; + UIPicker *VibrationModePicker = nullptr; + UILabelButtonExt *VibrationModeLabelButton = nullptr; + }; + +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationModel.cpp index 42213cbf0..05ee085cb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationModel.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-02-23 09:17:00 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-22 10:30:00 + * @LastEditTime: 2024-04-22 17:43:36 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationModel.cpp */ #include "soundandvibration/include/SoundAndVibrationModel.h" @@ -12,12 +12,7 @@ namespace OHOS { - SoundAndVibrationModel::SoundAndVibrationModel() - { - ConfigModel *p_ConfigModel = ConfigModel::GetInstance(); - VibrationReminderToggleButtonState = p_ConfigModel->GetVibrationReminder(); - SilentModeToggleButtonState = p_ConfigModel->GetSilentMode(); - } + SoundAndVibrationModel::SoundAndVibrationModel() {} SoundAndVibrationModel::~SoundAndVibrationModel() {} @@ -27,11 +22,17 @@ namespace OHOS return &instance; } - /// @brief 设置“震动提醒”是否开启 + /// @brief 设置“震动模式”强度 /// @param value - void SoundAndVibrationModel::SetVibrationReminderToggleButtonStaus(bool value) + void SoundAndVibrationModel::SetVibrationReminderToggleButtonStaus(int value) + { + ConfigModel::GetInstance()->SetVibrationReminder(value); + } + + //获取震动强度 + int SoundAndVibrationModel::GetVibrationReminderToggleButtonStaus() { - VibrationReminderToggleButtonState = value; + ConfigModel::GetInstance()->GetVibrationReminder(); } /// @brief 设置“静音模式”是否开启 diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp index d7f11ebe9..d2a3eab89 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-02-19 10:39:11 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-22 11:27:48 + * @LastEditTime: 2024-04-22 18:05:00 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp */ @@ -76,12 +76,26 @@ namespace OHOS bool SoundAndVibrationPresenter::OnDragEnd(UIView &view, const DragEvent &event) { - UNUSED(view); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationPresenter::OnDragEnd"); + SoundAndVibrationView *p_SoundAndVibrationView = SoundAndVibrationView::GetInstance(); + if (p_SoundAndVibrationView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationPresenter::GetInstance() fail!!"); + return false; + } + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().Back(); + if (&view == p_SoundAndVibrationView->GetVibrationModeView()->GetVibrationModeScrollView()) + { + SoundAndVibrationView::GetInstance()->ChangeView(VIBRATIONMODEVIEW, SOUNDANDVIBRATIONVIEW); + } + else + { + NativeAbility::GetInstance().Back(); + } } + return true; } @@ -113,7 +127,15 @@ namespace OHOS } else if (strcmp(view.GetViewId(), VIBRATION_REMINDER_BUTTON) == 0) { - NativeAbility::GetInstance().EnterSlice(VIEW_SYSTEM_VOLUME); + SoundAndVibrationView::GetInstance()->ChangeView(SOUNDANDVIBRATIONVIEW, VIBRATIONMODEVIEW); + } + else if (&view == SoundAndVibrationView::GetInstance()->GetVibrationModeView()->GetVibrationModeLabelButton()) + { + int VibrationMode = SoundAndVibrationView::GetInstance()->GetVibrationModeView()->GetVibrationModePicker()->GetSelected(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationMode = %d", VibrationMode); + VibationModeSet(VibrationMode); + SoundAndVibrationModel::GetInstance()->SetVibrationReminderToggleButtonStaus(VibrationMode); + SoundAndVibrationView::GetInstance()->ChangeView(VIBRATIONMODEVIEW, SOUNDANDVIBRATIONVIEW); } return true; } @@ -125,16 +147,31 @@ namespace OHOS { case UICheckBox::SELECTED: WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SilentMode is enable!"); - p_SoundAndVibrationModel->SetSilentModeToggleButtonStatus(SilentModelSet(true)); + SilentModelSet(true); + p_SoundAndVibrationModel->SetSilentModeToggleButtonStatus(true); break; case UICheckBox::UNSELECTED: WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SilentMode is disable!"); - p_SoundAndVibrationModel->SetSilentModeToggleButtonStatus(SilentModelSet(false)); + SilentModelSet(false); + p_SoundAndVibrationModel->SetSilentModeToggleButtonStatus(false); break; default: break; } - return false; + return true; } + bool SoundAndVibrationPresenter::OnRotate(UIView &view, const RotateEvent &event) + { + UNUSED(view); + UNUSED(event); + return true; + } + + bool SoundAndVibrationPresenter::OnRotateEnd(UIView &view, const RotateEvent &event) + { + UNUSED(view); + UNUSED(event); + return true; + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp index 02b8a3092..56942955b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-02-19 10:39:14 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-22 10:33:47 + * @LastEditTime: 2024-04-22 16:53:42 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp */ #include "soundandvibration/include/SoundAndVibrationView.h" @@ -48,9 +48,9 @@ namespace OHOS void SoundAndVibrationView::ClearAll() { - if (SoundAndVibrationScrollView != nullptr) + if (SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW] != nullptr) { - SoundAndVibrationScrollView->RemoveAll(); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->RemoveAll(); delete Title; Title = nullptr; @@ -70,8 +70,14 @@ namespace OHOS delete SilentModeToggleButton; SilentModeToggleButton = nullptr; - delete SoundAndVibrationScrollView; - SoundAndVibrationScrollView = nullptr; + delete SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]; + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW] = nullptr; + } + + if (vibrationModeView != nullptr) + { + delete vibrationModeView; + vibrationModeView = nullptr; } } @@ -80,25 +86,25 @@ namespace OHOS /// @return true 初始化成功 false 初始化失败 bool SoundAndVibrationView::InitSoundAndVibrationScrollView(void) { - SoundAndVibrationScrollView = new UIScrollView(); - if (SoundAndVibrationScrollView == nullptr) + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW] = new UIScrollView(); + if (SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView::new SoundAndVibrationScrollView fail!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView::new SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW] fail!"); return false; } - SoundAndVibrationScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - SoundAndVibrationScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); - SoundAndVibrationScrollView->SetScrollBlankSize(35); - SoundAndVibrationScrollView->SetReboundSize(50); - SoundAndVibrationScrollView->SetDirection(1); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetScrollBlankSize(35); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetReboundSize(50); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetDirection(1); UIView::OnDragListener *draglistener = static_cast(SoundAndVibrationPresenter::GetInstance()); if (draglistener == nullptr) { return false; } - SoundAndVibrationScrollView->SetOnDragListener(draglistener); - SoundAndVibrationScrollView->SetTouchable(true); - SoundAndVibrationScrollView->SetDraggable(true); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetOnDragListener(draglistener); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetTouchable(true); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetDraggable(true); return true; } @@ -218,27 +224,6 @@ namespace OHOS return true; } - /// @brief 获取"静音模式"按钮开,关状态 - /// @param void - /// @return true 开 false 关 - bool SoundAndVibrationView::GetSilentModeToggleButtonState(void) - { - return SilentModeToggleButton->GetState(); - } - - /// @brief 设置"静音模式"按钮开,关状态 - /// @param value - void SoundAndVibrationView::SetSilentModeToggleButtonState(bool value) - { - SilentModeToggleButton->SetState(value); - } - - /// @brief 获取"静音模式"切换按钮 - UIToggleButton *SoundAndVibrationView::GetSilentModeToggleButton(void) - { - return SilentModeToggleButton; - } - void SoundAndVibrationView::InitView(void) { if (InitSoundAndVibrationScrollView() == false) @@ -270,13 +255,13 @@ namespace OHOS void SoundAndVibrationView::OnSetUpView() { View::OnSetUpView(); - SoundAndVibrationScrollView->Add(Title); - SoundAndVibrationScrollView->Add(SystemVolumeButton); - SoundAndVibrationScrollView->Add(CallVolumeButton); - SoundAndVibrationScrollView->Add(VibrationReminderButton); - SoundAndVibrationScrollView->Add(SilentModeButton); - SoundAndVibrationScrollView->Add(SilentModeToggleButton); - RootView::GetInstance()->Add(SoundAndVibrationScrollView); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(Title); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(SystemVolumeButton); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(CallVolumeButton); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(VibrationReminderButton); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(SilentModeButton); + SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(SilentModeToggleButton); + RootView::GetInstance()->Add(SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]); Draw(); } @@ -292,7 +277,90 @@ namespace OHOS View::OnStop(); RootView::GetInstance()->ClearOnKeyActListener(); + RootView::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); return; } + + /* -------------------------------------------------------------------------- */ + // 声音与震动界面 + bool SoundAndVibrationView::ChangeSoundAndVibrationView(int16_t thisView) + { + if (SoundAndVibrationScrollView[thisView] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView::ChangeSoundAndVibrationView"); + RootView::GetInstance()->Add(SoundAndVibrationScrollView[thisView]); + } + return true; + } + + // 震动模式界面 + bool SoundAndVibrationView::ChangeVibrationModeView(int16_t thisView) + { + if (SoundAndVibrationScrollView[thisView] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView::ChangeVibrationModeView"); + vibrationModeView = new VibrationModeView(); + if (vibrationModeView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView:: new scrollView[%d] fail", thisView); + return false; + } + SoundAndVibrationScrollView[thisView] = vibrationModeView->VibrationModeViewInit(); + RootView::GetInstance()->Add(SoundAndVibrationScrollView[thisView]); + } + return true; + } + + struct SoundAndVibrationViewMapper + { + const int16_t viewId; + bool (SoundAndVibrationView::*func)(int16_t thisView); + }; + + static const SoundAndVibrationViewMapper ViewMapper[] = { + {SOUNDANDVIBRATIONVIEW, &SoundAndVibrationView::ChangeSoundAndVibrationView}, + {VIBRATIONMODEVIEW, &SoundAndVibrationView::ChangeVibrationModeView}, + }; + + bool SoundAndVibrationView::ClickFunc(int16_t interface) + { + int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]); + for (int i = 0; i < funcSize; i++) + { + if (interface == ViewMapper[i].viewId) + { + bool jug = (this->*(ViewMapper[i].func))(interface); + if (jug == false) + { + return false; + } + return true; + } + } + return false; + } + + void SoundAndVibrationView::ChangeView(int16_t hideView, int16_t showView) + { + if (hideView > MAX_SOUNDANDVIBRATIONVIEWID) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView:: SystemViewId Overstep ones bounds"); + return; + } + SoundAndVibrationScrollView[hideView]->SetVisible(false); + ClickFunc(showView); + SoundAndVibrationScrollView[showView]->SetVisible(true); + Draw(); + } + /* -------------------------------------------------------------------------- */ + + VibrationModeView *SoundAndVibrationView::GetVibrationModeView(void) + { + if (vibrationModeView != nullptr) + { + return vibrationModeView; + } + return nullptr; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationVolumeSettingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationVolumeSettingPresenter.cpp index bcc40fae3..f835cd9b4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationVolumeSettingPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationVolumeSettingPresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-19 10:08:31 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-22 11:28:47 + * @LastEditTime: 2024-04-22 20:26:10 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationVolumeSettingPresenter.cpp */ #include "soundandvibration/include/SoundAndVibrationVolumeSettingPresenter.h" @@ -13,6 +13,8 @@ #include "phoneservice/include/PhoneAudio.h" #include "phoneservice/include/PhoneService.h" #include "../../../../../../middleware/services/media/foundation/audiomanager/frameworks/audioservice/include/audio_service.h" +#include "vibrator_service.h" + namespace OHOS { @@ -150,6 +152,7 @@ extern "C" #endif /* __cplusplus */ #endif /* __cplusplus */ + extern void custom_VibratorFunc_int(int vibratorType); /* * @brief 系统音量设置 */ @@ -170,11 +173,19 @@ extern "C" } /* - * @brief 静音模式设置 - */ - bool SilentModelSet(bool isopen) + * @brief 震动模式设置 + */ + void VibationModeSet(int value) + { + custom_VibratorFunc_int(value); + } + + /* + * @brief 静音模式设置 + */ + void SilentModelSet(bool isopen) { - return AudioServiceSetMasterMute(isopen); + AudioServiceSetMasterMute(isopen); } #ifdef __cplusplus #if __cplusplus diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/VibrationModeView.cpp b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/VibrationModeView.cpp new file mode 100644 index 000000000..cca796c76 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/VibrationModeView.cpp @@ -0,0 +1,207 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-04-22 14:35:22 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-04-22 19:08:26 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/VibrationModeView.cpp + */ +#include "soundandvibration/include/VibrationModeView.h" +#include "soundandvibration/include/SoundAndVibrationPresenter.h" +#include "wearable_log.h" +#include "config/include/ConfigModel.h" + +namespace OHOS +{ + + static VibrationModeView *g_pVibrationModeView{nullptr}; + + VibrationModeView::VibrationModeView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationModeView::VibrationModeView"); + g_pVibrationModeView = this; + } + + VibrationModeView::~VibrationModeView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationModeView::~VibrationModeView"); + ClearAll(); + g_pVibrationModeView = nullptr; + } + + VibrationModeView *VibrationModeView::GetInstance() + { + return g_pVibrationModeView; + } + + void VibrationModeView::ClearAll() + { + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (Title != nullptr) + { + delete Title; + Title = nullptr; + } + + if (VibrationModePicker != nullptr) + { + delete VibrationModePicker; + VibrationModePicker = nullptr; + } + + if (VibrationModeLabelButton != nullptr) + { + delete VibrationModeLabelButton; + VibrationModeLabelButton = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + UIScrollView *VibrationModeView::VibrationModeViewInit(void) + { + if (scrollView == nullptr) + { + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationModeView::scrollView is nullptr!"); + return nullptr; + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0); + UIView::OnDragListener *dragListener = static_cast(SoundAndVibrationPresenter::GetInstance()); + if (dragListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationPresenter::GetInstance() fail!!"); + return nullptr; + } + scrollView->SetOnDragListener(dragListener); + /* -------------------------------------------------------------------------- */ + Title = new UILabelExt(); + if (Title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationModeView::Title is nullptr!"); + return nullptr; + } + Title->SetPosition(93, 52, 280, 40); + Title->SetStyle(STYLE_TEXT_FONT, 30); + Title->SetStyle(STYLE_LINE_HEIGHT, 35); + Title->SetText("震动模式"); + Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + Title->SetRollSpeed(40); + Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView->Add(Title); + /* -------------------------------------------------------------------------- */ + VibrationModePicker = new UIPicker(); + if (VibrationModePicker == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationModeView::VibrationModePicker is nullptr!"); + return nullptr; + } + VibrationModePicker->SetPosition(43, 110, 380, 240); + VibrationModePicker->SetViewId("VibrationModePicker"); + VibrationModePicker->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + VibrationModePicker->SetItemHeight(80); + VibrationModePicker->SetLoopState(true); + VibrationModePicker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 设置普通文本大小 + VibrationModePicker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 设置高光文本大小 + VibrationModePicker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4F, 0xC3, 0x4C, 0xff)); + /* -------------------------------------------------------------------------- */ + UIView::OnRotateListener *RotateListener = static_cast(SoundAndVibrationPresenter::GetInstance()); + VibrationModePicker->SetOnRotateListener(RotateListener); + // 增加表冠控制 + VibrationModePicker->SetRotateFactor(2); + VibrationModePicker->RequestFocus(); + /* -------------------------------------------------------------------------- */ + const char *translations[][4] = { + "强", "中", "å¼±", "无", // 中文 + "Strong", "Medium", "Weak", "None", // 英语 + "強い", "中間", "弱い", "なし", // 日语 + "강한", "중간", "약한", "없음", // 韩语 + "Fuerte", "Medio", "Débil", "Ninguno", // 西班牙语 + "сильный", "средний", "слабый", "ничего", // 俄语 + "jak", "średni", "słaby", "nic", // 克罗地亚语 + "stark", "mittel", "schwach", "keiner", // 德语 + "Forte", "Médio", "Fraco", "Nenhum", // 葡萄牙语 + "fort", "moyen", "faible", "aucun", // 法语 + "sterk", "gemiddeld", "zwak", "geen", // 荷兰语 + "forte", "medio", "debole", "nessuno", // 意大利语 + "silný", "střední", "slabý", "nic", // 捷克语 + "ισχυρός", "μέτριος", "αδύναμος", "κανένας", // 希腊语 + "मजबूत", "मध्यम", "कमजोर", "कोई नहीं", // 印地语 + "kuat", "sedang", "lemah", "tidak ada", // 印尼语 + "kuat", "sederhana", "lemah", "tidak ada", // 马来语 + "silny", "średni", "słaby", "brak", // 波兰语 + "แข็งแกร่ง", "กลาง", "อ่อนแอ", "ไม่มี", // 泰语 + "mạnh", "trung bình", "yếu", "không", // 越南语 + "vahva", "keskiverto", "heikko", "ei mitään", // 芬兰语 + "puternic", "mediu", "slab", "nimic", // 罗马尼亚语 + "güçlü", "orta", "zayıf", "hiçbiri", // 土耳其语 + "قوی", "متوسط", "ضعیف", "هیچ", // 波斯语 + "قوي", "متوسط", "ضعيف", "لا شيء", // 阿拉伯语 + "חָזָק", "בֵּינוֹנִי", "חַלָשׁ", "אֵין", // 希伯来语 + "сильний", "середній", "слабкий", "нічого", // 乌克兰语 + "stark", "medium", "svag", "ingen", // 瑞典语 + "kuchli", "o'rtacha", "kam", "hech", // 乌兹别克语 + "güclü", "orta", "zəif", "heç biri" // 阿塞拜疆语 + }; + int languageid = ConfigModel::GetInstance()->GetLanguage(); + VibrationModePicker->SetValues(translations[languageid], 4); + VibrationModePicker->SetSelected(ConfigModel::GetInstance()->GetVibrationReminder()); + scrollView->Add(VibrationModePicker); + /* -------------------------------------------------------------------------- */ + VibrationModeLabelButton = new UILabelButtonExt(); + if (VibrationModeLabelButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationModeView::VibrationModeLabelButton is nullptr!"); + return nullptr; + } + VibrationModeLabelButton->SetPosition(0, 366, 466, 100); + VibrationModeLabelButton->SetViewId("labelButton1"); + const char *ImgSrc = "/user/res/466x100button.bin"; + VibrationModeLabelButton->SetImageSrc(ImgSrc, ImgSrc); + VibrationModeLabelButton->SetText("确定"); + VibrationModeLabelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + VibrationModeLabelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED); + VibrationModeLabelButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); + VibrationModeLabelButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + UIView::OnClickListener *clickListener = static_cast(SoundAndVibrationPresenter::GetInstance()); + VibrationModeLabelButton->SetOnClickListener(clickListener); + scrollView->Add(VibrationModeLabelButton); + } + return scrollView; + } + + UIScrollView *VibrationModeView::GetVibrationModeScrollView(void) + { + if (scrollView != nullptr) + { + return scrollView; + } + return nullptr; + } + + UILabelButtonExt *VibrationModeView::GetVibrationModeLabelButton(void) + { + if (VibrationModeLabelButton != nullptr) + { + return VibrationModeLabelButton; + } + return nullptr; + } + + UIPicker *VibrationModeView::GetVibrationModePicker(void) + { + if (VibrationModePicker != nullptr) + { + return VibrationModePicker; + } + return nullptr; + } +} \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 7290d6733..52ed95dde 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -224,6 +224,7 @@ void startup_post_init_task(void) initializeScreenDuration(); initializeRaiseToWake(); initializeVolume(); + initializeVibrationModel(); initializeSilentModel(); LOS_Msleep(5000); @@ -636,6 +637,12 @@ void uapi_callVolumeSet(int16_t sounding) CallVolumeSet(sounding); } +//震动强度设置 +void uapi_vibrationModeSet(int value) +{ + VibationModeSet(value); +} + //设置是否静音 void uapi_setSilentMode(bool isopen) { diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 48a041da7..78a463f1b 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -61,6 +61,7 @@ int32_t uapi_get_screen_state(void); void uapi_systemVolumeSet(int16_t sounding); void uapi_callVolumeSet(int16_t sounding); +void uapi_vibrationModeSet(int value); void uapi_setSilentMode(bool isopen); errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr); diff --git a/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp b/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp index 3330e54a0..609ab56d2 100644 --- a/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp +++ b/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp @@ -75,6 +75,32 @@ void custom_VibratorFunc(OHOS::VibratorType vibratorType) } +void custom_VibratorFunc_int(int vibratorType) +{ + vibrator_cmd_t mail = {0}; + switch (vibratorType) + { + case 0: + mail.cycle_time_ms = 200; + mail.duty = 20; + mail.duration_time_ms = 500; + break; + case 1: + mail.cycle_time_ms = 200; + mail.duty = 20; + mail.duration_time_ms = 200; + break; + case 2: + mail.cycle_time_ms = 200; + mail.duty = 20; + mail.duration_time_ms = 100; + break; + default: + break; + } + + do_vibrator_cmd(mail); +} #define MAG_CHECK_MS 20 static unsigned long g_app_queue;