//头文件加下面
#include "languagecode/include/LanguageSwitchModel.h"
#include "graphic_config.h"
+#include <ConfigModelC.h>
+#include "rebootandshutdown/include/RebootAndShutdownModel.h"
+#include <custom_utils.h>
namespace OHOS {
}
// 初始化所有预加载slice
InitAllNativeSlices();
+
+ PlayersModel::GetInstance()->AudioInit();//音乐初始化
+ RebootAndShutdownModel::GetInstance().RegisterAllKeyEvents();// 注册按键事件
+ //音乐列表初始化,放在nativelauncher 初始化,防止手表连接耳机时,操控耳机控制手表音乐造成死机
+ do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MUSICNAME_READ, nullptr, 0);
+ cm_initScreenBrightness();// 初始化屏幕亮度
+ cm_initializeScreenDuration();// 初始化屏幕时长
+
#ifdef FD230_650
CallerLogModel::GetInstance()->InitPhoneService();
GoalModel::GetInstance().GoalModelInitdata();//活动数据初始化
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: VolumeSettingView view
- * Create: 2021-09-5
- */
-
#ifndef VOLUME_SETTING_PRESENTER_H
#define VOLUME_SETTING_PRESENTER_H
#include "components/ui_view_group.h"
#include "components/ui_slider.h"
#include "VolumeSettingView.h"
-// #include "player/include/PlayersView.h"
+#include "player/include/PlayersView.h"
namespace OHOS {
#define INCREASE_BUTTON "increaseButton"
#define VOLUME_VIEW "volumeview"
typedef enum : uint16_t {
- VOLUMEPHONE = 1,
- VOLUMEPLAYERS = 3,
+ VOLUMEPHONE = 1, //声音系数为:手机
+ VOLUMEPLAYERS = 3,//声音系数为音乐播放器
VOLUMEPHONENOTIFY = 4,
} VolumeFactor;
class VolumeSettingView;
class VolumeSliderEventListener : public UISlider::UISliderEventListener,
public UIView::OnClickListener,
+ public UIView::OnRotateListener,
public UIView::OnDragListener {
public:
VolumeSliderEventListener(VolumeSettingView *volumeSetting);
void ChangeVolume(VolumeChangeStatus status);
bool OnClick(UIView& view, const ClickEvent& event) override;
bool OnDrag(UIView& view, const DragEvent& event) override;
+ bool OnRotateEnd(UIView& view, const RotateEvent& event);
void SetPlayerCoefficients(int16_t value);
void BtAndLocalVolumeSet(int16_t sounding);
private:
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: VolemeSettingView view\r
- * Create: 2021-09-5\r
- */\r
-\r
#ifndef VOLUME_SETTING_VIEW_H\r
#define VOLUME_SETTING_VIEW_H\r
\r
#include "components/ui_button.h"\r
#include "components/ui_view_group.h"\r
#include "components/ui_slider.h"\r
-\r
+#include "player/include/PlayersView.h"\r
#include "wearable_log.h"\r
#include "VolumeSettingPresenter.h"\r
\r
public:\r
VolumeSettingView();\r
~VolumeSettingView();\r
- int16_t sounding{0};\r
+ int16_t sounding{0}; //音量值\r
\r
UISlider *GetProgress(void);\r
bool SetUpVolume(void);\r
UISlider *progress{nullptr};\r
UIButton *increaseButton{nullptr};\r
UIButton *decreaseButton{nullptr};\r
+ UIImageView *VolumeVetor{nullptr};\r
int ShowVolume();\r
};\r
} // namespace OHOS\r
#include "notification_manager.h"\r
#include "BluetoothHeadsetEvent.h"\r
#include "bts_avrcp_controller.h"\r
-#include "PlayersView.h"\r
+#include "ConfigModel.h"\r
+#include "vibrator_service.h"\r
+#include <custom_utils.h>\r
\r
namespace OHOS {\r
\r
}\r
\r
if (playerCoefficients == VOLUMEPLAYERS) {\r
- BtAndLocalVolumeSet(volumeSettingView->sounding);\r
+ BtAndLocalVolumeSet(volumeSettingView->sounding); /*蓝牙耳机音乐调节*/\r
}\r
if (playerCoefficients == VOLUMEPHONE || playerCoefficients == VOLUMEPHONENOTIFY) {\r
- unsigned char volumeValue = (unsigned char) ((double) (volumeSettingView->sounding * CALL_VOLUME_MAX) / (VOLUME_MAX - VOLUME_MIN)); // 音量转换\r
- SetSpeakerVolume(volumeValue);\r
+ // unsigned char volumeValue = (unsigned char) ((double) (volumeSettingView->sounding * CALL_VOLUME_MAX) / (VOLUME_MAX - VOLUME_MIN)); // 音量转换\r
+ SetSpeakerVolume((unsigned char)volumeSettingView->sounding);\r
}\r
}\r
\r
+//蓝牙耳机音量映射 (40 - 127)\r
+static int mapVolume(int volume) \r
+{\r
+ // 音量映射\r
+ if(volume <= 0)\r
+ return AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_0;\r
+ else if (volume >= 100)\r
+ return AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;\r
+ else if (volume > 0 && volume <= 10)\r
+ return (10 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;\r
+ else if (volume > 10 && volume <= 20)\r
+ return (20 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;\r
+ else if (volume > 20 && volume <= 30)\r
+ return (30 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;\r
+ else if (volume > 30 && volume <= 40)\r
+ return (40 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;\r
+ else \r
+ return volume * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100;\r
+}\r
+\r
extern BtAvrcpTgInf g_avrcp_srv_inf;\r
void VolumeSliderEventListener::BtAndLocalVolumeSet(int16_t sounding)\r
{\r
if (g_avrcp_srv_inf.avrcp_srv_conn_stat == PROFILE_STATE_CONNECTED) {\r
- uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp volume = %d", volume);\r
+ // uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值\r
+ uint8_t volume = mapVolume(sounding);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "手表音量设置同步远端BT音量 %d", volume);\r
(void)avrcp_ct_set_absolute_volume(&(g_avrcp_srv_inf.bd_addr), volume); // 手表音量设置同步远端BT音量\r
}\r
+ /* -------------------------- 若ct或tg端是已连接状态且当前为手机音乐 ------------------------- */\r
+ if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && PlayersModel::GetInstance()->GetMusicSource())\r
+ {\r
+ uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值\r
+ BtAvrcpVolumeChangedSyncMedia(volume);// 手表音量设置同步手机音量\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audio volume = %d", sounding);\r
- AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, sounding); // 本地音量设置\r
+ // AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, sounding); // 本地音量设置\r
+ uapi_systemVolumeSet(sounding);//本地音量设置\r
}\r
\r
void VolumeSliderEventListener::OnRelease(int32_t value)\r
void VolumeSliderEventListener::OnChange(int32_t value)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnChange %d", value);\r
- ChangeVolume(VOLUMEDRAG);\r
+ // ChangeVolume(VOLUMEDRAG);\r
+}\r
+\r
+bool VolumeSliderEventListener::OnRotateEnd(UIView& view, const RotateEvent& event)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSliderEventListener::OnRotateEnd");\r
+ UISlider *slider = dynamic_cast<UISlider *>(&view);\r
+ UISlider *progress = volumeSettingView->GetProgress();\r
+ if (slider != nullptr && progress != nullptr)\r
+ {\r
+ if (slider == progress)\r
+ {\r
+ ChangeVolume(VOLUMEDRAG);\r
+ ui_api_vibrate_once_func();//受设置中震动强度控制\r
+ }\r
+ }\r
+ return true;\r
}\r
\r
bool VolumeSliderEventListener::OnDrag(UIView& view, const DragEvent& event)\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDrag:playersView new fail");\r
return false;\r
}\r
- volumeSettingView->SetVisible(false);\r
- playersView->SetVisible(true);\r
+ playersView->ChangeView(PlayersView::MUSIC_VOLUME_CONTROL_VIEW,PlayersView::MAIN_MUSICPLAYER_VIEW);\r
}\r
if (playerCoefficients == VOLUMEPHONE) {\r
MainCallingView *mainCallView = MainCallingView::GetInstance();\r
volumeSettingView->SetVisible(false);\r
NotificationManager::GetInstance()->SetVolumeScreenStatus(false);\r
}\r
- RootView::GetInstance()->Invalidate();\r
+ RootView::GetInstance()->Invalidate();\r
}\r
}\r
return true;\r
static constexpr uint16_t BUTTON_Y2 = 363;\r
static constexpr uint16_t BUTTON_WIDTH = 90;\r
static constexpr uint16_t BUTTON_HEIGHT = 90;\r
-static constexpr uint16_t SLIDER_X = 207;\r
-static constexpr uint16_t SLIDER_Y = 90;\r
-static constexpr uint16_t SLIDER_WIDTH = 40;\r
-static constexpr uint16_t SLIDER_HEIGHT = 274;\r
+static constexpr uint16_t SLIDER_X = 167;\r
+static constexpr uint16_t SLIDER_Y = 77;\r
+static constexpr uint16_t SLIDER_WIDTH = 130;\r
+static constexpr uint16_t SLIDER_HEIGHT = 310;\r
\r
constexpr uint16_t VOLUME_OK = 0;\r
constexpr int16_t VOLUME_ERROR = (-1);\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSettingView::~VolumeSettingView");\r
RemoveAll();\r
+ FocusManager::GetInstance()->ClearFocus();\r
if (listener != nullptr) {\r
delete listener;\r
listener = nullptr;\r
}\r
- delete increaseButton;\r
- increaseButton = nullptr;\r
-\r
- delete decreaseButton;\r
- decreaseButton = nullptr;\r
-\r
- delete progress;\r
- progress = nullptr;\r
+ if(increaseButton) {\r
+ delete increaseButton;\r
+ increaseButton = nullptr;\r
+ }\r
+ if(decreaseButton) {\r
+ delete decreaseButton;\r
+ decreaseButton = nullptr;\r
+ }\r
+ if(VolumeVetor!=nullptr)\r
+ {\r
+ delete VolumeVetor;\r
+ VolumeVetor = nullptr;\r
+ }\r
+ if(progress!=nullptr){\r
+ delete progress;\r
+ progress = nullptr;\r
+ }\r
}\r
\r
bool VolumeSettingView::SetUpVolume(void)\r
progress->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);\r
progress->SetViewId(VOLUME_PROGRESS);\r
progress->SetRange(VOLUME_MAX, VOLUME_MIN);\r
+ progress->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ progress->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);\r
+ progress->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);\r
+ progress->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+ progress->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ FocusManager::GetInstance()->RequestFocus(progress);\r
+ FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_DOWN);\r
+ progress->SetRotateFactor(1.0);\r
+\r
+ VolumeVetor = new UIImageView();\r
+ if (VolumeVetor == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VolumeVetor new fail");\r
+ return false;\r
+ }\r
+ VolumeVetor->SetPosition(213, 213, 40, 40);\r
+ VolumeVetor->SetSrc("/user/res/VolumeControlVector.bin");\r
+\r
\r
if (listener == nullptr) {\r
listener = new VolumeSliderEventListener(this);\r
progress->SetSliderEventListener(listener);\r
progress->SetOnClickListener(listener);\r
progress->SetOnDragListener(listener);\r
+ progress->SetOnRotateListener(listener);\r
progress->SetKnobStyle(StyleDefault::GetSliderKnobStyle());\r
SetViewId(VOLUME_VIEW);\r
SetOnDragListener(listener);\r
SetDraggable(true);\r
SetTouchable(true);\r
Add(progress);\r
+ Add(VolumeVetor);\r
ShowVolume();\r
\r
return true;\r
increaseButton->SetImageSrc(image, image);\r
increaseButton->SetOnClickListener(listener);\r
Add(increaseButton);\r
+ increaseButton->SetVisible(false);\r
\r
if (decreaseButton == nullptr) {\r
decreaseButton = new UIButton();\r
image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_DECREASE_BUTTON, PLAYER_IAMGES);\r
decreaseButton->SetImageSrc(image, image);\r
decreaseButton->SetOnClickListener(listener);\r
+ decreaseButton->SetVisible(false);\r
Add(decreaseButton);\r
\r
return VOLUME_OK;\r
/*刷新音乐列表*/\r
void PlayersView::RefreshMusicListList(void)\r
{\r
- if(musicList)\r
+ if (musicList)\r
{\r
musicList->RefreshList();\r
}\r
/*获取音乐播放和暂停复选按钮的状态*/\r
UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)\r
{\r
- if(play_or_pause_Button == nullptr)\r
+ if (play_or_pause_Button == nullptr)\r
{\r
return UICheckBox::UICheckBoxState::UNSELECTED;\r
}\r
\r
void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
{\r
- if (PlayersModel::GetInstance()->GetPlayerCtr().get() != nullptr) \r
+ if (PlayersModel::GetInstance()->GetPlayerCtr().get() != nullptr)\r
{\r
PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);\r
}\r
/*创建音乐列表视图*/\r
UIViewGroup *PlayersView::CreateMusicListGroupView(void)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView");\r
if (musicListGroupView == nullptr)\r
{\r
musicListGroupView = new UIViewGroup();\r
musicListScrollView->Add(musicListIsEmptyLabel);\r
musicListScrollView->Add(musicList);\r
musicListGroupView->Add(musicListScrollView);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView end");\r
return musicListGroupView;\r
}\r
\r
}\r
play_or_pause_Button->SetPosition(195, 195, 80, 80);\r
uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
- bool isplayingflag = PlayersModel::GetInstance()->GetCurrentMusicIsPlaying();//获取当前音乐是否是在播放中\r
- play_or_pause_Button->SetState(isplayingflag?UICheckBox::UICheckBoxState::SELECTED:UICheckBox::UICheckBoxState::UNSELECTED);\r
+ bool isplayingflag = PlayersModel::GetInstance()->GetCurrentMusicIsPlaying(); // 获取当前音乐是否是在播放中\r
+ play_or_pause_Button->SetState(isplayingflag ? UICheckBox::UICheckBoxState::SELECTED : UICheckBox::UICheckBoxState::UNSELECTED);\r
play_or_pause_Button->SetOnClickListener(clickListener);\r
return true;\r
}\r
{\r
int32_t playerState;\r
PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
- if (playerState == PLAYER_STARTED || playerState == PLAYER_PAUSED) //如果当前是已经播放或播放暂停状态\r
+ if (playerState == PLAYER_STARTED || playerState == PLAYER_PAUSED) // 如果当前是已经播放或播放暂停状态\r
{\r
PlayersModel::GetInstance()->PlayerStop();\r
PlayersModel::GetInstance()->ClearActivateAudioInterrupt();\r
}\r
}\r
\r
- //更新音乐播放器的声音进度条\r
+ // 更新音乐播放器的声音进度条\r
void PlayersView::UpdateVolumeValue(void)\r
{\r
if (volumeSettingView != nullptr && volumeSettingView->GetProgress() != nullptr)\r
}\r
}\r
\r
- //初始化音乐播放器的进度条\r
+ // 初始化音乐播放器的进度条\r
void PlayersView::initPlayProgress(void)\r
{\r
PlayersModel::GetInstance()->updatePlayProgress();\r
{\r
// bool value = PlayersModel::GetInstance()->get_player_state();\r
bool value = false;\r
- if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
- PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
+ if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() &&\r
+ PlayersModel::GetInstance()->get_a2dp_sink_playing_state()) // 若ct或tg端是已连接状态且当前a2dp_sink是已播放状态\r
{\r
value = true;\r
}\r
{\r
value = false;\r
}\r
- SetPlayerButtonState(value ? UICheckBox::UICheckBoxState::SELECTED:UICheckBox::UICheckBoxState::UNSELECTED);\r
+ SetPlayerButtonState(value ? UICheckBox::UICheckBoxState::SELECTED : UICheckBox::UICheckBoxState::UNSELECTED);\r
/*停止音乐*/\r
StopCurPlayingMusic();\r
}\r
void PlayersView::UpdatePlayerView(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdatePlayerView");\r
- #ifdef SUPPORT_BLE_SERVICE\r
- bool phoneMusicConnectStatus = uapi_a2dp_snk_get_device_connect_state();// 获取a2dp连接状态\r
- #else\r
+#ifdef SUPPORT_BLE_SERVICE\r
+ bool phoneMusicConnectStatus = uapi_a2dp_snk_get_device_connect_state(); // 获取a2dp连接状态\r
+#else\r
bool phoneMusicConnectStatus = false; // 模拟手机音乐连接状态\r
- #endif\r
+#endif\r
\r
bool musicSourceType = PlayersModel::GetInstance()->GetMusicSource();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneMusicConnectStatus %d,musicSourceType %d",phoneMusicConnectStatus,musicSourceType);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneMusicConnectStatus %d,musicSourceType %d", phoneMusicConnectStatus, musicSourceType);\r
ImageInfo *image;\r
if (musicSourceType)\r
{\r
initPlayProgress();\r
/* -------------------------------------------------------------------------- */\r
\r
- // PlayersListGroup::GetInstance()->SetUpListCase();\r
- // PlayersModel::GetInstance()->PlayerInit();\r
+ PlayersListGroup::GetInstance()->SetUpListCase();\r
+ PlayersModel::GetInstance()->PlayerInit();\r
// do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MUSICNAME_READ, nullptr, 0);\r
SetTouchable(true);\r
SetDraggable(true);\r
\r
if (RootView::GetInstance() != nullptr)\r
{\r
- RootView::GetInstance()->Invalidate();\r
+ RootView::GetInstance()->Invalidate();\r
}\r
PlayersModel::GetInstance()->setPreShowView(hideView);\r
DestroyTempView(hideView);\r
group[thisView] = musicPlayerSourceView->CreateMusicPlayerSourceView();\r
Add(group[thisView]);\r
}\r
- if (musicPlayerSourceView != nullptr )\r
+ if (musicPlayerSourceView != nullptr)\r
{\r
- if(musicPlayerSourceView->GetMusicPlayerSourcescrollView() != nullptr)\r
+ if (musicPlayerSourceView->GetMusicPlayerSourcescrollView() != nullptr)\r
{\r
musicPlayerSourceView->GetMusicPlayerSourcescrollView()->RequestFocus();\r
}\r
group[thisView] = volumeSettingView;\r
Add(group[thisView]);\r
}\r
- if(volumeSettingView)\r
+ if (volumeSettingView)\r
{\r
- if(volumeSettingView->GetProgress())\r
+ if (volumeSettingView->GetProgress())\r
{\r
volumeSettingView->GetProgress()->RequestFocus();\r
}\r