#include <string>
#include "components/abstract_adapter.h"
#include "components/ui_label.h"
-#include "components/ui_label_ext.h"
#include "components/ui_label_button.h"
#include "PlayersPresenter.h"
#include "BluetoothItemView.h"
#include <string>
#include "components/abstract_adapter.h"
#include "components/ui_label.h"
-#include "components/ui_label_ext.h"
#include "components/ui_label_button.h"
#include "BluetoothItemView.h"
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-10 10:05:27\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothDeviceListView.h\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothDeviceListView view 蓝牙耳机设备列表界面\r
+ * Author:\r
+ * Create: 2021-10-13\r
*/\r
#ifndef BLUETOOTH_DEVICE_LIST_VIEW_H\r
#define BLUETOOTH_DEVICE_LIST_VIEW_H\r
\r
#include "components/ui_view_group.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
#include "components/ui_list.h"\r
#include "BluetoothDeviceCaseListAdapter.h"\r
-#include "components/ui_scroll_view.h"\r
+\r
namespace OHOS {\r
class BluetoothDeviceCaseListAdapter;\r
-//已连接过的蓝牙设备列表视图\r
class BluetoothDeviceListView {\r
public:\r
BluetoothDeviceListView();\r
~BluetoothDeviceListView();\r
static BluetoothDeviceListView *GetInstance();\r
- UIViewGroup *CreateBluetoothDeviceListView(void);\r
+ UIViewGroup *InitShowUpView(void);\r
UIViewGroup *GetGroup(void);\r
UIList *GetDeviceUIList(void);\r
- void RefreshBluetoothDeviceListView(void);\r
+ void RefreshText(void);\r
private:\r
void InitList(void);\r
void InItEmptyLabel();\r
void InitNewEquipmentButton();\r
UIViewGroup *group{nullptr};\r
UIList *list{nullptr};\r
- UILabelExt *titleLabel{nullptr}; /*标题:蓝牙耳机*/\r
- UILabelExt *emptyLabel{nullptr}; /*暂无已配对设备*/\r
+ UILabel *titleLabel{nullptr};\r
+ UILabel *emptyLabel{nullptr};\r
BluetoothDeviceCaseListAdapter *adapterText{nullptr};\r
- UILabelExt *newEquipmentButton{nullptr};\r
+ UILabelButton *newEquipmentButton{nullptr};\r
};\r
} // namespace OHOS\r
#endif // BLUETOOTH_DEVICE_LIST_VIEW_H
\ No newline at end of file
\r
#include "components/ui_view_group.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label_button.h"\r
#include "components/ui_image_animator.h"\r
#include "components/ui_list.h"\r
#include "BluetoothCaseListAdapter.h"\r
void SetNewEquipmentButtonRemove(void);\r
void SetCancelConnedRequestButtonAdd(void);\r
void SetCancelConnedRequestButtonRemove(void);\r
- void RefreshBluetoothEarListView(void);\r
- \r
private:\r
void InitList(void);\r
void InitButten(UILabelButton **button, const char *text, const char* id);\r
- void InitNewEquipmentButton();\r
UIViewGroup *group{nullptr};\r
UIList *list{nullptr};\r
- UILabelExt *titleLabel{nullptr};\r
+ UILabel *titleLabel{nullptr};\r
BluetoothCaseListAdapter *adapterText{nullptr};\r
- UILabelExt *rescanButton{nullptr};\r
- UILabelButtonExt *cancelConnedRequestButton{nullptr};\r
+ UILabelButton *rescanButton{nullptr};\r
+ UILabelButton *cancelConnedRequestButton{nullptr};\r
};\r
} // namespace OHOS\r
#endif // BLUETOOTH_EAR_LIST_VIEW_H
\ No newline at end of file
#include <iostream>\r
#include "components/ui_view_group.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
#include "components/ui_label_button.h"\r
#include "components/ui_image_animator.h"\r
-#include "cmsis_os.h"\r
+#include "ohos_timer.h"\r
+#include "graphic_timer.h"\r
#include "BluetoothModel.h"\r
#define BLUETOOTH_SEARCH_IMAGE_NUM 8\r
\r
namespace OHOS {\r
-static constexpr int16_t CONNECTING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 60; // 图片帧数\r
class BluetoothEarPhoneView {\r
public:\r
BluetoothEarPhoneView();\r
private:\r
ImageAnimatorInfo searchImageInfo[BLUETOOTH_SEARCH_IMAGE_NUM];\r
UIViewGroup *group{nullptr};\r
+ UILabel *titleLabel{nullptr};\r
UIImageAnimatorView *imageAnimator{nullptr};\r
- const ImageInfo **connectPathsArray{nullptr};\r
- ImageAnimatorInfo connectImageInfo[CONNECTING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
bool scanStart{0};\r
void BtScanImageAnimator();\r
};\r
#ifdef __cplusplus\r
extern "C" {\r
#endif\r
-// void ScanTimerCallback(int data);\r
-// void CancelBrScanHandle(void);\r
-// void EndScanHandle(void);\r
+void ScanTimerCallback(int data);\r
+void CancelBrScanHandle(void);\r
+void EndScanHandle(void);\r
#ifdef __cplusplus\r
}\r
#endif\r
profile_connect_state_t avrcp_srv_conn_stat;\r
} BtAvrcpTgInf;\r
\r
-extern BtAvrcpTgInf g_avrcp_srv_inf;\r
-\r
-bd_addr_t *BtAvrcpSrvGetActiveAddr(void);\r
-\r
void UsingPressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);\r
void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam);\r
void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);\r
void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);\r
void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);\r
void InitBtHeadsetEvent(void);\r
-void BtAvrcpVolumeChangedSyncMedia(uint8_t a2dp_volume);\r
-void user_avrcp_ct_press_button(const bd_addr_t *bd_addr, int32_t key_operation);\r
-void user_avrcp_ct_get_element_attributes(const bd_addr_t *bd_addr);\r
\r
#ifdef __cplusplus\r
}\r
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-04 14:23:09\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothItemView.h\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothItem view\r
+ * Author:\r
+ * Create: 2021-10-13\r
*/\r
\r
-\r
#ifndef BLUETOOTH_ITEM_VIEW_H\r
#define BLUETOOTH_ITEM_VIEW_H\r
\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
#include "components/ui_view_group.h"\r
#include "components/ui_image_view.h"\r
#include "components/ui_label_button.h"\r
void SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList);\r
BluetoothCaseInfo *GetItemInfo(void);\r
void SetConnectionstatus(const BluetoothCaseInfo& infoData);\r
- void SetPairingtatus();\r
- void SetViewOnClickListener(UIView::OnClickListener *listener);\r
void SetUpChild();\r
void ConnectAnimatorStart(void);\r
void ConnectAnimatorStop(void);\r
bool IsConnectAnimator(void);\r
private:\r
ImageAnimatorInfo connectImageInfo[BLUETOOTH_CONNECT_IMAGE_NUM];\r
+ UIImageView image;\r
UIButton button;\r
- UILabelExt connectStateLabel;/*连接状态标签*/\r
- UILabel namelabel;/*设备名*/\r
- UIImageView lineImage;\r
- UIImageView noteImage;\r
- UIImageAnimatorView connectionAnimator; /*连接动画*/\r
+ UILabel connectStateLabel;\r
+ UILabel namelabel;\r
+ UIImageAnimatorView connectionAnimator;\r
BluetoothCaseInfo itemInfo_{};\r
void BtConnectImageAnimator();\r
};\r
* Create: 2021-10-13\r
*/\r
\r
-#ifndef BLUETOOTH_MODEL_H_\r
-#define BLUETOOTH_MODEL_H_\r
+#ifndef BLUETOOTH_MODEL_H\r
+#define BLUETOOTH_MODEL_H\r
\r
#include <list>\r
#include <cstdio>\r
\r
#include "bts_def.h"\r
#include "bts_br_gap.h"\r
-#include <string>\r
-namespace OHOS {\r
-\r
-\r
\r
+namespace OHOS {\r
typedef enum : uint16_t {\r
CALLERSETTING,\r
CALLERPLAYERS,\r
} CallerFactor;\r
\r
-/*整合和存储与蓝牙设备相关的各种信息*/\r
typedef struct {\r
unsigned char deviceName[BD_NAME_LEN]; /* Name of the device record, must be in UTF-8 */\r
- unsigned char addr[BD_ADDR_LEN]; /*存储蓝牙设备的地址*/\r
- int16_t index;/*用于表示设备在某个特定列表或数据结构中的索引位置。*/\r
+ unsigned char addr[BD_ADDR_LEN];\r
+ int16_t index;\r
int16_t connIndex;\r
int16_t temp;\r
} BluetoothCaseInfo;\r
\r
-\r
-typedef struct {\r
- uint8_t id;\r
- uint32_t timetamp_begin;\r
- uint32_t timetamp_end;\r
- std::string titel;\r
- std::string content;\r
-}ScheduleInfo;\r
-\r
-\r
-\r
-\r
class BluetoothItemView;\r
class BluetoothModel {\r
public:\r
void Init();\r
int GetBluetoothCalleridStatus(void);\r
void SetBluetoothCalleridStatus(int16_t value);\r
+ // ɨÃèÉ豸¶ÓÁгõʼ»¯\r
std::list<BluetoothCaseInfo>& GetCase();\r
void AddCase(BluetoothCaseInfo caseInfo);\r
void SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi);\r
int ConnectRemoteDevice(const bd_addr_t *addr);\r
bool ConnectRemoteCheck(const bd_addr_t *addr);\r
char* getWatchName(void);\r
- void set_test_bt_falg(bool falg);\r
\r
private:\r
BluetoothModel();\r
void SetUpListCase();\r
void SetUpConnedDevicesList();\r
bool FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo);\r
- bool aclConnected{false};/*ACL(Asynchronous Connectionless,异步无连接)连接状态*/\r
- BluetoothCaseInfo tempMacValue{};/*临时蓝牙设备地址*/\r
- bd_addr_t lastConnedAddr{};\r
+ void InitBluetoothInfo(void);\r
+ bool aclConnected{false};\r
+ BluetoothCaseInfo tempMacValue{};\r
+ bd_addr_t lastConnedAddr{0};\r
bd_addr_t remoteConnectAddr{0};\r
BluetoothItemView *selectItemView{nullptr};\r
- std::list<BluetoothCaseInfo> btScansDevicesList_{}; //蓝牙扫描设备列表\r
- List<BluetoothCaseInfo> *btConnedDevicesList_{nullptr}; //已连接设备列表\r
+ std::list<BluetoothCaseInfo> btScansDevicesList_{};\r
+ List<BluetoothCaseInfo> *btConnedDevicesList_{nullptr};\r
bool tagReconnectJump{0};\r
int16_t curView{0};\r
bool tagConnectView{true};\r
void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bd_addr, bool *res);\r
void BtInitCallBacks(void);\r
void BtInitCallBacksEx(void);\r
-void BtA2dpInit(void);\r
void BtInitGatts(void);\r
void BtInitSpp(void);\r
void BleAdvStart(void);\r
-void bluetooth_init(void);\r
-void InitBluetoothInfo(void);\r
-void bluetooth_enable_all(void);\r
-void bluetooth_close_all(void);\r
-void bluetooth_set_auto_reconnect_closed(uint8_t flag);\r
-\r
-int uapi_a2dp_snk_get_device_connect_state(void);\r
-int uapi_a2dp_snk_connect(void);\r
-int uapi_a2dp_snk_disconnect(void);\r
-int uapi_disconnect_remote_device(void);\r
-int uapi_get_acl_connect_state(void);\r
-int uapi_set_acl_connect_hfp(void);\r
-void uapi_connect_pbap_pce(void);\r
-int uapi_reconnect(void);\r
-int uapi_set_acl_connect_A2DP(void);\r
-void uapi_get_br_address(bd_addr_t *bdaddr);\r
-void uapi_set_br_address(bd_addr_t *bdaddr);\r
-\r
#ifdef __cplusplus\r
}\r
#endif\r
+++ /dev/null
-/*
- * @Author: penglei 1624952103@qq.com
- * @Date: 2024-08-23 10:50:37
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-12-02 19:24:01
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothModelC.h
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
- */
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothModel view
- * Author:
- * Create: 2021-10-13
- */
-
-#ifndef C_BLUETOOTH_MODEL_H_
-#define C_BLUETOOTH_MODEL_H_
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int uapi_a2dp_snk_connect_(void);
-int uapi_a2dp_snk_disconnect_(void);
-int uapi_close_br_scan(void);
-int uapi_open_br_scan(void);
-//int uapi_disconnect_remote_device_(void);
-
-int32_t BtA2dpSnkAudioDestroy(void);
-
-int uapi_reconnect_(void);
-
-int get_BT_is_init(void);
-
-void cm_initBluetoothDeviceList(void);
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-09 19:52:58\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothOptionsView.h\r
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothOptions view\r
+ * Author:\r
+ * Create: 2021-10-13\r
*/\r
#ifndef BLUETOOTH_OPTIONS_VIEW_H\r
#define BLUETOOTH_OPTIONS_VIEW_H\r
\r
#include "components/ui_view_group.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label_button.h"\r
#include "components/ui_image_animator.h"\r
#include "BluetoothCaseListAdapter.h"\r
\r
-namespace OHOS\r
-{\r
- // 查看已连接的蓝牙耳机设备视图\r
- class BluetoothOptionsView\r
- {\r
- public:\r
- BluetoothOptionsView();\r
- ~BluetoothOptionsView();\r
- static BluetoothOptionsView *GetInstance();\r
- UIViewGroup *CreateBluetoothOptionsView(void);\r
- UILabelButtonExt *GetOptionsOneButton(void);\r
- UILabelButtonExt *GetUnpairButton(void);\r
- void SetUnpair(void);\r
- void SetBtconnect(void);\r
- void SetBtDisconnect(void);\r
- void SetCurrentAddr(bd_addr_t addr);\r
- bd_addr_t GetCurrentAddr(void);\r
- void RefreshText(void);\r
-\r
- private:\r
- bool CreateBluetoothOptionsLabelView(void);\r
- bool CreateBluetoothOptionsLabelButton(void);\r
- bool CreateBluetoothOptionsImageView(void);\r
-\r
- void InItTitleLabel(void);\r
- void InItLabelButton(void);\r
- UIViewGroup *group{nullptr};\r
- UILabelExt *titleLabel{nullptr}; /*标题:蓝牙耳机*/\r
- UIImageView *btHeadsetIconUmage{nullptr}; // 绿色耳机图标\r
- UILabelExt *EarPhoneDeviceName{nullptr}; // 蓝牙耳机设备名\r
- UILabelExt *pairState{nullptr}; // 已配对或者未配对\r
- UILabelButtonExt *unpairButton{nullptr}; // 取消配对按钮\r
- UILabelExt *unpairLabel{nullptr}; // 取消配对标签\r
- bd_addr_t currentAddr;\r
-\r
- /*下面两个组件暂时设为不可见待到需要时使用*/\r
- UILabelButtonExt *optionsOneButton{nullptr}; /*重新连接和断开连接按钮*/\r
- UILabel *connectStateLabel{nullptr}; /*已连接或未连接标签*/\r
- };\r
+namespace OHOS {\r
+class BluetoothOptionsView {\r
+public:\r
+ BluetoothOptionsView();\r
+ ~BluetoothOptionsView();\r
+ static BluetoothOptionsView *GetInstance();\r
+ UIViewGroup *InitShowUpView(void);\r
+ UILabelButton *GetOptionsOneButton(void);\r
+ UILabelButton *GetUnpairButton(void);\r
+ void SetUnpair(void);\r
+ void SetBtconnect(void);\r
+ void SetBtDisconnect(void);\r
+ void SetCurrentAddr(bd_addr_t addr);\r
+ bd_addr_t GetCurrentAddr(void);\r
+ void RefreshText(void);\r
+private:\r
+ void InItTitleLabel(void);\r
+ void InItLabelButton(void);\r
+ UILabelButton *optionsOneButton{nullptr};\r
+ UILabelButton *unpairButton{nullptr};\r
+ UILabel *titleLabel{nullptr};\r
+ UILabel *connectStateLabel{nullptr};\r
+ UIViewGroup *group{nullptr};\r
+ bd_addr_t currentAddr;\r
+};\r
} // namespace OHOS\r
#endif // BLUETOOTH_OPTIONS_VIEW_H
\ No newline at end of file
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-28 18:06:32\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothPresenter.h\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothPresenter view\r
+ * Create: 2021-10-13\r
*/\r
\r
#ifndef BLUETOOTH_PRESENTER_H\r
#define BLUETOOTH_PRESENTER_H\r
\r
#include "Presenter.h"\r
-#include "View.h"\r
+#include "BluetoothModel.h"\r
#include "MainBluetoothView.h"\r
#include "components/ui_view.h"\r
#include "components/ui_image_view.h"\r
#include "components/ui_label_button.h"\r
#include "components/ui_view_group.h"\r
#include "VolumeSettingView.h"\r
-\r
#include "UiViewId.h"\r
-#include "cmsis_os.h"\r
\r
-#include "common/key_code.h"\r
namespace OHOS {\r
enum BluetoothPresenterNum : uint8_t {\r
- BLUETOOTHEARPHONEVIEW = 0, // 搜索界面\r
- BLUETOOTHEARLISTVIEW, /*扫描出的耳机列表界面*/\r
- BLUETOOTHDEVICELISTVIEW,/*已连接过的蓝牙设备列表视图*/\r
- BLUETOOTHEOPTIONSVIEW, /*查看已连接过的蓝牙耳机设备视图*/\r
- BLUETOOTHRECONNECTVIEW,/*蓝牙重新连接视图*/\r
- TIPSSUCCMESSAGEVIEW,/*连接成功的提示视图*/\r
- TIPSCONNFAILMESSAGEVIEW,/*连接失败的提示*/\r
- TIPSFAILMESSAGEVIEW,/*未搜索到蓝牙耳机界面*/\r
+ BLUETOOTHEARPHONEVIEW = 0,\r
+ BLUETOOTHEARLISTVIEW,\r
+ BLUETOOTHDEVICELISTVIEW,\r
+ BLUETOOTHEOPTIONSVIEW,\r
+ BLUETOOTHRECONNECTVIEW,\r
+ TIPSSUCCMESSAGEVIEW,\r
+ TIPSCONNFAILMESSAGEVIEW,\r
+ TIPSFAILMESSAGEVIEW,\r
BLUETOOTHEVIEW,\r
BLUETOOTHEVIEW_MAX,\r
};\r
\r
class MainBluetoothView;\r
-class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,public RootView::OnKeyActListener,\r
+class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,\r
public UIView::OnDragListener {\r
public:\r
BluetoothPresenter();\r
~BluetoothPresenter();\r
bool OnClick(UIView &view, const ClickEvent &event) override;\r
static BluetoothPresenter *GetInstance();\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
- bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
- void OnStart() override;\r
- void OnPause() override;\r
- void OnResume() override;\r
void OnStop() override;\r
void ClickRescanButton(void);\r
void ClickNewEquipmentButton(void);\r
void ClickConnfailBackButton(void);\r
private:\r
BluetoothModel *bluetoothMode_{nullptr};\r
- bool X_DRAG_FLAG{false};\r
};\r
} // namespace OHOS\r
#endif\r
\r
\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
#include "components/ui_image_animator.h"\r
#include "components/abstract_adapter.h"\r
#include "components/ui_view_group.h"\r
#include "bts_def.h"\r
-#define BLUETOOTH_RECONNECT_IMAGE_NUM 60\r
+#define BLUETOOTH_RECONNECT_IMAGE_NUM 8\r
\r
namespace OHOS {\r
class BluetoothReconnectView {\r
bd_addr_t GetcurrentBdAddr(void);\r
void RefreshBluetoothNameLabel();\r
private:\r
- // ImageAnimatorInfo reconnetImageInfo[BLUETOOTH_RECONNECT_IMAGE_NUM];\r
+ ImageAnimatorInfo reconnetImageInfo[BLUETOOTH_RECONNECT_IMAGE_NUM];\r
void ShowUpTitleLabel(void);\r
- void start_connect_timer();\r
- void stop_connect_timer();\r
UILabel *titleLabel{nullptr};\r
UILabel *bluetoothNameLabel{nullptr};\r
- // UIImageAnimatorView *reconnectAnimator{nullptr};\r
+ UIImageAnimatorView *reconnectAnimator{nullptr};\r
UIViewGroup *group{nullptr};\r
bd_addr_t currentBdAddr;\r
void BtReconnectImageAnimator();\r
- UIImageAnimatorView *reconnectAnimator{nullptr};\r
- const ImageInfo **reconnectPathsArray{nullptr};\r
- ImageAnimatorInfo reconnetImageInfo[BLUETOOTH_RECONNECT_IMAGE_NUM];\r
};\r
} // namespace OHOS\r
#endif // BLUETOOTH_RECONNECT_VIEW_H
\ No newline at end of file
errcode_t wrapper_gatts_register_server(bt_uuid_t *app_uuid, uint8_t *server_id);\r
errcode_t wrapper_gatts_add_service(uint8_t server_id, bt_uuid_t *service_uuid, bool is_primary);\r
void wrapper_gatts_service_start(void);\r
-void wrapper_gatts_clear_service(void);\r
\r
#ifdef __cplusplus\r
}\r
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2022. All rights reserved.
- * Description: This module include test functions of PBAP service.
- */
-#ifndef PBAP_SERVICE_H
-#define PBAP_SERVICE_H
-#include <td_type.h>
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-//void bt_pbap_service_sample_cmd(uint32_t cmd_id, const char **params, int32_t params_cnt);
-void uapi_pbap_pce_reg_callback(void);
-void uapi_pbap_cmd_start_client(void);
-
-void uapi_pbap_cmd_pull_phonebook(void);
-void uapi_pbap_cmd_pull_vcard_listing(unsigned char *tell,uint8_t len);
-void uapi_pbap_cmd_pull_vcard_entry(td_char *vcf_name);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
\ No newline at end of file
~MainBluetoothView() override;\r
\r
void OnStart() override;\r
-\r
void DropView(UIView& view);\r
void ChangeView(int16_t hideView, int16_t showView);\r
static MainBluetoothView *GetInstance(void);\r
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-05 16:13:55\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/TipsConnFailMessageView.h\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsConnFailMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
*/\r
-\r
#ifndef TIPS_CONN_FAIL_MESSAGE_VIEW_H\r
#define TIPS_CONN_FAIL_MESSAGE_VIEW_H\r
\r
#include "components/ui_view_group.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label_button.h"\r
#include "components/ui_image_view.h"\r
#include "bts_def.h"\r
\r
namespace OHOS {\r
-/*连接失败视图*/\r
class TipsConnFailMessageView {\r
public:\r
TipsConnFailMessageView();\r
void ShowUpButtonBack(void);\r
void ShowUpTipLabel(void);\r
void InitNameLabel(void);\r
- UILabelExt *titleLabel{nullptr};\r
- UILabelExt *conn_fail_Label{nullptr};\r
- UILabelExt *tipLabel{nullptr};\r
+ UILabel *titleLabel{nullptr};\r
+ UILabel *tipLabel{nullptr};\r
+ UILabel *tipTwoLabel{nullptr};\r
UILabel *bluetoothNameLabel{nullptr};\r
- UILabelButtonExt *backButton{nullptr};\r
+ UILabelButton *backButton{nullptr};\r
UIImageView *tipImg{nullptr};\r
UIViewGroup *group{nullptr};\r
};\r
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-10 10:19:05\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/TipsFailMessageView.h\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsFailMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
*/\r
-\r
#ifndef TIPS_FAIL_MESSAGE_VIEW_H\r
#define TIPS_FAIL_MESSAGE_VIEW_H\r
\r
#include "components/ui_view_group.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label_button.h"\r
#include "components/ui_image_view.h"\r
\r
-namespace OHOS\r
-{\r
- /*蓝牙设备搜索不到视图*/\r
- class TipsFailMessageView\r
- {\r
- public:\r
- TipsFailMessageView();\r
- ~TipsFailMessageView();\r
- static TipsFailMessageView *GetInstance();\r
- UIViewGroup *CreateTipsFailMessageView(void);\r
-\r
- private:\r
- bool CreateTipsFailMessageLabelView(void);\r
- bool CreateTipsFailMessageLabelButton(void);\r
- bool CreateTipsFailMessageImageView(void);\r
-\r
- int ShowUpButtonBack(void);\r
- UIViewGroup *group{nullptr};\r
- UILabelExt *titleLabel{nullptr}; /*标题:蓝牙耳机 */\r
- UIImageView *btIconImage{nullptr}; /*灰色的蓝牙图标*/\r
- UILabelExt *btHeadsetNotFoundLabel{nullptr}; /*当前搜索不到耳机蓝牙设备*/\r
- UILabelExt *rescanButton{nullptr}; /*重新搜索按钮*/\r
- };\r
+namespace OHOS {\r
+class TipsFailMessageView {\r
+public:\r
+ TipsFailMessageView();\r
+ ~TipsFailMessageView();\r
+ static TipsFailMessageView *GetInstance();\r
+ UIViewGroup *ShowUpViewInit(void);\r
+private:\r
+ int ShowUpButtonBack(void);\r
+ UILabel *titleLabel{nullptr};\r
+ UILabelButton *backButton{nullptr};\r
+ UIImageView *tipImg{nullptr};\r
+ UIViewGroup *group{nullptr};\r
+};\r
} // namespace OHOS\r
#endif // TIPS_FAIL_MESSAGE_VIEW_H
\ No newline at end of file
/*\r
- * @Author: luozheng 1732036298@qq.com\r
- * @Date: 2024-08-05 15:20:01\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-05 11:13:11\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/TipsSuccMessageView.h\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsSuccMessage view\r
+ * Author:\r
+ * Create: 2021-10-13\r
*/\r
#ifndef TIPS_SUCC_MESSAGE_VIEW_H\r
#define TIPS_SUCC_MESSAGE_VIEW_H\r
\r
#include "components/ui_view_group.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label_button.h"\r
#include "components/ui_image_view.h"\r
#include "bts_def.h"\r
\r
UIViewGroup *ShowUpViewInit(void);\r
void RefreshNameLabel(const bd_addr_t &bdAddr);\r
private:\r
- UILabelExt *titleLabel{nullptr};\r
- UILabelExt *bluetoothNameLabel{nullptr};\r
- UILabelExt *conn_succ_Label{nullptr};\r
- UILabelButtonExt *backButton{nullptr};\r
+ void ShowUpButtonBack(void);\r
+ void InitNameLabel(void);\r
+ UILabel *titleLabel{nullptr};\r
+ UILabel *bluetoothNameLabel{nullptr};\r
+ UILabelButton *backButton{nullptr};\r
UIImageView *tipImg{nullptr};\r
UIViewGroup *group{nullptr};\r
};\r
#include "wearable_log.h"
#include "UiConfig.h"
#include "BluetoothModel.h"
-#include "bluetooth/include/MainBluetoothView.h"
-#include "CallerLogModel.h"
-#include "custom_utils.h"
-#include "notification_manager.h"
namespace OHOS {
BluetoothCaseListAdapter::~BluetoothCaseListAdapter()
}
bool OnClick(UIView& view, const ClickEvent& event) override
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListListener");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListListener");
UNUSED(event);
BluetoothItemView *itemView = static_cast<BluetoothItemView *>(&view);
- // // 二次点击不做响应
- // bool ret = itemView->IsConnectAnimator();
- // if (ret) {
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Block secondary clicks");
- // return true;
- // }
+ // 二次点击不做响应
+ bool ret = itemView->IsConnectAnimator();
+ if (ret) {
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Block secondary clicks");
+ return true;
+ }
BluetoothCaseInfo *bluetoothInfo_ = itemView->GetItemInfo();
/* 点击事件 */
BluetoothModel::GetInstance()->SetTempMacValue(bluetoothInfo_);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");
return false;
}
- bluetoothEarPhoneView->BtAnimatorStop();//搜索动画停止
- bluetoothEarPhoneView->StopBtDiscovery();//停止扫描
+ bluetoothEarPhoneView->BtAnimatorStop();
+ bluetoothEarPhoneView->StopBtDiscovery();
BluetoothModel::GetInstance()->SetTagScanDeviceClicked(true);
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
- if (mainBluetoothView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick mainBluetoothView GetInstance fail");
+
+ // 刷新列表
+ BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
+ if (bluetoothEarListView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");
return false;
}
-
- // // 刷新列表
- // BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
- // if (bluetoothEarListView == nullptr) {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");
- // return false;
- // }
- // if (bluetoothEarListView->GetScanUIList() == nullptr) {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");
- // return false;
- // }
- // bluetoothEarListView->GetScanUIList()->RefreshList();
- // // bluetoothEarListView->SetNewEquipmentButtonRemove();
- // // bluetoothEarListView->SetCancelConnedRequestButtonAdd();
- // RootView::GetInstance()->Invalidate();
+ if (bluetoothEarListView->GetScanUIList() == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");
+ return false;
+ }
+ bluetoothEarListView->GetScanUIList()->RefreshList();
+ bluetoothEarListView->SetNewEquipmentButtonRemove();
+ bluetoothEarListView->SetCancelConnedRequestButtonAdd();
+ RootView::GetInstance()->Invalidate();
// 判断是否正在连接
- bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice retVal = %02X %02X %02X * * *",
- lastAddr->addr[0],lastAddr->addr[1],lastAddr->addr[2]);
-
-
- bool ret = bt_is_acl_connected(lastAddr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice retVal = ret %d %02X %02X %02X * * *",
- ret, lastAddr->addr[0],lastAddr->addr[1],lastAddr->addr[2]);
-
-
- if (!( lastAddr->addr[0] == 0 && lastAddr->addr[1] == 0 && lastAddr->addr[2] == 0
- && lastAddr->addr[3] == 0 && lastAddr->addr[4] == 0 && lastAddr->addr[5] == 0 ) && ret) {
- BluetoothModel::GetInstance()->SetTagConnectNew(true);
- errcode_t retVal = gap_disconnect_remote_device(lastAddr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice retVal = %d %02X %02X %02X * * *", retVal,
- lastAddr->addr[0],lastAddr->addr[1],lastAddr->addr[2]);
- }
- else
- {
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), BLUETOOTHRECONNECTVIEW);
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&addr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice ret = %d", retVal);
+ if (BluetoothModel::GetInstance()->GetBluetoothAclState()) {
+ bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LastDevice addr: %02x%02x%02x%02x%02x%02x is connected",
+ lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3],
+ lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]);
+ BluetoothModel::GetInstance()->SetTagConnectNew(true);
+ errcode_t retVal = gap_disconnect_remote_device(lastAddr);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice retVal = %d", retVal);
}
+ errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&addr);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice ret = %d", retVal);
// 跳转可选页
return true;
}
return nullptr;
}
if ((static_cast<unsigned int>(index) > bluetoothCaseList.size() - 1) || (index < 0)) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter::GetView %d %d", index, bluetoothCaseList.size());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter::GetView %d %d", index, bluetoothCaseList.size());
return nullptr;
}
std::list<BluetoothCaseInfo>::iterator node = bluetoothCaseList.begin();
(void)sprintf_s(addrTmp, sizeof(addrTmp), "%02x%02x%02x%02x%02x%02x", node->addr[0], node->addr[1],
node->addr[2], node->addr[3], node->addr[4], node->addr[5]); // 没有%s类型,不做返回判断
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addrTmp %s", addrTmp);
- // ClickAnimation(itemData, item);
- item->SetViewIndex(index);
+ ClickAnimation(itemData, item);
item->SetItemInfo(itemData, true);
- item->SetPairingtatus();
+ item->SetViewIndex(index);
return item;
}
} // namespace OHOS
\ No newline at end of file
#include "wearable_log.h"
#include "UiConfig.h"
#include "BluetoothPresenter.h"
-#include "CallerLogModel.h"
-#include "custom_utils.h"
-#include "notification_manager.h"
-#ifdef SUPPORT_PHONE_SERVICE
-#include "PhoneAGService.h"
-#endif
+namespace OHOS {
+BluetoothDeviceCaseListAdapter::~BluetoothDeviceCaseListAdapter()
+{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::~BluetoothDeviceCaseListAdapter");
+ UIView::OnClickListener *click = item->GetOnClickListener();
+ if (click != nullptr) {
+ delete click;
+ click = nullptr;
+ }
+}
-namespace OHOS
+uint16_t BluetoothDeviceCaseListAdapter::GetCount()
{
- class BluetoothDeviceOnClickListListener;
- static BluetoothDeviceOnClickListListener *g_btOnClickListListener = nullptr;
- class BluetoothDeviceOnClickListListener : public UIView::OnClickListener
+ return BluetoothModel::GetInstance()->GetConnedDevicesCase().Size();
+}
+
+class BluetoothDeviceOnClickListListener : public UIView::OnClickListener {
+public:
+ BluetoothDeviceOnClickListListener(BluetoothCaseInfo *bluetoothInfo)
{
- public:
- BluetoothDeviceOnClickListListener() {}
- ~BluetoothDeviceOnClickListListener() {}
- void SetItemInfo(const BluetoothCaseInfo *bluetoothInfo)
- {
- if (bluetoothInfo != nullptr)
- {
- (void)memcpy_s(addr.addr, BD_ADDR_LEN,
- bluetoothInfo->addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
- (void)memcpy_s(bluetoothInfo_.addr, BD_ADDR_LEN,
- bluetoothInfo->addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
- (void)memcpy_s(bluetoothInfo_.deviceName, BD_NAME_LEN,
- bluetoothInfo->deviceName, BD_NAME_LEN); // 源和目标内存长度一样,不做返回值判断
- bluetoothInfo_.index = bluetoothInfo->index;
- bluetoothInfo_.connIndex = bluetoothInfo->connIndex;
- }
+ if (bluetoothInfo != nullptr) {
+ (void)memcpy_s(addr.addr, BD_ADDR_LEN,
+ bluetoothInfo->addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
+ (void)memcpy_s(bluetoothInfo_.addr, BD_ADDR_LEN,
+ bluetoothInfo->addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
+ (void)memcpy_s(bluetoothInfo_.deviceName, BD_NAME_LEN,
+ bluetoothInfo->deviceName, BD_NAME_LEN); // 源和目标内存长度一样,不做返回值判断
+ bluetoothInfo_.index = bluetoothInfo->index;
+ bluetoothInfo_.connIndex = bluetoothInfo->connIndex;
}
- bool OnClick(UIView &view, const ClickEvent &event) override
- {
- UNUSED(event);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListListener");
- BluetoothItemView *itemView = static_cast<BluetoothItemView *>(view.GetParent());
- BluetoothCaseInfo *g_BluetoothCaseInfo = itemView->GetItemInfo();
- SetItemInfo(g_BluetoothCaseInfo); // 保存点击的设备信息
- BluetoothModel::GetInstance()->SetTempMacValue(&bluetoothInfo_);
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)
- {
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick jumpView GetInstance fail");
- return false;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW);
+ }
+ ~BluetoothDeviceOnClickListListener() {}
+ bool OnClick(UIView& view, const ClickEvent& event) override
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClickListListener");
+ UNUSED(view);
+ UNUSED(event);
+ /* 点击事件 */
+ // 跳转可选页
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
+ JumpView *jumpView = JumpView::GetInstance();
+ if (jumpView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick jumpView GetInstance fail");
+ return false;
}
- #ifdef SUPPORT_BT_SERVICE
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)
- {
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
- if (mainBluetoothView == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick mainBluetoothView GetInstance fail");
- return false;
- }
- if (view.GetViewType() == UIViewType::UI_BUTTON) // 点击的是按钮
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIViewType::UI_BUTTON,%s", reinterpret_cast<const char *>(bluetoothInfo_.deviceName));
- bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
- bool ret = bt_is_acl_connected(lastAddr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt_is_acl_connected:%d lastAddr:%02X %02X %02X * * *",
- ret, lastAddr->addr[0], lastAddr->addr[1], lastAddr->addr[2]);
-
- // 地址不是全0并且ret为真
- if(OHOS::CallerLogModel::GetInstance()->GetCallSource() == OHOS::CallerLogModel::CallSourceCat1
- && OHOS::NotificationManager::GetInstance()->GetWatchCallStatus())
- {
- if (!(lastAddr->addr[0] == 0 && lastAddr->addr[1] == 0 && lastAddr->addr[2] == 0 &&
- lastAddr->addr[3] == 0 && lastAddr->addr[4] == 0 && lastAddr->addr[5] == 0) &&
- ret)
- {
- if(headset_Is_connect())
- {
- if(headset_SCO_Is_connect_extend(lastAddr))
- {
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT_HFP_DIS_SCO_CONNECT, nullptr, 0);
- }
- else
- {
- uint8_t time=200;
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT_HFP_SCO_CONNECT, &time, sizeof(uint8_t));
- }
- }
- else
- {
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CONNECT_AG, nullptr, 0);
- }
-
- }
- else
- {
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), BLUETOOTHRECONNECTVIEW);
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&addr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnectRemoteDevice] retVal = %d", retVal);
- }
-
- }
- else
- {
- if (!(lastAddr->addr[0] == 0 && lastAddr->addr[1] == 0 && lastAddr->addr[2] == 0 &&
- lastAddr->addr[3] == 0 && lastAddr->addr[4] == 0 && lastAddr->addr[5] == 0) &&
- ret)
- {
- BluetoothModel::GetInstance()->SetTagConnectNew(false); //主动断开连接不需要回连该设备
- errcode_t retVal = gap_disconnect_remote_device(lastAddr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[gap_disconnect_remote_device] retVal = %d", retVal);
- }
- else
- {
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), BLUETOOTHRECONNECTVIEW);
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&addr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnectRemoteDevice] retVal = %d", retVal);
- }
- }
-
- }
- else if (view.GetViewType() == UIViewType::UI_IMAGE_VIEW) /*点击的是图片*/
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIViewType::UI_IMAGE_VIEW,%s", reinterpret_cast<const char *>(bluetoothInfo_.deviceName));
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), BLUETOOTHEOPTIONSVIEW);
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
- if (bluetoothOptionsView == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothOptionsView new fail");
- return false;
- }
- bluetoothOptionsView->SetCurrentAddr(addr);
- bluetoothOptionsView->RefreshText();
- }
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW);
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
+ MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
+ if (mainBluetoothView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick mainBluetoothView GetInstance fail");
+ return false;
}
- #endif
-
- return true;
+ mainBluetoothView->ChangeView(BLUETOOTHDEVICELISTVIEW, BLUETOOTHEOPTIONSVIEW);
}
-
- private:
- BluetoothCaseInfo bluetoothInfo_{};
- bd_addr_t addr;
- };
-
- BluetoothDeviceCaseListAdapter::~BluetoothDeviceCaseListAdapter()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::~BluetoothDeviceCaseListAdapter");
- if (g_btOnClickListListener != nullptr)
- {
- delete g_btOnClickListListener;
- g_btOnClickListListener = nullptr;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClickListListener addr: %02x%02x%02x%02x%02x%02x",
+ bluetoothInfo_.addr[5], bluetoothInfo_.addr[4], bluetoothInfo_.addr[3], /* mac下标 0 1 2 3 4 5 */
+ bluetoothInfo_.addr[2], bluetoothInfo_.addr[1], bluetoothInfo_.addr[0]); /* mac下标 0 1 2 3 4 5 */
+ BluetoothModel::GetInstance()->SetTempMacValue(&bluetoothInfo_);
+ // 用于查询连接状态
+ BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
+ if (bluetoothOptionsView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothOptionsView new fail");
+ return false;
}
+ bluetoothOptionsView->SetCurrentAddr(addr);
+ bluetoothOptionsView->RefreshText();
+ return true;
}
- uint16_t BluetoothDeviceCaseListAdapter::GetCount()
- {
- return BluetoothModel::GetInstance()->GetConnedDevicesCase().Size();
- }
+private:
+ BluetoothCaseInfo bluetoothInfo_{};
+ bd_addr_t addr;
+};
- UIView *BluetoothDeviceCaseListAdapter::GetView(UIView *inView, int16_t index)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter GetView");
- List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
- if (bluetoothCaseList.IsEmpty())
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothCaseList IsEmpty");
- return nullptr;
- }
- if ((index > bluetoothCaseList.Size() - 1) || (index < 0))
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::GetView err,%d,%d", index, bluetoothCaseList.Size());
+
+UIView *BluetoothDeviceCaseListAdapter::GetView(UIView *inView, int16_t index)
+{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter GetView");
+ List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
+ if (bluetoothCaseList.IsEmpty()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothCaseList IsEmpty");
+ return nullptr;
+ }
+ if ((index > bluetoothCaseList.Size() - 1) || (index < 0)) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::GetView err");
+ return nullptr;
+ }
+ ListNode<BluetoothCaseInfo>* node = bluetoothCaseList.Begin();
+ for (uint16_t i = 0; i < index; i++) {
+ node = node->next_;
+ }
+ node->data_.index = index;
+ BluetoothCaseInfo itemData = node->data_;
+ if (inView == nullptr) {
+ item = new BluetoothItemView();
+ if (item == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetView item err");
return nullptr;
}
- ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();
- for (uint16_t i = 0; i < index; i++)
- {
- node = node->next_;
- }
- node->data_.index = index;
- BluetoothCaseInfo itemData = node->data_;
- if (inView == nullptr)
- {
- item = new BluetoothItemView();
- if (item == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetView item err");
- return nullptr;
- }
- }
- else
- {
- item = static_cast<BluetoothItemView *>(inView);
- }
- item->SetViewIndex(index);
- item->SetItemInfo(itemData, false);
- item->SetConnectionstatus(itemData);
+ } else {
+ item = static_cast<BluetoothItemView *>(inView);
+ }
+ item->SetItemInfo(itemData, false);
+ item->SetConnectionstatus(itemData);
- if (g_btOnClickListListener == nullptr)
- {
- g_btOnClickListListener = new BluetoothDeviceOnClickListListener();
- if (g_btOnClickListListener == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::GetView new fail");
- return nullptr;
- }
- }
- listener = static_cast<UIView::OnClickListener *>(g_btOnClickListListener);
- item->SetViewOnClickListener(listener);
- sprintf_s(addrTmp, sizeof(addrTmp), "%02x%02x%02x%02x%02x%02x", node->data_.addr[0], node->data_.addr[1],
- node->data_.addr[2], node->data_.addr[3], node->data_.addr[4], node->data_.addr[5]); // 没有%s类型,不做返回判断
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addrTmp %s", addrTmp);
- return item;
+ listener = item->GetOnClickListener();
+ if (listener != nullptr) {
+ delete listener;
+ listener = nullptr;
+ }
+ listener = new BluetoothDeviceOnClickListListener(&node->data_);
+ if (listener == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetView BluetoothDeviceOnClickListListener err");
+ return nullptr;
}
+ sprintf_s(addrTmp, sizeof(addrTmp), "%02x%02x%02x%02x%02x%02x", node->data_.addr[0], node->data_.addr[1],
+ node->data_.addr[2], node->data_.addr[3], node->data_.addr[4], node->data_.addr[5]); // 没有%s类型,不做返回判断
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addrTmp %s", addrTmp);
+
+ item->SetViewIndex(index);
+ item->SetOnClickListener(listener);
+ return item;
+}
} // namespace OHOS
\ No newline at end of file
#include "PlayersPresenter.h"\r
#include "BluetoothPresenter.h"\r
#include "BluetoothModel.h"\r
-#include "ui_resource_string.h"\r
-namespace OHOS\r
-{\r
- static BluetoothDeviceListView *g_pBluetoothDeviceListView{nullptr};\r
\r
- BluetoothDeviceListView::BluetoothDeviceListView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::BluetoothDeviceListView");\r
- g_pBluetoothDeviceListView = this;\r
- }\r
+namespace OHOS {\r
+static BluetoothDeviceListView *g_pBluetoothDeviceListView{nullptr};\r
\r
- BluetoothDeviceListView::~BluetoothDeviceListView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::~BluetoothDeviceListView");\r
- if (group)\r
- {\r
- group->RemoveAll();\r
- if (titleLabel)\r
- {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (emptyLabel)\r
- {\r
- delete emptyLabel;\r
- emptyLabel = nullptr;\r
- }\r
- if (adapterText)\r
- {\r
- delete adapterText;\r
- adapterText = nullptr;\r
- }\r
- if (list)\r
- {\r
- delete list;\r
- list = nullptr;\r
- }\r
- if (newEquipmentButton)\r
- {\r
- delete newEquipmentButton;\r
- newEquipmentButton = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- g_pBluetoothDeviceListView = nullptr;\r
- }\r
+BluetoothDeviceListView::BluetoothDeviceListView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::BluetoothDeviceListView");\r
+ g_pBluetoothDeviceListView = this;\r
+}\r
\r
- BluetoothDeviceListView *BluetoothDeviceListView::GetInstance()\r
- {\r
- return g_pBluetoothDeviceListView;\r
- }\r
+BluetoothDeviceListView::~BluetoothDeviceListView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::~BluetoothDeviceListView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete adapterText;\r
+ adapterText = nullptr;\r
+ delete emptyLabel;\r
+ emptyLabel = nullptr;\r
+ delete list;\r
+ list = nullptr;\r
+ delete newEquipmentButton;\r
+ newEquipmentButton = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ g_pBluetoothDeviceListView = nullptr;\r
+}\r
\r
- void BluetoothDeviceListView::InitList()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList");\r
- if (adapterText == nullptr)\r
- {\r
- adapterText = new BluetoothDeviceCaseListAdapter();\r
- if (adapterText == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView adapterText new fail");\r
- return;\r
- }\r
+BluetoothDeviceListView *BluetoothDeviceListView::GetInstance()\r
+{\r
+ return g_pBluetoothDeviceListView;\r
+}\r
+\r
+void BluetoothDeviceListView::InitList()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList");\r
+ // list type\r
+ if (adapterText == nullptr) {\r
+ adapterText = new BluetoothDeviceCaseListAdapter();\r
+ if (adapterText == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView adapterText new fail");\r
+ return;\r
}\r
- if (list == nullptr)\r
- {\r
- list = new UIList(UIList::VERTICAL);\r
- if (list == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView list new fail");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "adapterText->GetCount = %d", adapterText->GetCount());\r
- list->SetPosition(43, 120, 380, 100);\r
- list->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- list->SetStyle(STYLE_BORDER_RADIUS, 50);\r
- list->SetDragACCLevel(5);\r
- list->SetSwipeACCLevel(200);\r
- list->SetReboundSize(30);\r
- // list->SetScrollBlankSize(30);\r
- list->SetAdapter(adapterText);\r
+ }\r
+ if (list == nullptr) {\r
+ list = new UIList(UIList::VERTICAL);\r
+ if (list == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView list new fail");\r
+ return;\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList end");\r
+ list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height\r
+ list->SetStartIndex(0); // 0 : list start index\r
+ list->SetAdapter(adapterText);\r
+ group->Add(list);\r
}\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList end");\r
+}\r
\r
- void BluetoothDeviceListView::InItEmptyLabel()\r
- {\r
- if (emptyLabel == nullptr)\r
- {\r
- emptyLabel = new UILabelExt();\r
- if (emptyLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView emptyLabel new fail");\r
- return;\r
- }\r
+void BluetoothDeviceListView::InItEmptyLabel() // 暂无已配对设备\r
+{\r
+ if (emptyLabel == nullptr) {\r
+ emptyLabel = new UILabel();\r
+ if (emptyLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView emptyLabel new fail");\r
+ return;\r
}\r
- emptyLabel->SetPosition(83, 205, 300, 45);\r
- emptyLabel->SetTextId(STR_NO_PAIRED_DEV); // 暂无已配对设备\r
- emptyLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- emptyLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- emptyLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- emptyLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- emptyLabel->SetVisible(false);\r
}\r
+ emptyLabel->SetPosition(87, 205, 280, 45); // 87:x 205:y 280:width 45:height\r
+ emptyLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ emptyLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ emptyLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ emptyLabel->SetText("暂无已配对设备");\r
+}\r
\r
- UIViewGroup *BluetoothDeviceListView::GetGroup()\r
- {\r
- return group;\r
- }\r
+UIViewGroup *BluetoothDeviceListView::GetGroup()\r
+{\r
+ return group;\r
+}\r
\r
- /*获取蓝牙已连接设备列表*/\r
- UIList *BluetoothDeviceListView::GetDeviceUIList()\r
- {\r
- return list;\r
- }\r
+UIList *BluetoothDeviceListView::GetDeviceUIList()\r
+{\r
+ return list;\r
+}\r
\r
- void BluetoothDeviceListView::InitNewEquipmentButton()\r
- {\r
- if (newEquipmentButton == nullptr)\r
- {\r
- newEquipmentButton = new UILabelExt();\r
- if (newEquipmentButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView newEquipmentButton new fail");\r
- return;\r
- }\r
- }\r
- newEquipmentButton->SetPosition(133, 390, 200, 40);\r
- newEquipmentButton->SetTextId(STR_BT_HEADSET_RESCAN); // 重新搜索\r
- newEquipmentButton->SetViewId(BLUETOOTH_NEWEQUIPMENT_BUTTON);\r
- newEquipmentButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- newEquipmentButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- // newEquipmentButton->SetImageSrc(PNG_466x100BUTTON_IMAGE, PNG_466x100BUTTON_IMAGE);\r
- newEquipmentButton->SetTextColor(Color::GetColorFromRGBA(0x35, 0x49, 0xff, 0xff));\r
- // newEquipmentButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- newEquipmentButton->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- newEquipmentButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- newEquipmentButton->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- newEquipmentButton->SetTouchable(true);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+void BluetoothDeviceListView::InitNewEquipmentButton()\r
+{\r
+ if (newEquipmentButton == nullptr) {\r
+ newEquipmentButton = new UILabelButton();\r
+ if (newEquipmentButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView newEquipmentButton new fail");\r
return;\r
}\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- newEquipmentButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- newEquipmentButton->SetOnClickListener(clickListener2);\r
- }\r
}\r
+ newEquipmentButton->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
+ newEquipmentButton->SetText("新设备");\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+ return;\r
+ }\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ newEquipmentButton->SetOnClickListener(clickListener);\r
+ newEquipmentButton->SetTextColor(Color::Red());\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ newEquipmentButton->SetOnClickListener(clickListener2);\r
+ newEquipmentButton->SetTextColor(Color::Blue());\r
+ }\r
+ newEquipmentButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+ newEquipmentButton->SetViewId(BLUETOOTH_NEWEQUIPMENT_BUTTON);\r
+ newEquipmentButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+}\r
\r
- UIViewGroup *BluetoothDeviceListView::CreateBluetoothDeviceListView()\r
- {\r
- // 获取currentBdAddr db值 待开发\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView init");\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- group->SetViewId(BLUETOOTH_DEVICE_LIST_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+UIViewGroup *BluetoothDeviceListView::InitShowUpView()\r
+{\r
+ // 获取currentBdAddr db值 待开发\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView init");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
return nullptr;\r
}\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(earDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- /* ------------------------------- titleLabel ------------------------------- */\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabelExt();\r
- if (titleLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");\r
- return nullptr;\r
- }\r
+ }\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");\r
+ return nullptr;\r
}\r
- titleLabel->SetPosition(83, 50, 300, 35);\r
- titleLabel->SetTextId(STR_BLUETOOTH_HEADPHONES);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT,30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT,35);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- titleLabel->SetRollSpeed(23);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- InitList(); // 加载bt设备列表\r
- InitNewEquipmentButton();\r
- InItEmptyLabel();\r
- /* -------------------------------------------------------------------------- */\r
- group->Add(titleLabel);\r
- group->Add(list);\r
- group->Add(emptyLabel);\r
- group->Add(newEquipmentButton);\r
+ }\r
\r
- return group;\r
+ titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
+ titleLabel->SetText("蓝牙耳机");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ InitNewEquipmentButton();\r
+ InItEmptyLabel();\r
+ // 加载列表\r
+ InitList();\r
+ group->Add(newEquipmentButton);\r
+ group->Add(titleLabel);\r
+ group->Add(emptyLabel);\r
+\r
+ UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(earDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(earDragListener2);\r
}\r
+ group->SetViewId(BLUETOOTH_DEVICE_LIST_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
\r
- /*刷新已连接过的蓝牙设备列表视图*/\r
- void BluetoothDeviceListView::RefreshBluetoothDeviceListView(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshBluetoothDeviceListView");\r
- if (list && newEquipmentButton)\r
- {\r
- switch (BluetoothModel::GetInstance()->GetConnedDevicesCase().Size())\r
- {\r
- case 0:\r
- list->Resize(380, 0);\r
- break;\r
- case 1:\r
- list->Resize(380, 100);\r
- break;\r
- case 2:\r
- list->Resize(380, 200);\r
- break;\r
- default:\r
- list->Resize(380, 250);\r
- break;\r
- }\r
- // newEquipmentButton->SetY(list->GetY() + list->GetHeight() + 20);\r
- list->RefreshList();\r
- list->Invalidate();\r
- // newEquipmentButton->Invalidate();\r
- }\r
+void BluetoothDeviceListView::RefreshText(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText");\r
+ List<BluetoothCaseInfo> &bluetoothConnedList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+ bool ret = bluetoothConnedList.IsEmpty();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText bluetoothConnedList.IsEmpty ret = %d", ret);\r
+ if (ret) {\r
+ emptyLabel->SetVisible(true);\r
+ } else {\r
+ emptyLabel->SetVisible(false);\r
}\r
+}\r
\r
}
\ No newline at end of file
#include "PlayersPresenter.h"\r
#include "BluetoothPresenter.h"\r
#include "SettingModel.h"\r
-#include "ui_resource_string.h"\r
\r
-namespace OHOS\r
+namespace OHOS {\r
+static BluetoothEarListView *g_pBluetoothEarListView{nullptr};\r
+\r
+BluetoothEarListView::BluetoothEarListView()\r
{\r
- static BluetoothEarListView *g_pBluetoothEarListView{nullptr};\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::BluetoothEarListView");\r
+ g_pBluetoothEarListView = this;\r
+}\r
\r
- BluetoothEarListView::BluetoothEarListView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::BluetoothEarListView");\r
- g_pBluetoothEarListView = this;\r
- }\r
+BluetoothEarListView::~BluetoothEarListView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::~BluetoothEarListView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete adapterText;\r
+ adapterText = nullptr;\r
+ delete list;\r
+ list = nullptr;\r
+ delete rescanButton;\r
+ rescanButton = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ g_pBluetoothEarListView = nullptr;\r
+}\r
+\r
+BluetoothEarListView *BluetoothEarListView::GetInstance()\r
+{\r
+ return g_pBluetoothEarListView;\r
+}\r
\r
- BluetoothEarListView::~BluetoothEarListView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::~BluetoothEarListView");\r
- if (group)\r
- {\r
- group->RemoveAll();\r
- if (titleLabel)\r
- {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (adapterText)\r
- {\r
- delete adapterText;\r
- adapterText = nullptr;\r
- }\r
- if (list)\r
- {\r
- delete list;\r
- list = nullptr;\r
- }\r
- if (rescanButton)\r
- {\r
- delete rescanButton;\r
- rescanButton = nullptr;\r
- }\r
- if (cancelConnedRequestButton)\r
- {\r
- delete cancelConnedRequestButton;\r
- cancelConnedRequestButton = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
+void BluetoothEarListView::InitList()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList");\r
+ // list type\r
+ if (adapterText == nullptr) {\r
+ adapterText = new BluetoothCaseListAdapter();\r
+ if (adapterText == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView adapterText new fail");\r
+ return;\r
}\r
- g_pBluetoothEarListView = nullptr;\r
}\r
-\r
- BluetoothEarListView *BluetoothEarListView::GetInstance()\r
- {\r
- return g_pBluetoothEarListView;\r
- }\r
-\r
- void BluetoothEarListView::InitList()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList");\r
- // list type\r
- if (adapterText == nullptr)\r
- {\r
- adapterText = new BluetoothCaseListAdapter();\r
- if (adapterText == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView adapterText new fail");\r
- return;\r
- }\r
- }\r
- if (list == nullptr)\r
- {\r
- list = new UIList(UIList::VERTICAL);\r
- if (list == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView list new fail");\r
- return;\r
- }\r
- list->SetPosition(43, 120, 380, 300);\r
- list->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- list->SetStyle(STYLE_BORDER_RADIUS, 50);\r
- list->SetStartIndex(0);\r
- // list->EnableAutoAlign(true);\r
- // list->SetIntercept(true);\r
- list->SetDragACCLevel(5);\r
- list->SetSwipeACCLevel(200);\r
- // list->SetReboundSize(30);\r
- // list->SetScrollBlankSize(30);\r
- list->SetAdapter(adapterText);\r
- group->Add(list);\r
+ if (list == nullptr) {\r
+ list = new UIList(UIList::VERTICAL);\r
+ if (list == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView list new fail");\r
+ return;\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList end");\r
+ list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height\r
+ list->SetStartIndex(0); // 0 : list start index\r
+ list->SetAdapter(adapterText);\r
+ group->Add(list);\r
}\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList end");\r
+}\r
\r
- UIViewGroup *BluetoothEarListView::GetGroup()\r
- {\r
- return group;\r
- }\r
+UIViewGroup *BluetoothEarListView::GetGroup()\r
+{\r
+ return group;\r
+}\r
\r
- UIList *BluetoothEarListView::GetScanUIList()\r
- {\r
- return list;\r
- }\r
+UIList *BluetoothEarListView::GetScanUIList()\r
+{\r
+ return list;\r
+}\r
\r
- void BluetoothEarListView::SetTitleLabel(const char *text)\r
- {\r
- // titleLabel->SetText(text);\r
- }\r
+void BluetoothEarListView::SetTitleLabel(const char *text)\r
+{\r
+ titleLabel->SetText(text);\r
+}\r
\r
- void BluetoothEarListView::SetNewEquipmentButtonAdd(void)\r
- {\r
- // group->Add(rescanButton);\r
- }\r
+void BluetoothEarListView::SetNewEquipmentButtonAdd(void)\r
+{\r
+ group->Add(rescanButton);\r
+}\r
\r
- void BluetoothEarListView::SetNewEquipmentButtonRemove(void)\r
- {\r
- // group->Remove(rescanButton);\r
- }\r
+void BluetoothEarListView::SetNewEquipmentButtonRemove(void)\r
+{\r
+ group->Remove(rescanButton);\r
+}\r
\r
- void BluetoothEarListView::SetCancelConnedRequestButtonAdd(void)\r
- {\r
- // group->Add(cancelConnedRequestButton);\r
- }\r
+void BluetoothEarListView::SetCancelConnedRequestButtonAdd(void)\r
+{\r
+ group->Add(cancelConnedRequestButton);\r
+}\r
\r
- void BluetoothEarListView::SetCancelConnedRequestButtonRemove(void)\r
- {\r
- // group->Remove(cancelConnedRequestButton);\r
- }\r
+void BluetoothEarListView::SetCancelConnedRequestButtonRemove(void)\r
+{\r
+ group->Remove(cancelConnedRequestButton);\r
+}\r
\r
- void BluetoothEarListView::InitButten(UILabelButton **button, const char *text, const char *id)\r
- {\r
- if (*button == nullptr)\r
- {\r
- *button = new UILabelButton();\r
- if (*button == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten new fail");\r
- return;\r
- }\r
- }\r
- (*button)->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
- (*button)->SetText(text);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten button GetInstance fail");\r
+void BluetoothEarListView::InitButten(UILabelButton **button, const char *text, const char* id)\r
+{\r
+ if (*button == nullptr) {\r
+ *button = new UILabelButton();\r
+ if (*button == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten new fail");\r
return;\r
}\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- (*button)->SetOnClickListener(clickListener);\r
- (*button)->SetTextColor(Color::Red());\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- (*button)->SetOnClickListener(clickListener2);\r
- (*button)->SetTextColor(Color::Blue());\r
- }\r
- (*button)->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- (*button)->SetViewId(id);\r
- (*button)->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
}\r
-\r
- void BluetoothEarListView::InitNewEquipmentButton()\r
- {\r
- if (rescanButton == nullptr)\r
- {\r
- rescanButton = new UILabelExt();\r
- if (rescanButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView rescanButton new fail");\r
- return;\r
- }\r
- }\r
- rescanButton->SetPosition(133, 390, 200, 40);\r
- rescanButton->SetTextId(STR_BT_HEADSET_RESCAN); // 重新搜索\r
- rescanButton->SetViewId(BLUETOOTH_RESCAN_BUTTON);\r
- rescanButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- rescanButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- rescanButton->SetTextColor(Color::GetColorFromRGBA(0x35, 0x49, 0xff, 0xff));\r
- // rescanButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- rescanButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- rescanButton->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- rescanButton->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- rescanButton->SetTouchable(true);\r
- group->Add(rescanButton);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- rescanButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- rescanButton->SetOnClickListener(clickListener2);\r
- }\r
+ (*button)->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
+ (*button)->SetText(text);\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten button GetInstance fail");\r
+ return;\r
}\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ (*button)->SetOnClickListener(clickListener);\r
+ (*button)->SetTextColor(Color::Red());\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ (*button)->SetOnClickListener(clickListener2);\r
+ (*button)->SetTextColor(Color::Blue());\r
+ }\r
+ (*button)->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+ (*button)->SetViewId(id);\r
+ (*button)->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+}\r
\r
- UIViewGroup *BluetoothEarListView::InitShowUpView()\r
- {\r
- // 获取currentBdAddr db值 待开发\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView init");\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- /* -------------------------------------------------------------------------- */\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabelExt();\r
- if (titleLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");\r
- return nullptr;\r
- }\r
- }\r
- titleLabel->SetPosition(83, 50, 300, 35);\r
- titleLabel->SetTextId(STR_BLUETOOTH_HEADPHONES);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT,30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT,35);\r
- titleLabel->SetRollSpeed(23);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- group->Add(titleLabel);\r
- /* -------------------------------------------------------------------------- */\r
- // 加载列表\r
- InitList();\r
- // 按钮初始化\r
- // InitButten(&rescanButton, "重新扫描", BLUETOOTH_RESCAN_BUTTON);\r
- // InitButten(&cancelConnedRequestButton, "取消", BLUETOOTH_CANCELCONNEDREQUEST_BUTTON);\r
- InitNewEquipmentButton();\r
-\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+UIViewGroup *BluetoothEarListView::InitShowUpView()\r
+{\r
+ // 获取currentBdAddr db值 待开发\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView init");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
return nullptr;\r
}\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(earDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_EARLIST_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
}\r
-\r
- // 刷新扫描出来的设备列表\r
- void BluetoothEarListView::RefreshBluetoothEarListView(void)\r
- {\r
- if (list)\r
- {\r
- switch (BluetoothModel::GetInstance()->GetCase().size())//根据扫描出的设备数量,设置扫描列表的高度,使其高度自适应\r
- {\r
- case 0:\r
- list->Resize(380, 0);\r
- break;\r
- case 1:\r
- list->Resize(380, 100);\r
- break;\r
- case 2:\r
- list->Resize(380, 200);\r
- break;\r
- default:\r
- list->Resize(380, 250);\r
- break;\r
- }\r
- list->RefreshList();\r
- list->Invalidate();\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView titleLabel new fail");\r
+ return nullptr;\r
}\r
}\r
+ titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
+ titleLabel->SetText("正在扫描");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ // 加载列表\r
+ InitList();\r
+ InitButten(&rescanButton, "重新扫描", BLUETOOTH_RESCAN_BUTTON);\r
+ InitButten(&cancelConnedRequestButton, "取消", BLUETOOTH_CANCELCONNEDREQUEST_BUTTON);\r
+ group->Add(titleLabel);\r
+\r
+ UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(earDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(earDragListener2);\r
+ }\r
+ group->SetViewId(BLUETOOTH_EARLIST_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
}
\ No newline at end of file
#include "SettingModel.h"\r
#include "common/image_cache_manager.h"\r
#include "graphic_service.h"\r
-#include "uicomponents/UIComponents.h"\r
-#include "uiservice/include/ui_service.h"\r
-#include <custom_utils.h>\r
\r
-namespace OHOS\r
-{\r
- static BluetoothEarPhoneView *g_pBluetoothEarPhoneView{nullptr};\r
+namespace OHOS {\r
+static BluetoothEarPhoneView *g_pBluetoothEarPhoneView{nullptr};\r
#define BLUETOOTH_IMAGE_X 175\r
#define BLUETOOTH_IMAGE_Y 175\r
#define BLUETOOTH_IMAGE_WIDTH 104\r
#define BLUETOOTH_IMAGE_HEIGHT 104\r
#define BLUETOOTH_DELAY 200\r
\r
- osTimerId_t g_stopScanHandle = nullptr;\r
- static constexpr uint64_t MS_SCAN_TIME = 25000;\r
+GraphicTimer* g_stopScanHandle = nullptr;\r
+static constexpr uint64_t MS_SCAN_TIME = 25000;\r
\r
- static constexpr int16_t CONNECTING_IMAGE_ANIMATOR_VIEW_X = 183;\r
- static constexpr int16_t CONNECTING_IMAGE_ANIMATOR_VIEW_Y = 153;\r
- static constexpr int16_t CONNECTING_IMAGE_ANIMATOR_VIEW_W = 100;\r
- static constexpr int16_t CONNECTING_IMAGE_ANIMATOR_VIEW_H = 120;\r
- static constexpr int16_t CONNECTING_IMAGE_ANIMATOR_DELAY = 50; // 图片更新间隔\r
- static constexpr const char *connectImagePaths = "/user/res/connect/";\r
- BluetoothEarPhoneView::BluetoothEarPhoneView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BluetoothEarPhoneView");\r
- g_pBluetoothEarPhoneView = this;\r
- }\r
+BluetoothEarPhoneView::BluetoothEarPhoneView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BluetoothEarPhoneView");\r
+ g_pBluetoothEarPhoneView = this;\r
+}\r
\r
- BluetoothEarPhoneView::~BluetoothEarPhoneView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::~BluetoothEarPhoneView");\r
- if (group)\r
- {\r
- group->RemoveAll();\r
- if (imageAnimator)\r
- {\r
- imageAnimator->Stop();\r
- delete imageAnimator;\r
- imageAnimator = nullptr;\r
- FreeImageInfoArray(connectPathsArray, connectImagePaths, CONNECTING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- g_pBluetoothEarPhoneView = nullptr;\r
- }\r
+BluetoothEarPhoneView::~BluetoothEarPhoneView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::~BluetoothEarPhoneView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete imageAnimator;\r
+ imageAnimator = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ g_pBluetoothEarPhoneView = nullptr;\r
+}\r
\r
- BluetoothEarPhoneView *BluetoothEarPhoneView::GetInstance()\r
- {\r
- return g_pBluetoothEarPhoneView;\r
- }\r
+BluetoothEarPhoneView *BluetoothEarPhoneView::GetInstance()\r
+{\r
+ return g_pBluetoothEarPhoneView;\r
+}\r
\r
- // 扫描动画创建\r
- void BluetoothEarPhoneView::BtScanImageAnimator()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtScanImageAnimator init");\r
- connectPathsArray = CreateImageInfoArray(connectImagePaths, CONNECTING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- if (imageAnimator == nullptr)\r
- {\r
- imageAnimator = new UIImageAnimatorView();\r
- if (imageAnimator == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateDeviceUnBindingView]imageAnimator new fail");\r
- return;\r
- }\r
- for (uint8_t i = 0; i < CONNECTING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
- {\r
- connectImageInfo[i].imageInfo = (connectPathsArray[i]);\r
- connectImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
- connectImageInfo[i].pos.x = CONNECTING_IMAGE_ANIMATOR_VIEW_X;\r
- connectImageInfo[i].pos.y = CONNECTING_IMAGE_ANIMATOR_VIEW_Y;\r
- connectImageInfo[i].width = CONNECTING_IMAGE_ANIMATOR_VIEW_W;\r
- connectImageInfo[i].height = CONNECTING_IMAGE_ANIMATOR_VIEW_H;\r
- }\r
- imageAnimator->SetPosition(CONNECTING_IMAGE_ANIMATOR_VIEW_X, CONNECTING_IMAGE_ANIMATOR_VIEW_Y, CONNECTING_IMAGE_ANIMATOR_VIEW_W, CONNECTING_IMAGE_ANIMATOR_VIEW_H);\r
- imageAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
- imageAnimator->SetImageAnimatorSrc(connectImageInfo, CONNECTING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, CONNECTING_IMAGE_ANIMATOR_DELAY);\r
- imageAnimator->SetRepeat(true);\r
- imageAnimator->SetSizeFixed(true);\r
- group->Add(imageAnimator);\r
- }\r
- }\r
+void BluetoothEarPhoneView::BtScanImageAnimator()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtScanImageAnimator init");\r
+ const char *searchImagePath[BLUETOOTH_SEARCH_IMAGE_NUM] = {\r
+ PNG_A019_080_IMAGE_PATH,\r
+ PNG_A019_081_IMAGE_PATH,\r
+ PNG_A019_082_IMAGE_PATH,\r
+ PNG_A019_083_IMAGE_PATH,\r
+ PNG_A019_084_IMAGE_PATH,\r
+ PNG_A019_085_IMAGE_PATH,\r
+ PNG_A019_086_IMAGE_PATH,\r
+ PNG_A019_087_IMAGE_PATH,\r
+ };\r
\r
- // 动画开始\r
- void BluetoothEarPhoneView::BtAnimatorStart(void)\r
- {\r
- imageAnimator->Start();\r
+ if (imageAnimator == nullptr) {\r
+ imageAnimator = new UIImageAnimatorView();\r
+ if (imageAnimator == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView new imageAnimator fail");\r
+ return;\r
+ }\r
+ for (uint8_t i = 0; i < BLUETOOTH_SEARCH_IMAGE_NUM; i++) {\r
+ searchImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(searchImagePath[i]);\r
+ searchImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
+ searchImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;\r
+ searchImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;\r
+ searchImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;\r
+ searchImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;\r
+ }\r
+ imageAnimator->SetPosition(175, 175, 104, 104); // 175:x 175:y 104:width 104:height\r
+ imageAnimator->SetImageAnimatorSrc(searchImageInfo, BLUETOOTH_SEARCH_IMAGE_NUM, BLUETOOTH_DELAY);\r
+ imageAnimator->SetRepeat(true);\r
+ group->Add(imageAnimator);\r
}\r
+}\r
\r
- // 动画停止\r
- void BluetoothEarPhoneView::BtAnimatorStop(void)\r
- {\r
- imageAnimator->Stop();\r
- }\r
+void BluetoothEarPhoneView::BtAnimatorStart(void)\r
+{\r
+ imageAnimator->Start();\r
+}\r
\r
- UIViewGroup *BluetoothEarPhoneView::InitShowUpView()\r
- {\r
- // 获取currentBdAddr db值 待开发\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
+void BluetoothEarPhoneView::BtAnimatorStop(void)\r
+{\r
+ imageAnimator->Stop();\r
+}\r
\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+UIViewGroup *BluetoothEarPhoneView::InitShowUpView()\r
+{\r
+ // 获取currentBdAddr db值 待开发\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
return nullptr;\r
}\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(earDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_EAR_PHONE_VIEW);\r
- // 动画\r
- BtScanImageAnimator();\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
}\r
-\r
- // 取消br扫描处理\r
- static void CancelBrScanHandle(void)\r
- {\r
- /* ---------------------------------- 取消定时器 --------------------------------- */\r
- if (g_stopScanHandle != nullptr)\r
- {\r
- osTimerStop(g_stopScanHandle);\r
- osStatus_t ret = osTimerDelete(g_stopScanHandle);\r
- if (ret != osOK)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
- return;\r
- }\r
- g_stopScanHandle = nullptr;\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView titleLabel new fail");\r
+ return nullptr;\r
}\r
- /* --------------------------------- 取消屏幕常亮 --------------------------------- */\r
- ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
- /* -------------------------------------------------------------------------- */\r
- bool results = gap_br_cancel_discovery();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelBtDiscovery results %d", results);\r
+ titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
+ titleLabel->SetText("正在搜索");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(titleLabel);\r
}\r
-\r
- // 结束扫描处理\r
- static void EndScanHandle(void)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "EndScanHandle");\r
- if (BluetoothModel::GetInstance()->GetCase().size() == 0)\r
- {\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhoneView == nullptr)\r
- { // 暂停动画\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
- return;\r
- }\r
- bluetoothEarPhoneView->BtAnimatorStop();\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- JumpView *jumpView = JumpView::GetInstance();\r
- if (jumpView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- return;\r
- }\r
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
- JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
- if (mainBluetoothView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
- return;\r
- }\r
- mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, TIPSFAILMESSAGEVIEW);\r
- }\r
- }\r
- else\r
- {\r
- // 按rssi信息重新排序\r
- BluetoothModel::GetInstance()->SortScansCaseRssi();\r
- // 刷新\r
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
- if (bluetoothEarListView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");\r
- return;\r
- }\r
- if (bluetoothEarListView->GetScanUIList() == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");\r
- return;\r
- }\r
- bluetoothEarListView->GetScanUIList()->RefreshList();\r
- // 扫描完成\r
- bluetoothEarListView->SetTitleLabel("扫描完成");\r
- bluetoothEarListView->SetNewEquipmentButtonAdd();\r
- }\r
+ UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+ return nullptr;\r
}\r
-\r
- // 定时器回调函数\r
- static void ScanTimerCallbackProc(int data)\r
- {\r
- (void)data;\r
- CancelBrScanHandle();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Bt scan end jumpView");\r
- EndScanHandle();\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(earDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(earDragListener2);\r
}\r
+ group->SetViewId(BLUETOOTH_EAR_PHONE_VIEW);\r
+ // 动画\r
+ BtScanImageAnimator();\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
\r
- static void ScanTimerCallback(int data)\r
- {\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(ScanTimerCallbackProc, data));\r
+void CancelBrScanHandle(void)\r
+{\r
+ if (g_stopScanHandle != nullptr) {\r
+ delete g_stopScanHandle;\r
+ g_stopScanHandle = nullptr;\r
}\r
+ bool results = gap_br_cancel_discovery();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelBtDiscovery results %d", results);\r
+}\r
\r
- // 蓝牙start\r
- void BluetoothEarPhoneView::BtEnable()\r
- {\r
- bool ret;\r
- bool results;\r
- // 经典蓝牙扫描\r
- setScanStatus(true); // 开始扫描标记\r
- // BluetoothModel::GetInstance()->SetCaseListClear(); // 扫描list清空\r
- BluetoothModel::GetInstance()->Init(); // 清空list,获取paired devicelist\r
- ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
- if (ret)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");\r
+void EndScanHandle(void)\r
+{\r
+ if (BluetoothModel::GetInstance()->GetCase().size() == 0) {\r
+ BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+ if (bluetoothEarPhoneView == nullptr) { // 暂停动画\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
return;\r
}\r
- else\r
- {\r
- results = gap_br_start_discovery();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable StartBtDiscovery results %d", results);\r
- }\r
- /* -------------------------------------------------------------------------- */\r
- // ScreenTurnOn(MS_SCAN_TIME);\r
- /* --------------------------------- 设置屏幕为常亮 -------------------------------- */\r
- ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);\r
- /* -------------------------------------------------------------------------- */\r
- /*开启定时器*/\r
- if (g_stopScanHandle != nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopScanHandle != nullptr");\r
- return;\r
+ bluetoothEarPhoneView->BtAnimatorStop();\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+ JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
+ if (mainBluetoothView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
+ return;\r
+ }\r
+ mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, TIPSFAILMESSAGEVIEW);\r
}\r
- g_stopScanHandle = osTimerNew((osTimerFunc_t)ScanTimerCallback, osTimerPeriodic, nullptr, nullptr);\r
- if (g_stopScanHandle == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerNew failed!!");\r
+ } else {\r
+ // 按rssi信息重新排序\r
+ BluetoothModel::GetInstance()->SortScansCaseRssi();\r
+ // 刷新\r
+ BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+ if (bluetoothEarListView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");\r
return;\r
}\r
- uint32 tick = osMs2Tick(MS_SCAN_TIME);\r
- osStatus_t retTimer = osTimerStart(g_stopScanHandle, tick);\r
- if (retTimer != osOK)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerStart failed, ret = %lx!!", retTimer);\r
- if (g_stopScanHandle != nullptr)\r
- {\r
- retTimer = osTimerDelete(g_stopScanHandle);\r
- if (retTimer != osOK)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerDelete ret = %lx!!", retTimer);\r
- return;\r
- }\r
- g_stopScanHandle = nullptr;\r
- }\r
+ if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");\r
return;\r
}\r
- return;\r
+ bluetoothEarListView->GetScanUIList()->RefreshList();\r
+ // 扫描完成\r
+ bluetoothEarListView->SetTitleLabel("扫描完成");\r
+ bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+ RootView::GetInstance()->Invalidate();\r
}\r
+}\r
\r
- void BluetoothEarPhoneView::StopBtDiscovery(void)\r
- {\r
- bool ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
- if (!ret)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Bt is not Discovering");\r
+// 定时器回调函数\r
+static void BluetoothScanTimerCallbackProc(void* data)\r
+{\r
+ (void)data;\r
+ CancelBrScanHandle();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan end jumpView");\r
+ EndScanHandle();\r
+}\r
+\r
+void BluetoothScanTimerCallback(void* data)\r
+{\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(BluetoothScanTimerCallbackProc, data));\r
+}\r
+\r
+// 蓝牙start\r
+void BluetoothEarPhoneView::BtEnable()\r
+{\r
+ bool ret;\r
+ bool results;\r
+ // 经典蓝牙扫描\r
+ setScanStatus(true); // 开始扫描标记\r
+ BluetoothModel::GetInstance()->SetCaseListClear(); // 扫描list清空\r
+ ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
+ if (ret) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");\r
+ return;\r
+ } else {\r
+ results = gap_br_set_inquiry_paramters(DEVICE_MAJOR_CLASS_AUDIO_VIDEO, 0);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_set_inquiry_paramters results %d", results);\r
+ results = gap_br_start_discovery();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_start_discovery results %d", results);\r
+ }\r
+ if (g_stopScanHandle != nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopScanHandle != nullptr");\r
+ return;\r
+ }\r
+ uint32 tick = GetOSTick(MS_SCAN_TIME);\r
+ g_stopScanHandle = new GraphicTimer(tick, BluetoothScanTimerCallback, nullptr, true);\r
+ if (g_stopScanHandle == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable new GraphicTimer failed!!");\r
+ return;\r
+ }\r
+ bool retTimer = g_stopScanHandle->Start();\r
+ if (!retTimer) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Start failed");\r
+ if (g_stopScanHandle != nullptr) {\r
+ delete g_stopScanHandle;\r
+ g_stopScanHandle = nullptr;\r
}\r
- CancelBrScanHandle();\r
return;\r
}\r
+ return;\r
+}\r
\r
- /*\r
- * @brief 设置是否已经开始扫描标记\r
- */\r
- void BluetoothEarPhoneView::setScanStatus(bool value)\r
- {\r
- scanStart = value;\r
- }\r
- \r
- //获取是否已经开始扫描标记\r
- bool BluetoothEarPhoneView::getScanStatus(void)\r
- {\r
- return scanStart;\r
+void BluetoothEarPhoneView::StopBtDiscovery(void)\r
+{\r
+ bool ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
+ if (!ret) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Bt is not Discovering");\r
+ return;\r
}\r
+ CancelBrScanHandle();\r
+ return;\r
+}\r
+\r
+void BluetoothEarPhoneView::setScanStatus(bool value)\r
+{\r
+ scanStart = value;\r
+}\r
+bool BluetoothEarPhoneView::getScanStatus(void)\r
+{\r
+ return scanStart;\r
+}\r
}
\ No newline at end of file
* Create: 2022-3-22\r
*/\r
\r
-#include <BluetoothHeadsetEvent.h>\r
+#include "BluetoothHeadsetEvent.h"\r
#include "bts_avrcp_target.h"\r
#include "bts_avrcp_controller.h"\r
#include "PlayersModel.h"\r
-#include "service_id_define.h"\r
#include "graphic_service.h"\r
-#include <bts_a2dp_source.h>\r
-#include "notification_manager.h"\r
\r
using namespace OHOS;\r
\r
\r
void BtAvrcpVolumeChangedSyncMedia(uint8_t a2dp_volume)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[BtAvrcpVolumeChangedSyncMedia]::a2dp_volume = 0x%x\r\n", a2dp_volume);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[BtAvrcpVolumeChangedSyncMedia]::a2dp_volume = 0x%x\r\n", a2dp_volume);\r
int32_t audio_volume = a2dp_volume * BT_A2DP_MEDIA_VOL_LEVEL / AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;\r
AudioManager::GetInstance().SetVolume(AUDIO_STREAM_A2DP_MUSIC, audio_volume); /* 设置增益音量 */\r
g_avrcp_tg_local_media_vol = a2dp_volume;\r
void BtAvrcpTgNotifyVolumeChangedProc(uint8_t a2dp_volume)\r
{\r
int32_t audio_volume = a2dp_volume * BT_A2DP_MEDIA_VOL_LEVEL / AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NotifyVolume = %d", audio_volume);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "NotifyVolume = %d", audio_volume);\r
AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, audio_volume); // 耳机连接手表场景调节手表音量\r
- /* ---------------------------- 若当前音乐播放器为手机音乐则同步更新音乐播放器的声音进度条 --------------------------- */\r
- if(PlayersModel::GetInstance()->GetMusicSource())\r
- {\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::UpdateVolumeValue, OHOS::PlayersModel::GetInstance()));\r
- }\r
- /* -------------------------------------------------------------------------- */\r
}\r
\r
-//根据传入的按键操作类型和值,执行相应的操作并通知媒体状态变化\r
void UsingPressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue)\r
{\r
- if(NotificationManager::GetInstance()->GetWatchCallStatus())\r
- {\r
- return ;\r
- }\r
-\r
bt_avrcp_tg_evt_status_param event;\r
- // printf("keyOperation = %d, keyValue = %d\n");\r
switch (keyOperation) {\r
case AVRCP_KEY_VOLUME_UP: // 耳机控制手表加减音量不走key_operation事件\r
case AVRCP_KEY_VOLUME_DOWN: // 减小音量\r
if (g_avrcp_tg_local_media_vol == AVRCP_ABSOLUTE_VOLUME_INVALID) {\r
int32_t audio_volume = AudioManager::GetInstance().GetVolume(AUDIO_STREAM_A2DP_MUSIC);\r
uint8_t a2dp_volume = (uint8_t)(audio_volume * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / BT_A2DP_MEDIA_VOL_LEVEL);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "audio_volume 0x%x, a2dp_volume 0x%x\n", audio_volume, a2dp_volume);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audio_volume 0x%x, a2dp_volume 0x%x\n", audio_volume, a2dp_volume);\r
g_avrcp_tg_local_media_vol = a2dp_volume;\r
}\r
\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "get local media volume, a2dp_volume = 0x%x", g_avrcp_tg_local_media_vol);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "get local media volume, a2dp_volume = 0x%x", g_avrcp_tg_local_media_vol);\r
return g_avrcp_tg_local_media_vol;\r
}\r
\r
\r
void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "avrcp ct update conn stat:%u", state);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct update conn stat:%u", state);\r
if (bdAddr == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
return;\r
g_avrcp_srv_inf.avrcp_srv_conn_stat = state;\r
}\r
\r
-bd_addr_t *BtAvrcpSrvGetActiveAddr(void)\r
+static bd_addr_t *BtAvrcpSrvGetActiveAddr(void)\r
{\r
return &g_avrcp_srv_inf.bd_addr;\r
}\r
\r
-\r
-\r
void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
if (bdAddr == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
return;\r
}\r
}\r
\r
-/* -------------------------------------------------------------------------- */\r
-void user_avrcp_ct_press_button(const bd_addr_t *bd_addr, int32_t key_operation)\r
-{\r
- (void)avrcp_ct_press_button(bd_addr, key_operation);\r
- uint8_t sleep_cnt = 0;\r
- while (1) { //持续等待接收一个响应消息来确认按键按下操作已被正确处理\r
- osal_msleep(100); /* sleep 1000 ms */\r
- if (g_avrcp_srv_inf.avrcp_button_flag == AVRCP_SRV_PRESS_VALUE) {\r
- (void)avrcp_ct_release_button(bd_addr, key_operation);\r
- break;\r
- }\r
- sleep_cnt++;\r
- if (sleep_cnt > 20) { /* sleep 20 times */\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"not receive rsp press button msg\n");\r
- break;\r
- }\r
- }\r
-}\r
-\r
-void user_avrcp_ct_get_element_attributes(const bd_addr_t *bd_addr)\r
-{\r
- avrcp_ct_get_element_attr_para_t element_attr_param;\r
- element_attr_param.attr_num = AVRCP_CT_ELEMENT_ATTR_TRACK_PLAYING_TIME;\r
- element_attr_param.attr_id_list = (unsigned int *)(void *)malloc(sizeof(unsigned int) * element_attr_param.attr_num);\r
- for (int i = 0; i < element_attr_param.attr_num; i++) \r
- {\r
- element_attr_param.attr_id_list[i] = (unsigned int)i + 1;\r
- }\r
- avrcp_ct_get_element_attributes(bd_addr, &element_attr_param);\r
- if (element_attr_param.attr_id_list != NULL) \r
- {\r
- free(element_attr_param.attr_id_list);\r
- element_attr_param.attr_id_list = NULL;\r
- }\r
-}\r
-/* -------------------------------------------------------------------------- */\r
-//记录按下按钮的回调事件以及按键操作值\r
static void BtAvrcpCtPressButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
{\r
if (bd_addr == nullptr) {\r
}\r
}\r
\r
-//记录释放按钮的回调事件以及按键操作值\r
static void BtAvrcpCtReleaseButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
{\r
UNUSED(bd_addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct release button cbk key:%x\n", key_operation);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct release button cbk key:%d\n", key_operation);\r
if (g_avrcp_srv_inf.avrcp_button_flag == AVRCP_SRV_PRESS_VALUE) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct released button button_flag change:%u->%u\n",\r
g_avrcp_srv_inf.avrcp_button_flag, AVRCP_SRV_RELEASED_VALUE);\r
for (uint8_t i = 0; i < event->event_num; i++) {\r
if (event->event_id[i] == AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
}\r
}\r
\r
for (uint8_t i = 0; i < event->event_num; i++) {\r
if (event->event_id[i] != AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
}\r
}\r
}\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
return;\r
}\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtAvrcpCtGetPlayStatusCallback] songlen:%u, songpos:%u, playstatus:%u:",\r
- status->song_length, status->song_position, status->play_status);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "test get play status songlen:%u, songpos:%u, playstatus:%u:",\r
+ status->song_length, status->song_position, status->play_status);\r
}\r
\r
static void BtAvrcpCtHdlNotifyVolumeRspCbk(avrcp_ct_notification_value_cb_t *notification)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[BtAvrcpCtHdlNotifyVolumeRspCbk] volume: 0x%x\n", \r
- notification->volume); /* 注册事件后通知的音量 */\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Set local volume: 0x%x\n", notification->volume); /* 注册事件后通知的音量 */\r
BtAvrcpTgNotifyVolumeChangedProc((uint8_t)notification->volume);\r
}\r
\r
-static void BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk(avrcp_ct_notification_value_cb_t *notification)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk] playback status changed :%u\n",\r
- notification->play_status);\r
- if(notification->play_status == AVRCP_PLAY_STATUS_PLAYING) { //AVRCP媒体playing状态\r
- PlayersModel::GetInstance()->set_player_state(true); //更新UI显示\r
- } else {\r
- PlayersModel::GetInstance()->set_player_state(false);\r
- }\r
- return;\r
-}\r
-//收到来自TG返回的Notification时回调函数\r
static void BtAvrcpCtNotificationCallback(\r
const bd_addr_t *bd_addr, avrcp_notify_event_t event_id, avrcp_ct_notification_value_cb_t *notification)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ct notification cbk event_id:0x%x\n", event_id);\r
bool notify_flag = true;\r
switch (event_id) {\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED: //播放状态变更事件,从播放变为暂停、停止等状态,会触发这个事件\r
- // BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk(notification);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_CHANGED: //track状态变更事件,切换到下一首、上一首歌曲等情况,会触发此事件\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "track changed event_id:0x%x\n", event_id);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END: //track结束事件,当前播放的曲目播放到末尾时,触发这个事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START: //track开始事件,当曲目开始播放时,触发这个事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED: //播放位置改变事件,当播放进度的位置发生变化时,比如快进、快退等操作导致播放位置改变,会触发此事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED: //电池状态变更事件,当蓝牙设备的电池状态发生变化时,电量降低、充电状态改变等,会触发这个事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED: //系统状态变更事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED: //播放器配置变更事件,如音效设置、播放模式设置等,会触发此事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED: //播放内容变更事件,当 “正在播放” 列表中的内容发生变化时,比如添加了新的曲目、删除了曲目等情况,会触发这个事件。\r
- break;\r
- case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED: //可使用的播放器变更事件,当系统中可用于播放的播放器设备发生变化时,比如新的播放器设备连接到系统或者已有播放器设备断开连接,会触发此事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED: //播放地址变更事件\r
- break;\r
- case AVRCP_NOTIFY_EVENT_UIDS_CHANGED: //UID 变更事件\r
+ case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "tg notify ct playback status changed :%u\n",\r
+ notification->play_status);\r
break;\r
- case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED: //TG 端音量变更事件\r
+ case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
BtAvrcpCtHdlNotifyVolumeRspCbk(notification);\r
break;\r
- case AVRCP_NOTIFY_EVENT_RESERVED: //保留\r
+ case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play conent changed event_id:0x%x\n", event_id);\r
+ break;\r
+ case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "track changed event_id:0x%x\n", event_id);\r
break;\r
+ case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
+ case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
+ case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
+ case AVRCP_NOTIFY_EVENT_RESERVED:\r
default:\r
notify_flag = false;\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "invalid event id event_id:0x%x\n", event_id);\r
#include "BluetoothItemView.h"\r
#include "wearable_log.h"\r
#include "UiConfig.h"\r
-#include "player/include/PlayersView.h"\r
-#include "ui_resource_image.h"\r
-#include "ui_resource_string.h"\r
-#include "CallerLogModel.h"\r
-#include "custom_utils.h"\r
-#include "notification_manager.h"\r
+#include "common/image_cache_manager.h"\r
\r
-#ifdef SUPPORT_PHONE_SERVICE\r
-#include "PhoneAGService.h"\r
-#endif\r
-\r
-#include "ConfigModel.h"\r
-#include "languagecode/LanguageInit.h"\r
-\r
-namespace OHOS\r
-{\r
- constexpr uint16_t BUTTON_WIDTH = 351;\r
- constexpr uint16_t BUTTON_HEIGHT = 81;\r
- constexpr uint16_t IMAGE_WIDTH = 81;\r
- constexpr uint16_t IMAGE_HEIGHT = 81;\r
- constexpr uint16_t LABEL_HEIGHT = 81;\r
- constexpr uint16_t LABEL_WIDTH = 189;\r
- constexpr uint16_t BLELIST_BUTTON_HEIGHT = 81;\r
+namespace OHOS {\r
+constexpr uint16_t BUTTON_WIDTH = 351;\r
+constexpr uint16_t BUTTON_HEIGHT = 81;\r
+constexpr uint16_t IMAGE_WIDTH = 81;\r
+constexpr uint16_t IMAGE_HEIGHT = 81;\r
+constexpr uint16_t LABEL_HEIGHT = 81;\r
+constexpr uint16_t LABEL_WIDTH = 189;\r
+constexpr uint16_t BLELIST_BUTTON_HEIGHT = 81;\r
\r
#define BLUETOOTH_CONNECT_DELAY 200\r
#define BLUETOOTH_CONNECT_X 294\r
#define BLUETOOTH_CONNECT_WIDTH 81\r
#define BLUETOOTH_CONNECT_HEIGHT 81\r
\r
- BluetoothItemView::BluetoothItemView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::BluetoothItemView");\r
- SetPosition(40, 21, 380, 100);\r
- SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- SetUpChild();\r
- SetTouchable(true);\r
-\r
- Add(&button);\r
- Add(&namelabel);\r
- Add(&connectStateLabel);\r
- Add(&lineImage);\r
- Add(¬eImage);\r
- Add(&connectionAnimator);\r
- }\r
-\r
- BluetoothItemView::~BluetoothItemView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::~BluetoothItemView");\r
- Remove(&button);\r
- Remove(&namelabel);\r
- Remove(&connectStateLabel);\r
- Remove(&lineImage);\r
- Remove(¬eImage);\r
- Remove(&connectionAnimator);\r
- }\r
-\r
- void BluetoothItemView::SetUpChild()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetUpChild");\r
- button.SetPosition(40, 0, 250, 80);\r
- button.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- button.SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- button.SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
-\r
- /*蓝牙设备名称*/\r
- namelabel.SetPosition(40, 21, 250, 35);\r
- namelabel.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- namelabel.SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- namelabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 30);\r
- namelabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- namelabel.SetRollSpeed(100);\r
- namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+BluetoothItemView::BluetoothItemView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::BluetoothItemView");\r
+ SetPosition(53, 106, 375, 81); // 53:x 106:y 375:width 81:height\r
+ SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ SetUpChild();\r
+ SetTouchable(true);\r
+\r
+ Add(&button);\r
+ Add(&connectStateLabel);\r
+ Add(&namelabel);\r
+ Add(&image);\r
+ Add(&connectionAnimator);\r
+}\r
\r
- /*线*/\r
- lineImage.SetPosition(35, 98, 310, 2);\r
- lineImage.SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- lineImage.SetStyle(STYLE_BACKGROUND_OPA, 0x33);\r
- lineImage.SetStyle(STYLE_BORDER_RADIUS, 100);\r
+BluetoothItemView::~BluetoothItemView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::~BluetoothItemView");\r
+ Remove(&connectStateLabel);\r
+ Remove(&button);\r
+ Remove(&namelabel);\r
+ Remove(&image);\r
+ Remove(&connectionAnimator);\r
+}\r
\r
- BtConnectImageAnimator();\r
- }\r
+void BluetoothItemView::SetUpChild()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetUpChild");\r
+ button.Resize(BUTTON_WIDTH, BUTTON_HEIGHT); // 351:Width\r
+ button.SetImageSrc(PNG_BT_LIST, PNG_BT_LIST); // 跳转图片\r
+ button.SetImagePosition(24, 0); // 24: lable x-coordinate\r
+\r
+ namelabel.SetPosition(105, 0); // 105:x 0:y\r
+ namelabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);\r
+ namelabel.SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ namelabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size\r
+ namelabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+\r
+ image.SetPosition(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT); // 0:x 0:y\r
+ image.SetSrc(PNG_BLUETOOTHEAR);\r
+ BtConnectImageAnimator();\r
+}\r
\r
- void BluetoothItemView::SetItemInfo(const BluetoothCaseInfo &itemInfo, bool isCaseList)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetItemInfo");\r
- itemInfo_ = itemInfo;\r
- namelabel.SetText(reinterpret_cast<const char *>(itemInfo_.deviceName));\r
- if (isCaseList)\r
- {\r
- bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
- if ((!IsConnectAnimator()) && (ret))\r
- {\r
- button.SetTouchable(false);\r
- SetTouchable(false);\r
- }\r
- else\r
- {\r
- button.SetTouchable(true);\r
- SetTouchable(true);\r
- }\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d", GetViewIndex());\r
- if(!isCaseList)\r
- {\r
- //已连接的耳机界面\r
- List<BluetoothCaseInfo> &btConnedDevicesList_ = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
- if (GetViewIndex() == btConnedDevicesList_.Size() - 1)\r
- {\r
- lineImage.SetVisible(false);\r
- }\r
- else\r
- {\r
- lineImage.SetVisible(true);\r
- }\r
- }\r
- else\r
- {\r
- //搜索出耳机的界面\r
- std::list<BluetoothCaseInfo> &btScansDevicesList_ = BluetoothModel::GetInstance()->GetCase();\r
- if (GetViewIndex() == btScansDevicesList_.size() - 1)\r
- {\r
- lineImage.SetVisible(false);\r
- }\r
- else\r
- {\r
- lineImage.SetVisible(true);\r
- }\r
+void BluetoothItemView::SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetItemInfo");\r
+ itemInfo_ = itemInfo;\r
+ namelabel.SetText(reinterpret_cast<const char *>(itemInfo_.deviceName));\r
+ if (isCaseList) {\r
+ bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
+ if ((!IsConnectAnimator()) && (ret)) {\r
+ namelabel.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+ button.SetTouchable(false);\r
+ SetTouchable(false);\r
+ } else {\r
+ namelabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+ button.SetTouchable(true);\r
+ SetTouchable(true);\r
}\r
}\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d", GetViewIndex());\r
+}\r
\r
- BluetoothCaseInfo *BluetoothItemView::GetItemInfo(void)\r
- {\r
- return &itemInfo_;\r
- }\r
-\r
- /*连接状态设置*/\r
- void BluetoothItemView::SetConnectionstatus(const BluetoothCaseInfo &infoData)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus");\r
- connectStateLabel.SetPosition(40, namelabel.GetY() + namelabel.GetHeight(), 250, 27);\r
- connectStateLabel.SetStyle(STYLE_TEXT_FONT, 23);\r
- connectStateLabel.SetStyle(STYLE_LINE_HEIGHT, 27);\r
- connectStateLabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT, UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);\r
- connectStateLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 23);\r
- /* -------------------------------- noteImage ------------------------------- */\r
- noteImage.SetPosition(namelabel.GetX() + namelabel.GetWidth(), 0, 80, 80);\r
- noteImage.SetAutoEnable(false);\r
- noteImage.SetResizeMode(UIImageView::CENTER);\r
- noteImage.SetTouchable(true);\r
- if (!PlayersView::LoadPlayerImage(¬eImage, PLAYER_LOOK_CONNECTED_NOTE))\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "noteImage LoadPlayerImage fail");\r
- return;\r
- }\r
- /* ------------------------------ 检查ACL链路是否连接。 ------------------------------ */\r
-\r
- {\r
- #ifdef SUPPORT_BT_SERVICE\r
- bool aclConnected = bt_is_acl_connected((const bd_addr_t *)&infoData.addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus aclConnected %d", aclConnected);\r
- #else\r
- bool aclConnected = false;\r
- #endif\r
-\r
- if (aclConnected)\r
- {\r
- connectStateLabel.SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
- connectStateLabel.SetTextId(STR_CONNECTED); // 已连接\r
- if(OHOS::CallerLogModel::GetInstance()->GetCallSource() == OHOS::CallerLogModel::CallSourceCat1\r
- && OHOS::NotificationManager::GetInstance()->GetWatchCallStatus())\r
- {\r
- #ifdef SUPPORT_BT_SERVICE\r
- bool SCOConnected = headset_SCO_Is_connect_extend( (bd_addr_t *)&infoData.addr);\r
- #else\r
- bool SCOConnected = false;\r
- #endif\r
-\r
- if(SCOConnected)\r
- {\r
- connectStateLabel.SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
- if(ConfigModel::GetInstance()->GetLanguage() == ZH_CN)\r
- {\r
- connectStateLabel.SetText("蓝牙耳机通话已连接");\r
- }\r
- else\r
- {\r
- connectStateLabel.SetText("Bluetooth headset call connected");\r
- }\r
- \r
- }\r
- else\r
- {\r
- connectStateLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- if(ConfigModel::GetInstance()->GetLanguage() == ZH_CN)\r
- {\r
- connectStateLabel.SetText("蓝牙耳机通话未连接");\r
- }\r
- else\r
- {\r
- connectStateLabel.SetText("Bluetooth headset call is not connected");\r
- }\r
- \r
- }\r
- \r
- }\r
- }\r
- else\r
- {\r
- connectStateLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- connectStateLabel.SetTextId(STR_DISCONNECTED); // 未连接\r
- }\r
- \r
- }\r
- \r
- \r
-\r
-\r
- connectStateLabel.ForceResetText();\r
- connectStateLabel.Invalidate();\r
- }\r
+BluetoothCaseInfo *BluetoothItemView::GetItemInfo(void)\r
+{\r
+ return &itemInfo_;\r
+}\r
\r
- void BluetoothItemView::SetPairingtatus()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetPairingtatus");\r
- connectStateLabel.SetPosition(40, namelabel.GetY() + namelabel.GetHeight(), 250, 27);\r
- connectStateLabel.SetStyle(STYLE_TEXT_FONT, 23);\r
- connectStateLabel.SetStyle(STYLE_LINE_HEIGHT, 27);\r
- connectStateLabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT, UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);\r
- connectStateLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 23);\r
- connectStateLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- connectStateLabel.SetTextId(STR_NOT_PAIRED); // 未配对\r
+void BluetoothItemView::SetConnectionstatus(const BluetoothCaseInfo& infoData)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus");\r
+ connectStateLabel.SetPosition(105, 0); // 105:x 0:y\r
+ connectStateLabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);\r
+ connectStateLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size\r
+ connectStateLabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ connectStateLabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);\r
+ bool aclConnected = bt_is_acl_connected((const bd_addr_t*)&infoData.addr);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus aclConnected %d", aclConnected);\r
+ if (aclConnected) {\r
+ connectStateLabel.SetText("已连接");\r
+ } else {\r
+ connectStateLabel.SetText("已断开");\r
}\r
+ namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_TOP);\r
+ namelabel.Invalidate();\r
+}\r
\r
- void BluetoothItemView::SetViewOnClickListener(UIView::OnClickListener *listener)\r
- {\r
- if (listener)\r
- {\r
- button.SetOnClickListener(listener);\r
- noteImage.SetOnClickListener(listener);\r
- }\r
- }\r
+void BluetoothItemView::ConnectAnimatorStart(void)\r
+{\r
+ connectionAnimator.SetVisible(true);\r
+ connectionAnimator.Start();\r
+}\r
\r
- /*动画开始*/\r
- void BluetoothItemView::ConnectAnimatorStart(void)\r
- {\r
- connectionAnimator.SetVisible(true);\r
- connectionAnimator.Start();\r
- }\r
+void BluetoothItemView::ConnectAnimatorStop(void)\r
+{\r
+ connectionAnimator.SetVisible(false);\r
+ connectionAnimator.Stop();\r
+}\r
\r
- /*动画停止*/\r
- void BluetoothItemView::ConnectAnimatorStop(void)\r
- {\r
- connectionAnimator.SetVisible(false);\r
- connectionAnimator.Stop();\r
- }\r
+bool BluetoothItemView::IsConnectAnimator(void)\r
+{\r
+ return connectionAnimator.IsVisible();\r
+}\r
\r
- /*连接动画是否可见*/\r
- bool BluetoothItemView::IsConnectAnimator(void)\r
- {\r
- return connectionAnimator.IsVisible();\r
+void BluetoothItemView::BtConnectImageAnimator()\r
+{\r
+ const char *connectImagePath[BLUETOOTH_CONNECT_IMAGE_NUM] = {\r
+ PNG_A019_088_IMAGE_PATH,\r
+ PNG_A019_089_IMAGE_PATH,\r
+ PNG_A019_090_IMAGE_PATH,\r
+ PNG_A019_091_IMAGE_PATH,\r
+ PNG_A019_092_IMAGE_PATH,\r
+ PNG_A019_093_IMAGE_PATH,\r
+ PNG_A019_094_IMAGE_PATH,\r
+ PNG_A019_095_IMAGE_PATH,\r
+ };\r
+\r
+ for (uint8_t i = 0; i < BLUETOOTH_CONNECT_IMAGE_NUM; i++) {\r
+ connectImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(connectImagePath[i]);\r
+ connectImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
+ connectImageInfo[i].pos.x = BLUETOOTH_CONNECT_X;\r
+ connectImageInfo[i].pos.y = BLUETOOTH_CONNECT_Y;\r
+ connectImageInfo[i].width = BLUETOOTH_CONNECT_WIDTH;\r
+ connectImageInfo[i].height = BLUETOOTH_CONNECT_HEIGHT;\r
}\r
\r
- /*蓝牙连接动画*/\r
- void BluetoothItemView::BtConnectImageAnimator()\r
- {\r
- const char *connectImagePath[BLUETOOTH_CONNECT_IMAGE_NUM] = {\r
- PNG_A019_088_IMAGE_PATH,\r
- PNG_A019_089_IMAGE_PATH,\r
- PNG_A019_090_IMAGE_PATH,\r
- PNG_A019_091_IMAGE_PATH,\r
- PNG_A019_092_IMAGE_PATH,\r
- PNG_A019_093_IMAGE_PATH,\r
- PNG_A019_094_IMAGE_PATH,\r
- PNG_A019_095_IMAGE_PATH,\r
- };\r
-\r
- for (uint8_t i = 0; i < BLUETOOTH_CONNECT_IMAGE_NUM; i++)\r
- {\r
- connectImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(connectImagePath[i]);\r
- connectImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
- connectImageInfo[i].pos.x = BLUETOOTH_CONNECT_X;\r
- connectImageInfo[i].pos.y = BLUETOOTH_CONNECT_Y;\r
- connectImageInfo[i].width = BLUETOOTH_CONNECT_WIDTH;\r
- connectImageInfo[i].height = BLUETOOTH_CONNECT_HEIGHT;\r
- }\r
-\r
- connectionAnimator.SetImageAnimatorSrc(connectImageInfo, BLUETOOTH_CONNECT_IMAGE_NUM, BLUETOOTH_CONNECT_DELAY);\r
- connectionAnimator.SetRepeat(true);\r
- connectionAnimator.SetVisible(false);\r
- }\r
+ connectionAnimator.SetImageAnimatorSrc(connectImageInfo, BLUETOOTH_CONNECT_IMAGE_NUM, BLUETOOTH_CONNECT_DELAY);\r
+ connectionAnimator.SetRepeat(true);\r
+ connectionAnimator.SetVisible(false);\r
+}\r
\r
}\r
*/\r
#include <cstdint>\r
#include "BluetoothModel.h"\r
-#include "BluetoothModelC.h"\r
-\r
#include "BluetoothWrapper.h"\r
#include "BluetoothPresenter.h"\r
#include "ConnectPhonePresenter.h"\r
-#include "MusicPlayerSourceView.h"\r
+#include "BluetoothView.h"\r
#include "BluetoothItemView.h"\r
#include "PlayersModel.h"\r
#include "PhoneAudio.h"\r
#include "bts_le_gap.h"\r
#include "bts_spp.h"\r
#include "osal_task.h"\r
-#include "bts_pbap.h"\r
-#include "ConfigModelC.h"\r
-#include "custom_utils.h"\r
#ifdef SUPPORT_ALIPAY_SEC\r
#include "alipay_feature.h"\r
#endif\r
#include "audio_manager_c_wrapper.h"\r
#include "bts_avrcp_target.h"\r
#include "msg_center_msg.h"\r
+#include "client/msg_center_client.h"\r
+#include "msg_center_protocol.h"\r
#include "dfx_channel.h"\r
#include "tcxo.h"\r
-#include "custom_runtime.h"\r
-\r
-#ifdef SUPPORT_BLE_SERVICE\r
-#include <bleEvent.h>\r
-#include "bleService.h"\r
-#include "bletest.h"\r
-#endif\r
-\r
-//#include "hfp_hf_service.h"\r
-#include "uiservice/include/ui_service.h"\r
-#include "PhoneService.h"\r
-#ifdef SUPPORT_AT_OHOSFWK\r
-#include "BluetoothWrapper.h"\r
-#endif\r
-#include "Bluetooyhpabpserver.h"\r
-\r
-\r
-\r
-#include "ConfigModelC.h"\r
-#include "uiservice/include/ui_service.h"\r
-#include "vibrator_service.h"\r
-#include "ConfigModel.h"\r
-\r
-#ifdef SUPPORT_PHONE_SERVICE\r
-#include "PhoneAGService.h"\r
-#endif\r
-\r
-#include "custom_save_runtime.h"\r
-#include "BluetoothHeadsetEvent.h"\r
+#include "ui_service.h"\r
\r
namespace OHOS {\r
\r
#define BT_SPP_TASK_PRI 20\r
#define TEN 10\r
\r
-constexpr uint16_t BLUETOOTH_MAX_NUM = 20; /*已连接设备列表的大小*/\r
+constexpr uint16_t BLUETOOTH_MAX_NUM = 20;\r
\r
#define MEDIA_A2DP_SNK_INTERFACE 1\r
osal_timer g_a2dp_stream_accept_timer = {nullptr, nullptr, 0, 0};\r
static uint16_t g_sample_svr_handle = 0;\r
static uint16_t g_sample_characteristic_handle = 0;\r
static uint16_t g_diag_characteristic_handle = 0;\r
+static uint16_t g_diag_desc_handle = 0;\r
constexpr uint16_t g_sample_adv_id = 2;\r
static bd_addr_t g_bd_addr = { 0 };\r
\r
return watchName;\r
}\r
\r
-void InitBluetoothInfo(void)\r
+void BluetoothModel::InitBluetoothInfo(void)\r
{\r
- #ifdef SUPPORT_BLE_SERVICE\r
+ errcode_t ret;\r
unsigned char nameLen = BD_NAME_LEN;\r
- uint8_t ble_name[BD_NAME_LEN] = {0};\r
- uint8_t ble_name_len = BD_NAME_LEN;\r
- errcode_t ret = 0;\r
-\r
- ret = bluetooth_get_local_name(ble_name, &ble_name_len);\r
- if (ret != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
- memset_s(ble_name, BD_NAME_LEN, 0, BD_NAME_LEN);\r
- ble_name_len = strlen(BLE_DEFAULT_NAME) + 1; \r
- memcpy_s(ble_name, BD_NAME_LEN,BLE_DEFAULT_NAME,ble_name_len);\r
- }\r
- unsigned char addr[6] = {0};\r
- unsigned int len = sizeof(addr);\r
- memset(addr,0,6); \r
- bluetooth_get_local_addr(&addr[0],len);\r
- //如果蓝牙名称不正确,按照规则重命名 \r
- char watchName[BD_NAME_LEN]= {0};\r
memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
- (void)sprintf_s(watchName, sizeof(watchName), "%s %02X%02X",BLE_DEFAULT_NAME,addr[1],addr[0]);\r
- int watch_name_len = strlen(watchName);\r
- /**表名长度不对,或者内容不对,都要重命名*/\r
- if (watch_name_len != strlen((char*)ble_name) || strncmp((char*)ble_name,watchName,watch_name_len) != 0 )\r
- {\r
- ret = bluetooth_set_local_name((unsigned char*)watchName, watch_name_len+1);\r
- if (ret == ERRCODE_SUCC) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName %s ", watchName);\r
- }else{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName %s ret = 0x%x", watchName,ret);\r
- }\r
- } \r
- #endif\r
-\r
-}\r
-//1关 0开\r
-void bluetooth_set_auto_reconnect_closed(uint8_t flag)\r
-{\r
- #ifdef SUPPORT_BLE_SERVICE\r
-\r
- bts_feature_t bts_feature = { 0 };\r
- bts_feature.bt_auto_reconnect_closed = flag;\r
- errcode_t ret = bts_set_features(&bts_feature);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = 0x%X", ret);\r
-\r
- #endif\r
-\r
+ ret = bluetooth_get_local_name((unsigned char *)watchName, &nameLen);\r
+ // 为了实验室测试需要,客户需要自己修改\r
+ if ((nameLen == strlen("WatchDemo") + 1) && (strcmp("WatchDemo", watchName) == 0)) {\r
+ uint32_t currentUs = uapi_tcxo_get_us();\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "currentUs 0x%x", currentUs);\r
+ // 设置蓝牙名称\r
+ (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", (currentUs & 0xFFFF));\r
+ ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_name %s ret = %u", watchName, ret);\r
+\r
+ // 设置蓝牙地址\r
+ bd_addr_t addr = {{0x1C, 0x1D, 0x2B, 0x0, 0x0, 0x0} ,0};\r
+ addr.addr[3] = currentUs & 0xFF;\r
+ addr.addr[4] = (currentUs & 0XFF00) >> 8;\r
+ addr.addr[5] = currentUs & 0xFF;\r
+ ret = bluetooth_set_local_addr(addr.addr, BD_ADDR_LEN);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_addr [0x%x:0x%x] ret = %u", addr.addr[0], addr.addr[1], ret);\r
+ } else {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "watchName: %s", watchName);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "nameLen: %u", nameLen);\r
+ }\r
}\r
\r
-static int g_bluetooth_initialled=0;\r
-static int bluetooth_init_all(void)\r
+void BluetoothModel::Init()\r
{\r
-\r
- #ifdef SUPPORT_BLE_SERVICE\r
-\r
- if (g_bluetooth_initialled == 1) return 1;\r
#ifndef SUPPORT_AUTO_OTA\r
errcode_t ret;\r
+\r
// 设置自动回连,ios一键双连依赖此配置\r
- \r
- bluetooth_set_auto_reconnect_closed(1);\r
+ bts_feature_t bts_feature = { 0 };\r
+ bts_feature.bt_auto_reconnect_closed = 0;\r
+ ret = bts_set_features(&bts_feature);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
\r
ret = enable_bt_stack();\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %u", ret);\r
\r
// 设置安全连接\r
- // gap_ble_sec_params_t sec_params = {0};\r
- // sec_params.bondable = 0x01;\r
- // sec_params.io_capability = GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT;//最好选择没有输入输出IO能力\r
- // sec_params.sc_enable = 0x00;\r
- // sec_params.sc_mode = GAP_BLE_GAP_SECURITY_MODE1_LEVEL2;\r
- // ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
-\r
gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
- // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 };\r
ret = gap_ble_set_sec_param(&sec_param);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
\r
InitBluetoothInfo();\r
-\r
-\r
- /********************br init************************/\r
BtInitCallBacks();\r
- uapi_pbap_pce_reg_callback();\r
- BtA2dpInit();\r
- PhoneServiceInit();\r
- InitBtHeadsetEvent(); // 蓝牙ct和tg适配初始化\r
-\r
- if(uapi_dev_runtime_get_safemode_flag())\r
- {\r
-\r
- gap_remove_all_pairs();\r
-\r
- uapi_dev_runtime_atuoota_status_status(1);\r
-\r
- BtInitSpp();\r
- }\r
- \r
- /*******************ble init ****************/\r
wrapper_ble_register();\r
#ifdef SUPPORT_ALIPAY_SEC\r
- wrapper_gatts_clear_service(); //Alipay BLE\r
-#endif\r
- // svr_alipay_btcallback_reg();\r
- /***Custom BleService */\r
-#ifdef SUPPORT_ALIPAY_SEC\r
- //Alipay BLE\r
+ svr_alipay_bluetooth_init();\r
#endif\r
+ BtInitCallBacksEx();\r
+ BtInitGatts();\r
+ BtInitSpp();\r
\r
- svr_ble_bluetooth_init(); //CUSTOM BLE\r
- \r
- // BtInitCallBacksEx(); //BLE\r
- // BtInitGatts(); //BLE \r
-\r
+ /* 实验室测试需要,开机开广播 */\r
+ BleAdvStart();\r
\r
- //start reg ble server\r
- wrapper_gatts_service_start(); \r
- // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_BLE_WRAPPERSTART,NULL,0);\r
-\r
-\r
- /**开始ble广播*/\r
- // custom_ble_service_start();\r
- // BleAdvStart();\r
+ SetUpListCase();\r
+ SetUpConnedDevicesList();\r
#endif\r
- g_bluetooth_initialled = 1;\r
-\r
- #endif\r
-\r
- return 0;\r
-}\r
-\r
- \r
-void bluetooth_enable_all(void)\r
-{\r
- //初始化过的则直接开启扫描即可\r
-\r
-\r
- if (bluetooth_init_all() == 1)\r
- {\r
-\r
- errcode_t ret;\r
- // 设置自动回连,ios一键双连依赖此配置\r
- // bts_feature_t bts_feature = { 0 };\r
- // bts_feature.bt_auto_reconnect_closed = 0;\r
- // ret = bts_set_features(&bts_feature);\r
- // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
- // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
- // // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 };\r
- // ret = gap_ble_set_sec_param(&sec_param);\r
- // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
-\r
- ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_br_set_bt_scan_mode ret = %u", ret);\r
- /**开始ble广播*/\r
- // custom_ble_service_start();\r
- }\r
-}\r
-\r
-void bluetooth_close_all(void)\r
-{\r
- errcode_t ret;\r
- \r
- /**停止Ble广播,断开链接,清除协议缓存*/\r
- // custom_ble_service_stop();\r
-\r
- /** 停止BR广播 */\r
-\r
- ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
-\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_close_all gap_br_set_bt_scan_mode ret = %u", ret);\r
- \r
- /**TODO: 停止BR扫描**/\r
- if(is_bt_discovering(BT_TRANSPORT_INVALID) || is_bt_discovering(BT_TRANSPORT_BR_EDR) || is_bt_discovering(BT_TRANSPORT_LE))\r
- {\r
- gap_br_cancel_discovery();\r
- }\r
- /**TODO: 关闭自动重连**/\r
-\r
- // 设置自动回连,ios一键双连依赖此配置\r
- // bts_feature_t bts_feature = { 0 };\r
- // bts_feature.bt_auto_reconnect_closed = 1;\r
- // bts_feature.bt_a2dp_snk_closed = 1;\r
- // ret = bts_set_features(&bts_feature);\r
- // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
- \r
- /**TODO: 断开BR链接**/\r
- bd_addr_t bdaddr={0};\r
- uapi_get_br_address(&bdaddr);\r
- if (bt_is_acl_connected(&bdaddr))\r
- {\r
- ret = gap_disconnect_remote_device(&bdaddr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_close_all gap_disconnect_remote_device ret = %u", ret);\r
- } \r
-\r
- //海思不建议使用 disable_bt_stack ,说可能影响 btcore 与 mcore通讯\r
- // ret = disable_bt_stack();\r
- // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt disable_bt_stack ret = %u", ret);\r
-\r
}\r
\r
-void BluetoothModel::Init()\r
-{\r
-// bluetooth_init();\r
-// InitBluetoothInfo();\r
-SetUpListCase();\r
-SetUpConnedDevicesList();\r
-}\r
-\r
-//清空这个扫描列表\r
void BluetoothModel::SetCaseListClear()\r
{\r
btScansDevicesList_.clear();\r
}\r
\r
-//检查给定的蓝牙设备信息是否已经存在于这个列表中\r
bool BluetoothModel::CheckExistScanList(BluetoothCaseInfo caseInfo)\r
{\r
std::list<BluetoothCaseInfo>::iterator node = btScansDevicesList_.begin();\r
return false;\r
}\r
\r
-//清空这个扫描列表\r
void BluetoothModel::SetUpListCase()\r
{\r
SetCaseListClear();\r
}\r
\r
-//返回这个列表的引用\r
std::list<BluetoothCaseInfo>& BluetoothModel::GetCase()\r
{\r
return btScansDevicesList_;\r
}\r
\r
-//向这个列表中添加蓝牙设备信息\r
void BluetoothModel::AddCase(BluetoothCaseInfo caseInfo)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",\r
return;\r
} else {\r
btScansDevicesList_.push_back(caseInfo);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_ num = %d",btScansDevicesList_.size());\r
- if(BluetoothEarListView::GetInstance()) //动态计算扫描出来的设备列表ui高度\r
- GraphicService::GetInstance()->PostGraphicEvent( \r
- std::bind(&BluetoothEarListView::RefreshBluetoothEarListView, BluetoothEarListView::GetInstance()));\r
}\r
}\r
-//设置设备的信号强度\r
+\r
void BluetoothModel::SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi)\r
{\r
for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
return false;\r
}\r
\r
-//按照信号强度进行排序\r
void BluetoothModel::SortScansCaseRssi()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SortScansCaseRssi");\r
btScansDevicesList_.sort(CompBuletoothInfo);\r
}\r
\r
-//重置设备名称\r
void BluetoothModel::ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo)\r
{\r
for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
}\r
}\r
\r
-/* 清空已配对设备队列 */\r
+/* 已配对设备队列 */\r
void BluetoothModel::SetConnedDevicesListClear()\r
{\r
btConnedDevicesList_->Clear();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothModel btConnedDevicesList_ new fail");\r
return;\r
}\r
- \r
- }\r
- SetConnedDevicesListClear();\r
- unsigned int connedDevicesNum = 0;\r
- int btpower = uapi_dev_runtime_get_bt_powerstat();\r
-\r
- bool ret = gap_get_paired_devices_num(&connedDevicesNum);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BT Power %s , Setup GetPariedDevicesNum ret = %d, num = %d", btpower==1?"On":"Off",ret, connedDevicesNum);\r
-\r
- gap_paired_device_info_t *devInfo = (gap_paired_device_info_t*)malloc(sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
- if (devInfo == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DevInfo malloc failed %u", sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
- return;\r
- }\r
- ret = gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpConnedDevicesList gap_get_paired_devices_list ret = %d", ret);\r
+ SetConnedDevicesListClear();\r
+ unsigned int connedDevicesNum = 0;\r
+ bool ret = gap_get_paired_devices_num(&connedDevicesNum);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);\r
+\r
+ gap_paired_device_info_t *devInfo = (gap_paired_device_info_t*)malloc(sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
+ if (devInfo == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DevInfo malloc failed %u", sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
+ return;\r
+ }\r
+ ret = gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpConnedDevicesList gap_get_paired_devices_list ret = %d", ret);\r
\r
- BluetoothCaseInfo caseInfo{};\r
- for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {\r
- if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {\r
- continue;\r
+ BluetoothCaseInfo caseInfo{};\r
+ for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {\r
+ if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {\r
+ continue;\r
+ }\r
+ (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN,\r
+ devInfo[i].addr.addr, BD_ADDR_LEN);\r
+ (void)memcpy_s(caseInfo.deviceName, BD_NAME_LEN,\r
+ devInfo[i].device_name, BD_NAME_LEN);\r
+ AddConnedDevicesCase(caseInfo);\r
}\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN,\r
- devInfo[i].addr.addr, BD_ADDR_LEN);\r
- (void)memcpy_s(caseInfo.deviceName, BD_NAME_LEN,\r
- devInfo[i].device_name, BD_NAME_LEN);\r
- AddConnedDevicesCase(caseInfo);\r
+ free(devInfo);\r
}\r
- free(devInfo);\r
}\r
\r
void BluetoothModel::AddConnedDevicesCase(BluetoothCaseInfo caseInfo)\r
}\r
}\r
\r
-/*返回指向已连接设备列表的引用,以便其他部分的代码可以直接访问和操作这个列表*/\r
List<BluetoothCaseInfo>& BluetoothModel::GetConnedDevicesCase()\r
{\r
return *btConnedDevicesList_;\r
}\r
\r
-/*\r
-* @brief 用于检查特定蓝牙设备(其地址存储在 tempMacValue 中)是否处于 ACL 连接状态。\r
-*\r
-*eg:如果是在控制与手机配对的蓝牙手环,通过这个函数就能确定手环当前与手机的连接情况。\r
-*/\r
void BluetoothModel::SetBtStatus(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtStatus tempMacValue: %02x%02x%02x%02x%02x%02x",\r
return tagReconnectJump;\r
}\r
\r
-/*设置当前哪个子视图是可见的*/\r
void BluetoothModel::SetCurView(int16_t viewNum)\r
{\r
curView = viewNum;\r
}\r
\r
-/*获取当前哪个子视图是可见的*/\r
int BluetoothModel::GetCurView(void)\r
{\r
return curView;\r
return tagConnectView;\r
}\r
\r
-//设置是否需要跳转连接失败界面\r
void BluetoothModel::SetTagDisconnectView(bool tag)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagDisconnectView:%d", tag);\r
return tagDisconnectView;\r
}\r
\r
+void BluetoothModel::SetTagConnectNew(bool tag)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectNew:%d", tag);\r
+ tagConnectNew = tag;\r
+}\r
\r
-\r
-//设置是否返回到已连接过的设备列表视图标志\r
void BluetoothModel::SetTagReturnToDeviceListView(bool tag)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagReturnToDeviceListView:%d", tag);\r
tagReturnToDeviceListView = tag;\r
}\r
\r
-//是否返回到已连接过的设备列表视图\r
bool BluetoothModel::IsTagReturnToDeviceListView(void)\r
{\r
return tagReturnToDeviceListView;\r
}\r
\r
-// 获取断开连接时是否需要马上连接新设备\r
+// 判断断开连接时是否需要马上连接新设备\r
bool BluetoothModel::IsTagConnectNew(void)\r
{\r
return tagConnectNew;\r
}\r
\r
-// 设置断开连接时是否需要马上连接新设备\r
-void BluetoothModel::SetTagConnectNew(bool tag)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectNew:%d", tag);\r
- tagConnectNew = tag;\r
-}\r
-\r
void BluetoothModel::SetTagScanDeviceClicked(bool tag)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagScanDeviceClicked:%d", tag);\r
return tagScanDeviceClicked;\r
}\r
\r
-//检查给定的 BluetoothCaseInfo 结构体实例 caseInfo 所代表的蓝牙设备是否已经存在于已连接设备列表中\r
bool BluetoothModel::CheckExistConnedList(BluetoothCaseInfo caseInfo)\r
{\r
ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_ ->Begin();\r
return false;\r
}\r
}\r
-//在已连接设备列表 btConnedDevicesList_ 和扫描设备列表 btScansDevicesList_ \r
-//中查找与输入的 BluetoothCaseInfo 结构体实例 caseInfo 地址匹配的设备,并尝试获取该设备的名称\r
+\r
bool BluetoothModel::FindNameFromList(BluetoothCaseInfo *caseInfo)\r
{\r
ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_->Begin();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
}\r
errcode_t retVal = gap_connect_remote_device(addr);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice gap_connect_remote_device ret = 0x%x", retVal);\r
(void)memcpy_s(&remoteConnectAddr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
return retVal;\r
}\r
bool BluetoothModel::ConnectRemoteCheck(const bd_addr_t *addr)\r
{\r
bool ret;\r
- if ((remoteConnectAddr.addr[0] == 0) && (remoteConnectAddr.addr[1] == 0) &&\r
- (remoteConnectAddr.addr[2] == 0) && (remoteConnectAddr.addr[3] == 0) &&\r
- (remoteConnectAddr.addr[4] == 0) && (remoteConnectAddr.addr[5] == 0)) {\r
- return true;\r
- } \r
if ((remoteConnectAddr.addr[0] == addr->addr[0]) && (remoteConnectAddr.addr[1] == addr->addr[1]) &&\r
(remoteConnectAddr.addr[2] == addr->addr[2]) && (remoteConnectAddr.addr[3] == addr->addr[3]) &&\r
(remoteConnectAddr.addr[4] == addr->addr[4]) && (remoteConnectAddr.addr[5] == addr->addr[5])) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
return;\r
}\r
- bluetoothEarPhoneView->setScanStatus(false);// 停止扫描标记\r
+ bluetoothEarPhoneView->setScanStatus(false);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan one jumpView");\r
if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
JumpView *jumpView = JumpView::GetInstance();\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop");\r
}\r
\r
-//用于处理蓝牙设备发现的结果\r
void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)\r
{\r
BluetoothCaseInfo caseInfo{};\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
getNameRet, nameLen, caseInfo.deviceName);\r
\r
-\r
if (nameLen == 0) { // 过滤未扫描到名字的设备\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
return;\r
}\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
}\r
-bd_addr_t BtGapPair_bdAddr={0};\r
+\r
void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)\r
{\r
- #ifdef SUPPORT_BLE_SERVICE\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapPairStatusChangedCallback addr: ****%02x%02x%02x%02x status: %d\n",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairStatusChangedCallback addr: ****%02x%02x%02x%02x status: %d\n",\r
bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], status); /* addr下标 0 1 2 3 */\r
-\r
- if(uapi_dev_runtime_get_atuoota_status())\r
- {\r
- return;\r
- }\r
-\r
- if ((gap_get_device_class(bdAddr) & 0x200) != 0) \r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapPairStatusChangedCallback: Mobile Phone Device");\r
- if(status==GAP_PAIR_PAIRED)\r
- memcpy(&BtGapPair_bdAddr,bdAddr,sizeof(bd_addr_t));\r
-\r
- if(cm_custom_ble_service_on_flag() && !get_ble_pair()&& (status == GAP_PAIR_PAIRED))\r
- {\r
- send_pair_succ((bd_addr_t*)bdAddr);\r
-\r
- hand_watch_first_time_Paired();\r
-\r
- set_br_pair(1);\r
- \r
- }\r
- if( status == GAP_PAIR_PAIRED )\r
- {\r
- set_br_pair(1);\r
- }\r
- }\r
-\r
- \r
-\r
if (status == GAP_PAIR_PAIRED) {\r
- \r
if (ConnectPhonePresenter::GetInstance() != nullptr) {\r
NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
}\r
- \r
}\r
-\r
- #endif\r
}\r
\r
void BtGapPairRequestedCallback(const bd_addr_t *bdAddr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapPairRequestedCallback addr: ****%02x%02x%02x%02x\n",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairRequestedCallback addr: ****%02x%02x%02x%02x\n",\r
bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 3 */\r
}\r
\r
void BtGapPairConfirmedCallback(const bd_addr_t *bdAddr, int req_type, int number)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapPairConfirmedCallback addr: ****%02x%02x%02x%02x req_type: %d number: %d\n",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairConfirmedCallback addr: ****%02x%02x%02x%02x req_type: %d number: %d\n",\r
bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], /* addr下标 0 1 2 3 */\r
req_type, number);\r
}\r
\r
-\r
-static bool test_bt_falg=false;\r
-\r
-\r
-void BluetoothModel::set_test_bt_falg(bool falg)\r
-{\r
- test_bt_falg=falg;\r
-}\r
-\r
// 回调:扫描结果处理/发现结果上报\r
-void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr )\r
+void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
{\r
- if ((gap_get_device_class(bdAddr) & DEVICE_MAJOR_CLASS_PHONE) != 0 && test_bt_falg==false) {\r
+ if ((gap_get_device_class(bdAddr) & DEVICE_MAJOR_CLASS_PHONE) != 0) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
return;\r
}\r
}\r
}\r
\r
-//处理蓝牙耳机连接成功的UI操作\r
static void ACLConnectionSuss(const bd_addr_t &bdAddr)\r
{\r
// 判断是否已退出蓝牙模块(无需跳转)\r
return;\r
}\r
// 成功提示\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "蓝牙耳机连接成功");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GAP_ACL_STATE_CONNECTED");\r
HandleBeforeChangeView();\r
if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
JumpView *jumpView = JumpView::GetInstance();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
return;\r
}\r
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSSUCCMESSAGEVIEW);//跳转到连接成功视图\r
+ mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSSUCCMESSAGEVIEW);\r
}\r
TipsSuccMessageView *tipsSuccMessageView = TipsSuccMessageView::GetInstance();\r
if (tipsSuccMessageView == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionSuss tipsSuccMessageView GetInstance fail");\r
return;\r
}\r
- tipsSuccMessageView->RefreshNameLabel(bdAddr); //更新连接成功的提示视图的蓝牙名称\r
- /* -------------------------------------------------------------------------- */\r
- if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()))\r
- {\r
- ui_api_vibrate_once_func();\r
- }\r
- uapi_set_screen_on_api();\r
- /* -------------------------------------------------------------------------- */\r
+ tipsSuccMessageView->RefreshNameLabel(bdAddr);\r
}\r
\r
-//处理蓝牙耳机连接失败操作\r
static void ACLConnectionFail(const bd_addr_t &bdAddr)\r
{\r
// 判断是否已退出蓝牙模块(无需跳转)\r
return;\r
}\r
// 失败提示页\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "蓝牙耳机连接失败");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "conn fail");\r
HandleBeforeChangeView();\r
if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
JumpView *jumpView = JumpView::GetInstance();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionFail tipsConnFailMessageView GetInstance fail");\r
return;\r
}\r
- tipsConnFailMessageView->RefreshNameLabel(bdAddr);//更新连接失败的提示视图的蓝牙名称\r
- /* -------------------------------------------------------------------------- */\r
- if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()))\r
- {\r
- ui_api_vibrate_once_func();\r
- }\r
- uapi_set_screen_on_api();\r
- /* -------------------------------------------------------------------------- */\r
+ tipsConnFailMessageView->RefreshNameLabel(bdAddr);\r
}\r
\r
-//处理断开蓝牙耳机连接的UI操作\r
static void DisconnectedHandle()\r
{\r
BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisconnectedHandle deviceList nullptr");\r
return;\r
}\r
- deviceList->RefreshList();//刷新列表\r
+ deviceList->RefreshList();\r
+ BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+ if (bluetoothOptionsView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothOptionsView == nullptr");\r
+ return;\r
+ }\r
+ bluetoothOptionsView->RefreshText();\r
}\r
\r
void BluetoothModel::BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ACL回调,%d",state);\r
bool tag = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
if ((reason == 0x13) || (reason == 0x14) || (reason == 0x15) || (reason == 0x3D) || (reason == 0x08 && (!tag))) { // 连接断开\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "蓝牙设备主动断开与手表连接 reason is %x", reason);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "The peer end is disconnected.");\r
DisconnectedHandle();\r
} else if (reason == 0x16) { // 主动断开连接\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "手表主动断开与蓝牙设备连接,reason is%x", reason);\r
DisconnectedHandle();\r
BluetoothCaseInfo *onClickBtCaseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
if (BluetoothModel::GetInstance()->IsTagConnectNew()) {\r
SetTagDisconnectView(false);\r
}\r
\r
- BluetoothCaseInfo *onClickBtCaseInfo = GetTempMacValue();\r
-\r
if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
SetLastConnedAddr(&bdAddr);\r
// 将数据存入设备列表\r
- tag = CheckExistConnedList(*onClickBtCaseInfo);\r
- if (!tag) {\r
- AddConnedDevicesCase(*onClickBtCaseInfo);\r
+ BluetoothCaseInfo *info = GetTempMacValue();\r
+ tag = CheckExistConnedList(*info);\r
+ if ((!tag) && (memcmp(info->addr, bdAddr.addr, BD_ADDR_LEN) == 0)) {\r
+ AddConnedDevicesCase(*info);\r
}\r
} else {\r
ACLConnectionFail(bdAddr);\r
int32_t retA2dp = a2dp_src_connect(&bdAddr);\r
if (retA2dp) {\r
ACLConnectionFail(bdAddr);\r
- #ifdef SUPPORT_CAT1_HFP_AG_SERV\r
- errcode_t rethfp= hfp_ag_cmd_conn_hfp(&bdAddr);\r
- if(!rethfp)\r
- {\r
- errcode_t retVal = ConnectRemoteDevice((const bd_addr_t *)&onClickBtCaseInfo->addr);\r
- }\r
- #endif\r
- }\r
- else\r
- {\r
- errcode_t retVal = ConnectRemoteDevice((const bd_addr_t *)&onClickBtCaseInfo->addr);\r
}\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connect result 0x%x", retA2dp);\r
-\r
} else {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ingore a2dp_src_connect");\r
}\r
-\r
-\r
}\r
}\r
-static uint8_t ALC_State_flag=0;\r
-\r
-static uint8_t ALC_connect_hfp_flag=0;\r
-\r
-static uint8_t ALC_connect_A2DP_flag=0;\r
-\r
-static bd_addr_t ACL_bdAdd;\r
-\r
-void uapi_set_ACL_br_address(const bd_addr_t * bdAddr)\r
-{\r
- memcpy(&ACL_bdAdd,bdAddr,sizeof(bd_addr_t));\r
-}\r
\r
// 回调:ACL连接状态上报\r
void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason)\r
{\r
- #ifdef SUPPORT_BLE_SERVICE\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
-\r
- if(uapi_dev_runtime_get_atuoota_status())\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
- return;\r
- }\r
-\r
- if(!uapi_dev_runtime_get_bt_powerstat())\r
- {\r
- gap_disconnect_remote_device(bdAddr);\r
- }\r
-\r
- if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
+ static bd_addr_t gapAclConnectAddr{0}; /* 连接后保存手机地址,手表清除手机配对后查询不到class比较手机地址 */\r
+ if ((gap_get_device_class(bdAddr) & 0x200) != 0 || memcmp(gapAclConnectAddr.addr, bdAddr->addr, BD_ADDR_LEN) == 0) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
if (state == GAP_ACL_STATE_DISCONNECTED) {\r
/* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
- SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ MsgCenterSendMsg(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);\r
-\r
- \r
-\r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_SCAN_MODE_CONNECTABLE");\r
-\r
} else if (state == GAP_ACL_STATE_CONNECTED) {\r
- SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ (void)memcpy_s(gapAclConnectAddr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
+ MsgCenterSendMsg(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);\r
-\r
- uapi_set_ACL_br_address(bdAddr);\r
-\r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_SCAN_MODE_NONE");\r
-\r
}\r
return;\r
}\r
+\r
GraphicService::GetInstance()->PostGraphicEvent(\r
std::bind(&BluetoothModel::BtGapAclStateChangedHandle, BluetoothModel::GetInstance(), state, reason, *bdAddr));\r
-\r
- #endif\r
-\r
}\r
\r
// 回调:远端设备名称变化\r
bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], connState); /* 2 1 0 idx */\r
if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectstateChangedCb: Mobile Phone Device");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectstateChangedCb: Mobile Phone Device");\r
return;\r
}\r
if (connState == PROFILE_STATE_CONNECTED) {\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp_ct_connect ret = 0x%x", ret);\r
PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);\r
GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionSuss, *bdAddr));\r
-\r
- #ifdef SUPPORT_BLE_SERVICE\r
- SendMsgToUIService(EARPHONE_CONNECTED_TO_UI, 0, nullptr, 0);\r
- \r
-\r
-\r
- uapi_dev_runtime_set_earphone_connect_stat(1);\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_CONNECT_A2DP_HEADSET);\r
- if(headset_Is_connect() == false)\r
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CONNECT_AG, nullptr, 0);\r
-\r
- #endif\r
- \r
}\r
\r
if (connState == PROFILE_STATE_DISCONNECTED) {\r
PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_DISCONNECTED);\r
GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionFail, *bdAddr));\r
-\r
- #ifdef SUPPORT_BLE_SERVICE\r
- SendMsgToUIService(EARPHONE_DISCONNECTED_TO_UI, 0, nullptr, 0);\r
- #endif\r
-\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_DISCONNECT_A2DP_HEADSET);\r
/* 实验室测试耳机回连场景,用户根据需要调整策略 */\r
bool ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 60); // start scan\r
if (!ret) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "a2dp disc: gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
}\r
- uapi_dev_runtime_set_earphone_connect_stat(0);\r
}\r
- \r
}\r
\r
static void A2dpSrcPlayingStateChanged(bd_addr_t *bdAddr, int playState)\r
static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, gap_ble_conn_state_t connState,\r
gap_ble_pair_state_t pairState, gap_ble_disc_reason_t discReason)\r
{\r
-\r
- #ifdef SUPPORT_BLE_SERVICE\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnStateChangeCallback connId 0x%x, connState 0x%x, pairState 0x%x",\r
connId, connState, pairState);\r
if (GAP_BLE_STATE_DISCONNECTED == connState) { // restart ble adv when disconnected\r
/* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
- SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ MsgCenterSendMsg(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ msg_center_set_ble_conn_state(GAP_BLE_STATE_DISCONNECTED);\r
} else {\r
- SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ MsgCenterSendMsg(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ msg_center_set_ble_conn_state(GAP_BLE_STATE_CONNECTED);\r
(void)memcpy_s(&g_bd_addr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
}\r
- #endif\r
}\r
\r
static void BleAdvStartCallback(uint8_t advId, adv_status_t status)\r
static void BleAdvTerminateCallback(uint8_t advId, adv_status_t status)\r
{\r
if (g_sample_adv_id == advId) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "?????????? BleAdvTerminateCallback advId: %d, status:%d\n", advId, status);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvTerminateCallback advId: %d, status:%d\n", advId, status);\r
BluetoothModel::GetInstance()->SetAdvStartState(false);\r
-\r
// 此处开广播是为了实验室测试需要,客户需要自己修改\r
BleAdvStart();\r
}\r
\r
static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)\r
{\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF0)) {\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0xF01F)) {\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
status, serverId, srvcHandle);\r
- uint16_t sample_id = 0x1FF1;\r
- uint16_t diag_id = 0x1FF2;\r
+ uint16_t sample_id = 0xF11F;\r
+ uint16_t diag_id = 0xF21F;\r
gatts_add_chara_info_t character;\r
uint16_t value = 0;\r
\r
character.chara_uuid.uuid_len = sizeof(diag_id);\r
memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&diag_id, sizeof(diag_id));\r
character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;\r
- character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_READ;\r
+ character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_NOTIFY;\r
character.value_len = (uint16_t)sizeof(value);\r
character.value = (uint8_t *)(&value);\r
\r
\r
static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, gatts_add_character_result_t *result, errcode_t status)\r
{\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF1)) {\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0xF11F)) {\r
g_sample_characteristic_handle = result->value_handle;\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
status, serverId, srvcHandle, g_sample_characteristic_handle);\r
}\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF2)) {\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0xF21F)) {\r
g_diag_characteristic_handle = result->value_handle;\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
status, serverId, srvcHandle, g_diag_characteristic_handle);\r
+\r
+ uint8_t ccc_val[] = { 0x01, 0x00 };\r
+ uint16_t diag_desc = 0x0229;\r
+ gatts_add_desc_info_t descriptor;\r
+ memset_s(&descriptor, sizeof(gatts_add_desc_info_t), 0, sizeof(gatts_add_desc_info_t));\r
+ descriptor.desc_uuid.uuid_len = sizeof(diag_desc);\r
+ memcpy_s(descriptor.desc_uuid.uuid, sizeof(descriptor.desc_uuid.uuid), (char *)&diag_desc, sizeof(diag_desc));\r
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ descriptor.value_len = (uint16_t)sizeof(ccc_val);\r
+ descriptor.value = ccc_val;\r
+ int ret = gatts_add_descriptor(serverId, srvcHandle, &descriptor);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_descriptor diag_desc ret 0x%x", ret);\r
}\r
- if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0) {\r
+\r
+ if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0 && g_diag_desc_handle != 0) {\r
int ret = gatts_start_service(serverId, srvcHandle);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
}\r
if (g_sample_svr_handle == srvcHandle) {\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
status, serverId, srvcHandle, descriptorHandle);\r
+ g_diag_desc_handle = descriptorHandle;\r
+ }\r
+\r
+ if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0 && g_diag_desc_handle != 0) {\r
+ int ret = gatts_start_service(serverId, srvcHandle);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
}\r
}\r
\r
\r
static void BtGattsRequestReadCallback(uint8_t serverId, uint16_t connId, gatts_req_read_cb_t *readCbPara, errcode_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestReadCallback");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGattsRequestReadCallback handle = %u", readCbPara->handle);\r
}\r
\r
static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts_req_write_cb_t *writeCbPara, errcode_t status)\r
{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback handle = %u", writeCbPara->handle);\r
if (g_sample_characteristic_handle == writeCbPara->handle) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback handle = %u", writeCbPara->handle);\r
if (writeCbPara->length == 9) {\r
- uint8_t ctkd[] = {'o', 'p', 'e', 'n', ' ', 'c', 't', 'k', 'd'};\r
- if (memcmp(ctkd, writeCbPara->value, writeCbPara->length) == 0) {\r
+ if (memcmp("open ctkd", writeCbPara->value, writeCbPara->length) == 0) {\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "enable ctkd");\r
// 一键双连使能(依赖安全连接参数配置)\r
errcode_t ret = gap_ble_set_ctkd_enable(true);\r
\r
// 发起ble配对\r
ret = gap_ble_pair_remote_device(&g_bd_addr);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_pair_remote_device ret = %u ", ret);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_pair_remote_device ret = %u ", ret);\r
}\r
} else if (writeCbPara->length == 10) {\r
- uint8_t ctkd[] = {'c', 'l', 'o', 's', 'e', ' ', 'c', 't', 'k', 'd'};\r
- if (memcmp(ctkd, writeCbPara->value, writeCbPara->length) == 0) {\r
+ if (memcmp("close ctkd", writeCbPara->value, writeCbPara->length) == 0) {\r
// 一键双连去使能\r
errcode_t ret = gap_ble_set_ctkd_enable(false);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_disable ret = %u", ret);\r
}\r
}\r
} else if (g_diag_characteristic_handle == writeCbPara->handle) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "diag_gatt_write_req_cbk");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "diag_gatt_write_req_cbk handle = %u", writeCbPara->handle);\r
diag_gatt_write_req_cbk(serverId, connId, writeCbPara, status);\r
+ } else if (g_diag_desc_handle == writeCbPara->handle) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "diag_gatt_set_handle handle = %u", writeCbPara->handle);\r
+ if ((writeCbPara->length == 2) && (*(char*)(writeCbPara->value) == 1)) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "open gatt channel");\r
+ diag_gatt_set_handle(serverId, connId, g_diag_characteristic_handle);\r
+ msg_center_set_trans_channel(DIAG_FRAME_FID_BT);\r
+ } else if ((writeCbPara->length == 2) && (*(char*)(writeCbPara->value) == 0)) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "close gatt channel");\r
+ diag_gatt_set_handle(0, 0, 0);\r
+ msg_center_set_trans_channel(DIAG_FRAME_FID_PHONE);\r
+ }\r
}\r
}\r
\r
{\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsMtuChangedCallback connId = %u mtuSize = %u", connId, mtuSize);\r
}\r
-/* 与设备建立A2DP连接 */\r
-static int wstp_a2dp_snk_connect(const bd_addr_t *bd_addr)\r
-{\r
- int ret = a2dp_snk_connect(bd_addr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"a2dp_snk_connect ret(int): %x\n", ret);\r
- return ret;\r
-}\r
-\r
-/* 与设备断开A2DP连接 */\r
-static int wstp_a2dp_snk_disconnect(const bd_addr_t *bd_addr)\r
-{\r
- int ret = a2dp_snk_disconnect(bd_addr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"a2dp_snk_disconnect ret(int): %x\n", ret);\r
- return ret;\r
-}\r
\r
static void BtA2dpSnkAcceptTimerStop(void)\r
{\r
static int32_t BtA2dpSnkAudioCreate()\r
{\r
#if MEDIA_A2DP_SNK_INTERFACE\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "audioFormat %d channelCount %d sampleRate %d \n",\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audioFormat %d channelCount %d sampleRate %d \n",\r
g_audio_format_config.audioFormat, g_audio_format_config.channelCount, g_audio_format_config.sampleRate);\r
\r
int32_t ret = AudioManagerA2dpSinkSetParam(g_audio_format_config);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkSetParam ret %x\n", ret);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkSetParam ret %x\n", ret);\r
ret = AudioManagerA2dpSinkCreate();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkCreate ret %x\n", ret);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkCreate ret %x\n", ret);\r
#endif\r
/* 起定时器接受音乐开始请求 */\r
(void)BtA2dpSnkStartAcceptTimer();\r
return 0;\r
}\r
\r
-int32_t BtA2dpSnkAudioDestroy(void)\r
+static int32_t BtA2dpSnkAudioDestroy()\r
{\r
#if MEDIA_A2DP_SNK_INTERFACE\r
int32_t ret = AudioManagerA2dpSinkDestroy();\r
return 0;\r
}\r
\r
-//a2dp sink端 状态改变回调\r
static void BtA2dpSnkConnectStateChangedCb(bd_addr_t *bd_addr, int conn_state)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x conn_state: %x\n",\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x conn_state: %x\n",\r
bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], conn_state); /* 3 2 1 0 idx */\r
- (void)memcpy_s(&g_bd_addr, sizeof(bd_addr_t), bd_addr, sizeof(bd_addr_t));\r
- if(conn_state==PROFILE_STATE_DISCONNECTING || conn_state==PROFILE_STATE_DISCONNECTED)\r
- {\r
- //if(0==uapi_a2dp_snk_get_device_connect_state() && 0==uapi_hfp_connect_state())\r
- {\r
- #ifdef SUPPORT_BLE_SERVICE\r
- SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);\r
- SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- #endif\r
-\r
- }\r
-\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_DISCONNECT_A2DP);\r
-\r
-\r
- }\r
- else if (conn_state==PROFILE_STATE_CONNECTING || conn_state==PROFILE_STATE_CONNECTED)\r
- {\r
-#ifdef BR_DISCONNECT\r
- if(!cm_get_A2DP_switch())\r
- {\r
- uapi_a2dp_snk_disconnect();\r
- return;\r
- }\r
-\r
- if(cm_get_HFP_switch() && uapi_hfp_connect_state()==0)\r
- {\r
- uapi_hfp_connect();\r
- }\r
-#endif\r
-\r
-#ifdef SUPPORT_BLE_SERVICE\r
- SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);\r
- SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- #endif\r
-\r
-\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_CONNECT_A2DP);\r
- // if(pbap_pce_get_device_connect_state(bd_addr)==PROFILE_STATE_DISCONNECTING ||\r
- // pbap_pce_get_device_connect_state(bd_addr)==PROFILE_STATE_DISCONNECTED)\r
- // uapi_pbap_cmd_start_client();\r
- // if(conn_state==PROFILE_STATE_CONNECTED)\r
- // {\r
- // if(pbap_pce_get_device_connect_state(bd_addr)==PROFILE_STATE_DISCONNECTED)\r
- // uapi_connect_pbap_pce();\r
- // else \r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"pbap_pce_get_device_connect_state(int): %X\n", pbap_pce_get_device_connect_state(bd_addr));\r
- \r
- // }\r
- \r
- \r
-\r
- }\r
- \r
- \r
- \r
- \r
}\r
\r
static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr)\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n",\r
bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */\r
BtA2dpSnkAudioCreate();\r
-\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_A2DP_SNK_START_STREAM);\r
- \r
- if(PlayersModel::GetInstance()->GetMusicSource())//如果是手机音乐才更新显示\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::set_player_state, OHOS::PlayersModel::GetInstance(),true));\r
- // PlayersModel::GetInstance()->get_avrcp_ct_get_element_attributes();\r
}\r
\r
static void BtA2dpSnkPlayingStateChangedCb(bd_addr_t *bd_addr, int playing_state)\r
{\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x playing_state: %x\n",\r
bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], playing_state); /* 3 2 1 0 idx */\r
- \r
if (playing_state == A2DP_NOT_PLAYING) {\r
- if(PlayersModel::GetInstance()->GetMusicSource())//如果是手机音乐才更新显示\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::set_player_state, OHOS::PlayersModel::GetInstance(),false));\r
BtA2dpSnkAudioDestroy();\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_A2DP_SNK_NOT_PLAYING);\r
- }\r
- else\r
- {\r
- uapi_save_runtime_log(RUNTIME_LOG_BR_A2DP_SNK_PLAYING);\r
}\r
}\r
\r
BtA2dpSnkPlayingStateChangedCb,\r
BtA2dpSnkConfigChangedCb\r
};\r
-void BtA2dpInit(void)\r
-{\r
- /* a2dp source */\r
- g_a2dpSrcCallbacks.connectstate_changed_cb = A2dpSrcConnectstateChanged;\r
- g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;\r
- g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;\r
- a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);\r
- /* a2dp sink */\r
- a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
-}\r
-\r
-void BtA2dpDeInit(void)\r
-{\r
- a2dp_src_deregister_callbacks(&g_a2dpSrcCallbacks);\r
- a2dp_snk_deregister_callbacks(&g_a2dp_snk_callbacks);\r
-\r
-}\r
-static void sample_gap_state_changed_callback(const int transport, const int status)\r
-{\r
- printf("gap_state_changed_callback transport: %d status: %d\n", transport, status);\r
-}\r
\r
-static void sample_gap_scan_mode_changed_callback(int mode)\r
+void BtInitCallBacks()\r
{\r
- printf("gap_scan_mode_changed_callback mode: %d\n", mode);\r
- \r
- if ((gap_get_device_class(&ACL_bdAdd) & 0x200) != 0) \r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sample_gap_scan_mode_changed_callback: Mobile Phone Device");\r
- if(bt_is_acl_connected(&ACL_bdAdd) && mode!=GAP_SCAN_MODE_NONE)\r
- {\r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
- }\r
- }\r
- \r
- \r
-}\r
-\r
-void BtInitCallBacks(void)\r
-{\r
- g_btGapCallBacks .scan_mode_changed_callback=sample_gap_scan_mode_changed_callback;\r
- g_btGapCallBacks.state_change_callback=sample_gap_state_changed_callback;\r
g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback;\r
g_btGapCallBacks.discovery_state_changed_callback = BtGapDiscoveryStateChangedCallback;\r
g_btGapCallBacks.acl_state_changed_callbak = GapAclStateChangedCallback;\r
g_btGapCallBacks.pair_confiremed_callback = BtGapPairConfirmedCallback;\r
gap_register_callbacks(&g_btGapCallBacks);\r
\r
+ g_a2dpSrcCallbacks.connectstate_changed_cb = A2dpSrcConnectstateChanged;\r
+ g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;\r
+ g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;\r
+ a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);\r
+\r
+ /* a2dp sink */\r
+ a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
}\r
\r
void BtInitCallBacksEx()\r
g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
- g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
- wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
+ g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
+ wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
\r
g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;\r
g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;\r
\r
void BtInitGatts(void)\r
{\r
- uint16_t id = 0x1FF0;\r
- uint16_t ser_id = 0x1FFF;\r
+ uint16_t id = 0xF01F;\r
+ uint16_t ser_id = 0xFF1F;\r
uint8_t serverId = 0;\r
bt_uuid_t uuid;\r
int ret;\r
memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
ret = wrapper_gatts_add_service(serverId, &uuid, true);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
+\r
+ wrapper_gatts_service_start();\r
}\r
\r
static uint8_t Char2Num(int8_t c)\r
}\r
gap_ble_adv_params_t adv_para;\r
memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
- adv_para.min_interval = 0x30;//140;//0x30;\r
- adv_para.max_interval = 0x60;//160;//0x60;\r
+ adv_para.min_interval = 0x30;\r
+ adv_para.max_interval = 0x60;\r
adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
adv_para.channel_map = 0x7;\r
adv_para.duration = 0;\r
-\r
gap_ble_set_adv_param(advId, &adv_para);\r
gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);\r
errcode_t ret = gap_ble_start_adv(advId);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart bt gap_ble_start_adv ret = 0x%x", ret);\r
}\r
-//////////////////////////////////A2DP sink端 代码///////////////////////////////////////////////\r
-\r
-int get_BT_is_init()\r
-{\r
- return g_bluetooth_initialled;\r
-}\r
-\r
-int uapi_a2dp_snk_get_device_connect_state()\r
-{\r
- if(get_BT_is_init()==0)\r
- {\r
- return 0;\r
- }\r
-\r
- int ret = a2dp_snk_get_device_connect_state(&g_bd_addr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"state(int): %d\n", ret);\r
-\r
- if(ret==PROFILE_STATE_CONNECTING || ret==PROFILE_STATE_CONNECTED)\r
- return 1;\r
- else\r
- return 0;\r
-}\r
-\r
-\r
-void uapi_get_br_address(bd_addr_t *bdaddr)\r
-{\r
- #ifdef SUPPORT_BLE_SERVICE\r
- if(BtGapPair_bdAddr.addr[0]==0 && BtGapPair_bdAddr.addr[1]==0 &&\r
- BtGapPair_bdAddr.addr[2]==0 && BtGapPair_bdAddr.addr[3]==0 )\r
- {\r
- uint8_t MacType = 0;\r
- uint8_t mac_data[6];\r
- memset(mac_data,0,6);\r
- GetwatchSaveMac(mac_data,&MacType);\r
- BtGapPair_bdAddr.addr[0]=mac_data[0];\r
- BtGapPair_bdAddr.addr[1]=mac_data[1];\r
- BtGapPair_bdAddr.addr[2]=mac_data[2];\r
- BtGapPair_bdAddr.addr[3]=mac_data[3];\r
- BtGapPair_bdAddr.addr[4]=mac_data[4];\r
- BtGapPair_bdAddr.addr[5]=mac_data[5];\r
- BtGapPair_bdAddr.type=MacType;\r
- }\r
- memcpy(bdaddr,&BtGapPair_bdAddr,sizeof(bd_addr_t));\r
-#endif\r
-\r
-\r
-}\r
-\r
-void uapi_set_br_address(bd_addr_t *bdaddr)\r
-{\r
- memcpy(&BtGapPair_bdAddr,bdaddr,sizeof(bd_addr_t));\r
-}\r
-\r
-static uint8_t br_cmd=0;\r
-int uapi_a2dp_snk_connect()\r
-{\r
- br_cmd=BR_A2DP_CONNECT;\r
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BR_CONNECT,&br_cmd,sizeof(br_cmd));\r
- return 0;\r
-\r
-}\r
- \r
-\r
-int uapi_a2dp_snk_connect_()\r
-{\r
-\r
- if(get_BT_is_init()==0)\r
- {\r
- return 0;\r
- }\r
-\r
- bd_addr_t bdaddr={0};\r
- uapi_get_br_address(&bdaddr);\r
-\r
- int ret = a2dp_snk_connect(&bdaddr);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x g_bd_addr.type: %x\n",\r
- bdaddr.addr[3], bdaddr.addr[2], bdaddr.addr[1], bdaddr.addr[0], bdaddr.type); /* 3 2 1 0 idx */\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"state(int): %x\n", ret);\r
- return ret;\r
-}\r
-\r
-int uapi_a2dp_snk_disconnect()\r
-{\r
- br_cmd=BR_A2DP_DISCONNECT;\r
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BR_CONNECT,&br_cmd,sizeof(br_cmd));\r
- return 0;\r
-}\r
- \r
-\r
-int uapi_a2dp_snk_disconnect_()\r
-{\r
- if(get_BT_is_init()==0)\r
- {\r
- return 0;\r
- }\r
- \r
- bd_addr_t bdaddr={0};\r
- uapi_get_br_address(&bdaddr);\r
-\r
- int ret = a2dp_snk_disconnect(&bdaddr);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"state(int): %X\n", ret);\r
- return ret;\r
-}\r
-\r
-// int uapi_disconnect_remote_device_()\r
-// {\r
-// do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BR_CONNECT,&br_cmd,sizeof(br_cmd));\r
-// return 0;\r
-// }\r
- \r
-\r
-int uapi_disconnect_remote_device()\r
-{\r
- bd_addr_t bdaddr={0};\r
- uapi_get_br_address(&bdaddr);\r
-\r
- if (bt_is_acl_connected(&bdaddr))\r
- {\r
- \r
- int ret = gap_disconnect_remote_device(&bdaddr);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetooth_close_all gap_disconnect_remote_device ret = %u", ret);\r
- }\r
- else\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt_is_acl_connected bt_acl_is True");\r
- }\r
- return 0;\r
-}\r
-\r
-\r
-int uapi_get_acl_connect_state()\r
-{\r
- bd_addr_t bdaddr={0};\r
- uapi_get_br_address(&bdaddr);\r
- if (bt_is_acl_connected(&bdaddr))\r
- {\r
- return 1;\r
- }\r
- else\r
- {\r
- return 0;\r
- }\r
-}\r
-\r
-int uapi_set_acl_connect_hfp()\r
-{\r
- ALC_connect_hfp_flag=1;\r
- return 0;\r
-}\r
-\r
-int uapi_set_acl_connect_A2DP()\r
-{\r
- ALC_connect_A2DP_flag=1;\r
- return 0;\r
-}\r
-\r
-\r
-int uapi_reconnect_()\r
-{\r
- \r
- br_cmd=BR_RECONNECT;\r
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BR_CONNECT,&br_cmd,sizeof(br_cmd));\r
- return 0;\r
-}\r
- \r
-\r
-int uapi_reconnect(void)\r
-{\r
- bd_addr_t bdaddr={0};\r
- uapi_get_br_address(&bdaddr);\r
- int ret=gap_reconnect_media_device(&bdaddr);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ret(int): %X\n", ret);\r
-\r
- return 0;\r
-}\r
-\r
-int uapi_close_br_scan(void)\r
-{\r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
- return 0;\r
-}\r
-\r
-int uapi_open_br_scan(void)\r
-{\r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0);\r
- return 0;\r
-}\r
-\r
-// /////////////////////////////////////////HFP hf端 代码///////////////////////////////////////////////////\r
-\r
-// int uapi_HFP_hf_connect()\r
-// {\r
-// int ret = hfp_hf_connect(&g_bd_addr);\r
-// WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"state(int): %d\n", ret);\r
-// return ret;\r
-// }\r
-\r
-// int uapi_a2dp_snk_disconnect()\r
-// {\r
-// int ret = a2dp_snk_disconnect(&g_bd_addr);\r
-// WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"state(int): %d\n", ret);\r
-// return ret;\r
-// }\r
-\r
-\r
-void cm_initBluetoothDeviceList(void)\r
-{\r
- BluetoothModel::GetInstance()->Init();\r
-}\r
\r
#ifdef __cplusplus\r
}\r
* Author:\r
* Create: 2021-10-13\r
*/\r
-#include "bluetooth/include/BluetoothOptionsView.h"\r
-#include "bluetooth/include/BluetoothModel.h"\r
+#include "BluetoothOptionsView.h"\r
+#include "BluetoothModel.h"\r
#include "wearable_log.h"\r
#include "UiConfig.h"\r
-#include "player/include/PlayersPresenter.h"\r
-#include "player/include/PlayersView.h"\r
-#include "bluetooth/include/BluetoothPresenter.h"\r
-#include "ui_resource_string.h"\r
-#include "ui_resource_image.h"\r
-namespace OHOS\r
-{\r
- static BluetoothOptionsView *g_pBluetoothOptionsView{nullptr};\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
\r
- BluetoothOptionsView::BluetoothOptionsView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::BluetoothOptionsView");\r
- g_pBluetoothOptionsView = this;\r
- }\r
+namespace OHOS {\r
+static BluetoothOptionsView *g_pBluetoothOptionsView{nullptr};\r
\r
- BluetoothOptionsView::~BluetoothOptionsView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::~BluetoothOptionsView");\r
- if (group != nullptr)\r
- {\r
- group->RemoveAll();\r
- if (titleLabel)\r
- {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (btHeadsetIconUmage)\r
- {\r
- delete btHeadsetIconUmage;\r
- btHeadsetIconUmage = nullptr;\r
- }\r
- if (EarPhoneDeviceName)\r
- {\r
- delete EarPhoneDeviceName;\r
- EarPhoneDeviceName = nullptr;\r
- }\r
- if (pairState)\r
- {\r
- delete pairState;\r
- pairState = nullptr;\r
- }\r
- if (unpairButton)\r
- {\r
- delete unpairButton;\r
- unpairButton = nullptr;\r
- }\r
- if (unpairLabel)\r
- {\r
- delete unpairLabel;\r
- unpairLabel = nullptr;\r
- }\r
- if (connectStateLabel)\r
- {\r
- delete connectStateLabel;\r
- connectStateLabel = nullptr;\r
- }\r
- if (optionsOneButton)\r
- {\r
- delete optionsOneButton;\r
- optionsOneButton = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- g_pBluetoothOptionsView = nullptr;\r
- }\r
+BluetoothOptionsView::BluetoothOptionsView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::BluetoothOptionsView");\r
+ g_pBluetoothOptionsView = this;\r
+}\r
+\r
+BluetoothOptionsView::~BluetoothOptionsView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::~BluetoothOptionsView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete connectStateLabel;\r
+ connectStateLabel = nullptr;\r
+ delete optionsOneButton;\r
+ optionsOneButton = nullptr;\r
+ delete unpairButton;\r
+ unpairButton = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ g_pBluetoothOptionsView = nullptr;\r
+}\r
+\r
+BluetoothOptionsView *BluetoothOptionsView::GetInstance()\r
+{\r
+ return g_pBluetoothOptionsView;\r
+}\r
\r
- BluetoothOptionsView *BluetoothOptionsView::GetInstance()\r
- {\r
- return g_pBluetoothOptionsView;\r
+void BluetoothOptionsView::RefreshText(void)\r
+{\r
+ // 刷新状态和文字\r
+ BluetoothModel::GetInstance()->SetBtStatus();\r
+ if (BluetoothModel::GetInstance()->GetAclConnected()) {\r
+ connectStateLabel->SetText("已连接");\r
+ optionsOneButton->SetText("断开连接");\r
+ } else {\r
+ connectStateLabel->SetText("已断开");\r
+ optionsOneButton->SetText("重新连接");\r
}\r
+ BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+ titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
+ optionsOneButton->Invalidate();\r
+}\r
\r
- bool BluetoothOptionsView::CreateBluetoothOptionsLabelView(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::CreateBluetoothOptionsLabelView");\r
- /* ------------------------------- titleLabel ------------------------------- */\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabelExt();\r
- if (titleLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
- return false;\r
- }\r
- }\r
- titleLabel->SetPosition(83, 50, 300, 35);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- titleLabel->SetTextId(STR_BLUETOOTH_HEADPHONES); /*蓝牙耳机*/\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT,30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT,35);\r
- titleLabel->SetRollSpeed(23);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- /* --------------------------- EarPhoneDeviceName --------------------------- */\r
- if (EarPhoneDeviceName == nullptr)\r
- {\r
- EarPhoneDeviceName = new UILabelExt();\r
- if (EarPhoneDeviceName == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "EarPhoneDeviceName new fail");\r
- return false;\r
- }\r
+void BluetoothOptionsView::InItTitleLabel()\r
+{\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView titleLabel new fail");\r
+ return;\r
}\r
- EarPhoneDeviceName->SetPosition(53, 246, 360, 35);\r
- EarPhoneDeviceName->SetStyle(STYLE_TEXT_FONT, 30);\r
- EarPhoneDeviceName->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ titleLabel->SetPosition(60, 100, 333, 45); // 60:x 100:y 333:width 45:height\r
BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- EarPhoneDeviceName->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
- EarPhoneDeviceName->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- EarPhoneDeviceName->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- EarPhoneDeviceName->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 30);\r
- /* -------------------------------- pairState ------------------------------- */\r
- if (pairState == nullptr)\r
- {\r
- pairState = new UILabelExt();\r
- if (pairState == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "pairState new fail");\r
- return false;\r
- }\r
- }\r
- pairState->SetPosition(53, 284, 360, 35);\r
- pairState->SetStyle(STYLE_TEXT_FONT, 30);\r
- pairState->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- pairState->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- pairState->SetTextId(STR_PAIRED);\r
- pairState->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- pairState->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- pairState->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- /* ---------------------------- connectStateLabel 注:暂时不用--------------------------- */\r
- if (connectStateLabel == nullptr)\r
- {\r
- connectStateLabel = new UILabel();\r
- if (connectStateLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView connectStateLabel new fail");\r
- return false;\r
- }\r
+ titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
+ titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(titleLabel);\r
+ }\r
+ if (connectStateLabel == nullptr) {\r
+ connectStateLabel = new UILabel();\r
+ if (connectStateLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView connectStateLabel new fail");\r
+ return;\r
}\r
- connectStateLabel->SetPosition(60, 148, 333, 33);\r
+ connectStateLabel->SetPosition(60, 148, 333, 33); // 60:x 148:y 333:width 33:height\r
connectStateLabel->SetText("已连接");\r
connectStateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
connectStateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
connectStateLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- connectStateLabel->SetVisible(false);\r
- /* -------------------------------------------------------------------------- */\r
- return true;\r
+ group->Add(connectStateLabel);\r
}\r
+}\r
\r
- bool BluetoothOptionsView::CreateBluetoothOptionsLabelButton(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::CreateBluetoothOptionsLabelButton");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- /* ---------------------------- optionsOneButton 注:暂时不用---------------------------- */\r
- if (optionsOneButton == nullptr)\r
- {\r
- optionsOneButton = new UILabelButtonExt();\r
- if (optionsOneButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView optionsOneButton new fail");\r
- return false;\r
- }\r
+void BluetoothOptionsView::InItLabelButton()\r
+{\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+ return;\r
+ }\r
+ if (optionsOneButton == nullptr) {\r
+ optionsOneButton = new UILabelButton();\r
+ if (optionsOneButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView optionsOneButton new fail");\r
+ return;\r
}\r
optionsOneButton->SetPosition(157, 210, 139, 47); // 157:x, 210:y, 139:width 47:height\r
optionsOneButton->SetText("断开连接");\r
optionsOneButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
optionsOneButton->SetViewId(BLUETOOTH_OPTIONONE_BUTTON);\r
optionsOneButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
optionsOneButton->SetTextColor(Color::Red());\r
optionsOneButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
optionsOneButton->SetTextColor(Color::Blue());\r
optionsOneButton->SetOnClickListener(clickListener2);\r
}\r
- optionsOneButton->SetVisible(false);\r
- /* ------------------------------ unpairButton ------------------------------ */\r
- if (unpairButton == nullptr)\r
- {\r
- unpairButton = new UILabelButtonExt();\r
- if (unpairButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView unpairButton new fail");\r
- return false;\r
- }\r
- }\r
- unpairButton->SetPosition(0, 366, 466, 100);\r
- // unpairButton->SetTextId(STR_UNPAIR); // 取消配对\r
- unpairButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ group->Add(optionsOneButton);\r
+ }\r
+ if (unpairButton == nullptr) {\r
+ unpairButton = new UILabelButton();\r
+ if (unpairButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView unpairButton new fail");\r
+ return;\r
+ }\r
+ unpairButton->SetPosition(157, 284, 139, 47); // 157:x, 284:y, 139:width 47:height\r
+ unpairButton->SetText("取消配对");\r
+ unpairButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
unpairButton->SetViewId(BLUETOOTH_UNPAIR_BUTTON);\r
- unpairButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
- unpairButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);\r
- unpairButton->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
+ unpairButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ unpairButton->SetTextColor(Color::Red());\r
unpairButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ unpairButton->SetTextColor(Color::Blue());\r
unpairButton->SetOnClickListener(clickListener2);\r
}\r
- /* -------------------------------------------------------------------------- */\r
- if (unpairLabel == nullptr)\r
- {\r
- unpairLabel = new UILabelExt();\r
- if (unpairLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "unpairLabel new fail");\r
- return false;\r
- }\r
- }\r
- unpairLabel->SetPosition(173, unpairButton->GetY() + 33, 120, 35);\r
- unpairLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- unpairLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- unpairLabel->SetTextId(STR_UNPAIR); // 取消配对\r
- unpairLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
- unpairLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- unpairLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- unpairLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- // unpairLabel->SetRollSpeed(23);\r
- /* -------------------------------------------------------------------------- */\r
- return true;\r
+ group->Add(unpairButton);\r
}\r
+}\r
\r
- bool BluetoothOptionsView::CreateBluetoothOptionsImageView(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::CreateBluetoothOptionsImageView");\r
- /* --------------------------- btHeadsetIconUmage --------------------------- */\r
- if (btHeadsetIconUmage == nullptr)\r
- {\r
- btHeadsetIconUmage = new UIImageView();\r
- if (btHeadsetIconUmage == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btHeadsetIconUmage new fail");\r
- return false;\r
- }\r
- }\r
- btHeadsetIconUmage->SetPosition(193, 134, 80, 80);\r
- btHeadsetIconUmage->SetAutoEnable(false);\r
- btHeadsetIconUmage->SetResizeMode(UIImageView::CENTER);\r
- if (!PlayersView::LoadPlayerImage(btHeadsetIconUmage, PLAYER_EARPHONE))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btHeadsetIconUmage LoadPlayerImage fail");\r
- return false;\r
+UIViewGroup *BluetoothOptionsView::InitShowUpView()\r
+{\r
+ // 获取currentBdAddr db值 model待开发\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView init");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+ return nullptr;\r
}\r
- return true;\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
}\r
-\r
- // 刷新状态和文字\r
- void BluetoothOptionsView::RefreshText(void)\r
- {\r
- BluetoothModel::GetInstance()->SetBtStatus();\r
- if (BluetoothModel::GetInstance()->GetAclConnected())\r
- {\r
- connectStateLabel->SetText("已连接");\r
- optionsOneButton->SetText("断开连接");\r
- }\r
- else\r
- {\r
- connectStateLabel->SetText("已断开");\r
- optionsOneButton->SetText("重新连接");\r
- }\r
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- EarPhoneDeviceName->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
- optionsOneButton->Invalidate();\r
+ InItLabelButton();\r
+ InItTitleLabel();\r
+ UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+ return nullptr;\r
}\r
-\r
- UIViewGroup *BluetoothOptionsView::CreateBluetoothOptionsView()\r
- {\r
- // 获取currentBdAddr db值 model待开发\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView init");\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(earDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_OPTIONS_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- /* -------------------------------------------------------------------------- */\r
- if (!CreateBluetoothOptionsLabelView() || !CreateBluetoothOptionsImageView() || !CreateBluetoothOptionsLabelButton())\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::CreateTipsFailMessageView fail!!");\r
- return nullptr;\r
- }\r
- /* ----------------------------------- Add ---------------------------------- */\r
- group->Add(titleLabel);\r
- group->Add(btHeadsetIconUmage);\r
- group->Add(EarPhoneDeviceName);\r
- group->Add(pairState);\r
- group->Add(unpairButton);\r
- group->Add(unpairLabel);\r
- group->Add(optionsOneButton);\r
- group->Add(connectStateLabel);\r
-\r
- return group;\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(earDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(earDragListener2);\r
}\r
+ group->SetViewId(BLUETOOTH_OPTIONS_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
\r
- UILabelButtonExt *BluetoothOptionsView::GetOptionsOneButton(void)\r
- {\r
- return optionsOneButton;\r
- }\r
+UILabelButton *BluetoothOptionsView::GetOptionsOneButton(void)\r
+{\r
+ return optionsOneButton;\r
+}\r
\r
- UILabelButtonExt *BluetoothOptionsView::GetUnpairButton(void)\r
- {\r
- return unpairButton;\r
- }\r
+UILabelButton *BluetoothOptionsView::GetUnpairButton(void)\r
+{\r
+ return unpairButton;\r
+}\r
\r
- /*\r
- * @brief 获取蓝牙Model中的最后连接设备的地址,然后调用 gap_disconnect_remote_device 函数来断开与该远程设备的连接,并记录相关的日志信息。\r
- *\r
- * eg:比如之前连接的设备是一个蓝牙耳机,当用户主动触发断开操作时,该函数就会执行,断开与该耳机的连接。\r
- */\r
- void BluetoothOptionsView::SetBtDisconnect(void)\r
- {\r
- bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtDisconnect Addr: %02x%02x%02x%02x%02x%02x",\r
- lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- errcode_t retVal = gap_disconnect_remote_device(lastAddr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_disconnect_remote_device %d", retVal);\r
- }\r
\r
- /*\r
- * @brief 记录当前要连接的设备地址的相关日志信息,然后通过蓝牙Model的 ConnectRemoteDevice 函数尝试连接该远程设备,并记录连接结果的日志。 \r
- *\r
- * 当用户选择连接一个新的蓝牙设备时,这个函数会被调用,尝试建立与该设备的连接。\r
- */\r
- void BluetoothOptionsView::SetBtconnect(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect currentAddr: %02x%02x%02x%02x%02x%02x",\r
- currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
- currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(¤tAddr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect ConnectRemoteDevice %d", retVal);\r
- }\r
+void BluetoothOptionsView::SetBtDisconnect(void)\r
+{\r
+ bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtDisconnect Addr: %02x%02x%02x%02x%02x%02x",\r
+ lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+ lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+ errcode_t retVal = gap_disconnect_remote_device(lastAddr);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_disconnect_remote_device %d", retVal);\r
+}\r
+\r
+void BluetoothOptionsView::SetBtconnect(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect currentAddr: %02x%02x%02x%02x%02x%02x",\r
+ currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
+ currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+ errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(¤tAddr);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect ConnectRemoteDevice %d", retVal);\r
+}\r
+\r
+void BluetoothOptionsView::SetUnpair(void)\r
+{\r
+ bool ret;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair currentAddr: %02x%02x%02x%02x%02x%02x",\r
+ currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
+ currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+ ret = gap_remove_pair(¤tAddr);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair gap_remove_pair %d", ret);\r
+}\r
\r
- /*\r
- * @brief 记录当前设备地址的日志,然后调用 gap_remove_pair 函数来解除与该设备的配对,并记录操作结果的日志。\r
- *\r
- * 如果用户不再希望与某个已配对的蓝牙设备保持配对关系,例如一个旧手机,触发此操作时该函数执行。\r
- */\r
- void BluetoothOptionsView::SetUnpair(void)\r
- {\r
- bool ret;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair currentAddr: %02x%02x%02x%02x%02x%02x",\r
- currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
- currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- ret = gap_remove_pair(¤tAddr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair gap_remove_pair %d", ret);\r
- }\r
\r
- /*\r
- * @brief 使用 memcpy_s 函数将传入的地址 addr 复制到 currentAddr 中。\r
- *\r
- * 当获取到新的有效的蓝牙设备地址时,通过这个函数更新当前要操作的地址。\r
- */\r
- void BluetoothOptionsView::SetCurrentAddr(bd_addr_t addr)\r
- {\r
- (void)memcpy_s(currentAddr.addr, BD_ADDR_LEN,\r
- addr.addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断\r
- }\r
+void BluetoothOptionsView::SetCurrentAddr(bd_addr_t addr)\r
+{\r
+ (void)memcpy_s(currentAddr.addr, BD_ADDR_LEN,\r
+ addr.addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断\r
+}\r
\r
- /*\r
- * @brief 返回当前保存的蓝牙设备地址。\r
- *\r
- * 其他函数需要获取当前正在操作的蓝牙地址时,会调用这个函数来获取。\r
- */\r
- bd_addr_t BluetoothOptionsView::GetCurrentAddr(void)\r
- {\r
- return currentAddr;\r
- }\r
+bd_addr_t BluetoothOptionsView::GetCurrentAddr(void)\r
+{\r
+ return currentAddr;\r
+}\r
}
\ No newline at end of file
#include "BluetoothPresenter.h"\r
#include "BluetoothReconnectView.h"\r
#include "MainBluetoothView.h"\r
+#include "NativeRegisterManager.h"\r
#include "UiConfig.h"\r
-#include "BluetoothModel.h"\r
-#include "custom_utils.h"\r
-#include "common/key_code.h"\r
\r
-#include "NativeRegisterManager.h"\r
-namespace OHOS\r
-{\r
+namespace OHOS {\r
\r
- REGIST_SLICE(VIEW_BLUETOOTH_EARPHONE, MainBluetoothView, BluetoothPresenter);\r
+REGIST_SLICE(VIEW_BLUETOOTH_EARPHONE, MainBluetoothView, BluetoothPresenter);\r
\r
static BluetoothPresenter *g_pBluetoothPresenter = nullptr;\r
\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::~BluetoothPresenter");\r
}\r
\r
-void BluetoothPresenter::OnStart()\r
-{\r
- Presenter<MainBluetoothView>::OnStart();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::On Start ");\r
-}\r
-\r
-void BluetoothPresenter::OnPause(void) {}\r
-\r
-void BluetoothPresenter::OnResume(void) {}\r
-\r
void BluetoothPresenter::OnStop(void)\r
{\r
BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
view_->ChangeView(BLUETOOTHDEVICELISTVIEW, BLUETOOTHEARPHONEVIEW);\r
}\r
\r
-//点击取消连接按钮\r
void BluetoothPresenter::ClickCancelConnedRequestButton(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CANCELCONNEDREQUEST_BUTTON");\r
pbItermView->ConnectAnimatorStop();\r
bluetoothMode_->SetConnectionView(nullptr);\r
bluetoothEarListView->SetNewEquipmentButtonAdd();\r
-\r
+ RootView::GetInstance()->Invalidate();\r
}\r
\r
-//点击取消配对\r
void BluetoothPresenter::ClickUnpairButton(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");\r
view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
}\r
\r
-/*已连接的蓝牙耳机设备视图中【重新连接或断开连接】按钮*/\r
void BluetoothPresenter::ClickOptionsOneButton(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");\r
bluetoothMode_->SetBtStatus();\r
if (bluetoothMode_->GetAclConnected()) {\r
bluetoothMode_->SetTagConnectNew(false);\r
- bluetoothOptionsView->SetBtDisconnect();/*断开与该远程设备的连接*/\r
+ bluetoothOptionsView->SetBtDisconnect();\r
view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
} else {\r
bluetoothMode_->SetTagReconnectJump(true);\r
// 判断是否已有连接\r
bd_addr_t *lastAddr = bluetoothMode_->GetLastConnedAddr();\r
if (bt_is_acl_connected(lastAddr)) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LastDevice addr: %02x%02x%02x%02x%02x%02x is connected",\r
+ lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3],\r
+ lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]);\r
bluetoothMode_->SetTagConnectNew(true);\r
bluetoothOptionsView->SetBtDisconnect();\r
} else {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickConnfailBackButton ConnectRemoteDevice retVal = %d", retVal);\r
}\r
\r
-bool BluetoothPresenter::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- int16_t deltaX;\r
- int16_t deltaY;\r
- deltaX = event.GetDeltaX();\r
- deltaY = event.GetDeltaY();\r
- if (MATH_ABS(deltaX) >= MATH_ABS(deltaY) && MATH_ABS(deltaX) > 30) {\r
- X_DRAG_FLAG = true;\r
- }\r
- }\r
- return true;\r
-}\r
-\r
bool BluetoothPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
{\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
view_->DropView(view);\r
- X_DRAG_FLAG = false;\r
}\r
return true;\r
}\r
{\r
UNUSED(event);\r
if (strcmp(view.GetViewId(), BLUETOOTH_RESCAN_BUTTON) == 0) {\r
- ClickRescanButton();//扫描出的耳机列表界面中的[重新扫描按钮]被点击\r
+ ClickRescanButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_NEWEQUIPMENT_BUTTON) == 0) {\r
- ClickNewEquipmentButton();//已连接设备列表界面中的[重新扫描按钮]被点击\r
+ ClickNewEquipmentButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_CANCELCONNEDREQUEST_BUTTON) == 0) {\r
ClickCancelConnedRequestButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_UNPAIR_BUTTON) == 0) {\r
- ClickUnpairButton();//查看已连接的蓝牙耳机设备界面的[取消配对按]钮被点击\r
+ ClickUnpairButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONONE_BUTTON) == 0) {\r
ClickOptionsOneButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_SUCC_BACK_BUTTON) == 0) {\r
- ClickSuccBackButton();//点击连接成功的确定按钮\r
+ ClickSuccBackButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_FAIL_BACK_BUTTON) == 0) {\r
- ClickFailBackButton(); //点击重新搜索按钮\r
+ ClickFailBackButton();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_CONN_FAIL_BACK_BUTTON) == 0) {\r
- ClickConnfailBackButton();//连接失败的重试按钮\r
- }\r
- return true;\r
-}\r
-\r
-bool BluetoothPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnKeyAct");\r
- uint16 keyID = event.GetKeyId();\r
- uint16 keyState = event.GetState();\r
- // 如果是power键就返回上一级\r
- if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
- {\r
- //如果是按键退出,退出时需要做一些清理工作\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if(bluetoothEarPhoneView)\r
- {\r
- bluetoothEarPhoneView->BtAnimatorStop(); //停止搜索动画\r
- bluetoothEarPhoneView->StopBtDiscovery();//停止定时器\r
- BluetoothModel::GetInstance()->SetTagConnectView(false); //清除标志位\r
- BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
- }\r
- NativeAbility::GetInstance().Back();\r
+ ClickConnfailBackButton();\r
}\r
return true;\r
}\r
-\r
-\r
};\r
#include "PlayersPresenter.h"\r
#include "BluetoothPresenter.h"\r
#include "common/image_cache_manager.h"\r
-#include "uicomponents/UIComponents.h"\r
-#include <custom_utils.h>\r
-#include "graphic_service.h"\r
-#include <ui_service.h>\r
+\r
namespace OHOS {\r
static BluetoothReconnectView *g_pBluetoothReconnectView{nullptr};\r
-#define BLUETOOTH_IMAGE_X 183\r
-#define BLUETOOTH_IMAGE_Y 153\r
-#define BLUETOOTH_IMAGE_WIDTH 100\r
-#define BLUETOOTH_IMAGE_HEIGHT 120\r
-#define BLUETOOTH_DELAY 50\r
-static constexpr const char *reconnectImagePaths = "/user/res/connect/";\r
-osTimerId_t g_stopConnectHandle = nullptr;\r
-static constexpr uint64_t MS_CONN_TIME = 15000;\r
+#define BLUETOOTH_IMAGE_X 175\r
+#define BLUETOOTH_IMAGE_Y 125\r
+#define BLUETOOTH_IMAGE_WIDTH 104\r
+#define BLUETOOTH_IMAGE_HEIGHT 104\r
+#define BLUETOOTH_DELAY 200\r
+\r
BluetoothReconnectView::BluetoothReconnectView()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::BluetoothReconnectView");\r
BluetoothReconnectView::~BluetoothReconnectView()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::~BluetoothReconnectView");\r
- if(group){\r
- group->RemoveAll();\r
- if(titleLabel){\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if(bluetoothNameLabel){\r
- delete bluetoothNameLabel;\r
- bluetoothNameLabel = nullptr;\r
- }\r
- if(reconnectAnimator){\r
- reconnectAnimator->Stop();\r
- delete reconnectAnimator;\r
- reconnectAnimator = nullptr;\r
- if(reconnectPathsArray != nullptr)\r
- FreeImageInfoArray(reconnectPathsArray, reconnectImagePaths, BLUETOOTH_RECONNECT_IMAGE_NUM);\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- ScreenTurnOff();\r
- stop_connect_timer();\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete bluetoothNameLabel;\r
+ bluetoothNameLabel = nullptr;\r
+ delete reconnectAnimator;\r
+ reconnectAnimator = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
g_pBluetoothReconnectView = nullptr;\r
}\r
\r
-\r
+bd_addr_t BluetoothReconnectView::GetcurrentBdAddr(void)\r
+{\r
+ return currentBdAddr;\r
+}\r
\r
BluetoothReconnectView *BluetoothReconnectView::GetInstance()\r
{\r
titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetVisible(false);\r
group->Add(titleLabel);\r
}\r
if (bluetoothNameLabel == nullptr) {\r
bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- bluetoothNameLabel->SetVisible(false);\r
group->Add(bluetoothNameLabel);\r
}\r
}\r
\r
+void BluetoothReconnectView::BtReconnectStart(void)\r
+{\r
+ reconnectAnimator->Start();\r
+}\r
+\r
+void BluetoothReconnectView::BtReconnectStop(void)\r
+{\r
+ reconnectAnimator->Stop();\r
+}\r
+\r
UIViewGroup *BluetoothReconnectView::InitShowUpView()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView init");\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reDragListener GetInstance fail");\r
return nullptr;\r
}\r
- /* ------------------------------ 连接过程动画不能右滑退出 ------------------------------ */\r
if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- // group->SetOnDragListener(reDragListener);\r
+ group->SetOnDragListener(reDragListener);\r
} else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- // group->SetOnDragListener(reDragListener2);\r
+ group->SetOnDragListener(reDragListener2);\r
}\r
group->SetViewId(BLUETOOTH_RECONNECT_VIEW);\r
group->SetDraggable(true);\r
\r
void BluetoothReconnectView::BtReconnectImageAnimator()\r
{\r
-#if 0\r
const char *reconnectImagePath[BLUETOOTH_RECONNECT_IMAGE_NUM] = {\r
PNG_A019_080_IMAGE_PATH,\r
PNG_A019_081_IMAGE_PATH,\r
reconnectAnimator->SetRepeat(true);\r
group->Add(reconnectAnimator);\r
}\r
-#endif\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtScanImageAnimator init");\r
- reconnectPathsArray = CreateImageInfoArray(reconnectImagePaths, BLUETOOTH_RECONNECT_IMAGE_NUM);\r
- if (reconnectAnimator == nullptr)\r
- {\r
- reconnectAnimator = new UIImageAnimatorView();\r
- if (reconnectAnimator == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reconnectAnimator new fail");\r
- return;\r
- }\r
- for (uint8_t i = 0; i < BLUETOOTH_RECONNECT_IMAGE_NUM; i++)\r
- {\r
- reconnetImageInfo[i].imageInfo = (reconnectPathsArray[i]);\r
- reconnetImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
- reconnetImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;\r
- reconnetImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;\r
- reconnetImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;\r
- reconnetImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;\r
- }\r
- reconnectAnimator->SetPosition(BLUETOOTH_IMAGE_X, BLUETOOTH_IMAGE_Y, BLUETOOTH_IMAGE_WIDTH, BLUETOOTH_IMAGE_HEIGHT);\r
- reconnectAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- reconnectAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
- reconnectAnimator->SetImageAnimatorSrc(reconnetImageInfo, BLUETOOTH_RECONNECT_IMAGE_NUM, BLUETOOTH_DELAY);\r
- reconnectAnimator->SetRepeat(true);\r
- reconnectAnimator->SetSizeFixed(true);\r
- group->Add(reconnectAnimator);\r
- }\r
}\r
\r
-bd_addr_t BluetoothReconnectView::GetcurrentBdAddr(void)\r
-{\r
- return currentBdAddr;\r
-}\r
-\r
-void BluetoothReconnectView::BtReconnectStart(void)\r
-{\r
- // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); //动画启动,常亮屏\r
- ScreenTurnOn(20*1000);\r
- reconnectAnimator->Start();\r
- start_connect_timer();\r
-}\r
-\r
-void BluetoothReconnectView::BtReconnectStop(void)\r
-{\r
- /* ---------------------------------- 取消定时器 --------------------------------- */\r
- // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);//动画停止,取消常亮屏\r
- reconnectAnimator->Stop();\r
- stop_connect_timer();\r
-}\r
-\r
-// 定时器回调函数\r
-static void ConnectTimerCallbackProc(int data)\r
-{\r
- (void)data;\r
- \r
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
- if (mainBluetoothView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
- return;\r
- }\r
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSCONNFAILMESSAGEVIEW);\r
-\r
- TipsConnFailMessageView *tipsConnFailMessageView = TipsConnFailMessageView::GetInstance();\r
- if (tipsConnFailMessageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionFail tipsConnFailMessageView GetInstance fail");\r
- return;\r
- }\r
- BluetoothCaseInfo *bluetoothInfo_= BluetoothModel::GetInstance()->GetTempMacValue();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "device name = %s",bluetoothInfo_->deviceName);\r
- bd_addr_t addr;\r
- (void)memcpy_s(addr.addr, BD_ADDR_LEN, bluetoothInfo_->addr, BD_ADDR_LEN);\r
- tipsConnFailMessageView->RefreshNameLabel(addr);\r
-}\r
-\r
-static void ConnectTimerCallback(int data)\r
-{\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(ConnectTimerCallbackProc, data));\r
-}\r
-//开启第一个重连动画的定时器\r
-void BluetoothReconnectView::start_connect_timer()\r
-{\r
- /*开启定时器*/\r
- if (g_stopConnectHandle != nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopConnectHandle != nullptr");\r
- return;\r
- }\r
- g_stopConnectHandle = osTimerNew((osTimerFunc_t)ConnectTimerCallback, osTimerPeriodic, nullptr, nullptr);\r
- if (g_stopConnectHandle == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerNew failed!!");\r
- return;\r
- }\r
- uint32 tick = osMs2Tick(MS_CONN_TIME);\r
- osStatus_t retTimer = osTimerStart(g_stopConnectHandle, tick);\r
- if (retTimer != osOK)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerStart failed, ret = %lx!!", retTimer);\r
- if (g_stopConnectHandle != nullptr)\r
- {\r
- retTimer = osTimerDelete(g_stopConnectHandle);\r
- if (retTimer != osOK)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerDelete ret = %lx!!", retTimer);\r
- return;\r
- }\r
- g_stopConnectHandle = nullptr;\r
- }\r
- return;\r
- }\r
-}\r
-//停止定时器\r
-void BluetoothReconnectView::stop_connect_timer()\r
-{\r
- if (g_stopConnectHandle != nullptr)\r
- {\r
- osTimerStop(g_stopConnectHandle);\r
- osStatus_t ret = osTimerDelete(g_stopConnectHandle);\r
- if (ret != osOK)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
- return;\r
- }\r
- g_stopConnectHandle = nullptr;\r
- }\r
-}\r
}
\ No newline at end of file
#ifdef __cplusplus\r
extern "C" {\r
#endif\r
-#include "custom_utils.h"\r
\r
static bool gatts_register_flag = false;\r
static uint8_t gatts_server_id = 0;\r
callback.start_service_cb(server_id, handle, status);\r
}\r
}\r
- // printf("wrapper_gatts_start_service_callback server_id %d,handle %d, status %x , g_svr_handle_list.size %d\r\n",server_id,handle,status,g_svr_handle_list.size());\r
g_uuid_list.pop_front();\r
- wrapper_gatts_service_start();\r
- // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_BLE_WRAPPERSTART,NULL,0);\r
+ wrapper_gatts_service_start();\r
}\r
}\r
void wrapper_gatts_stop_service_callback(uint8_t server_id, uint16_t handle, errcode_t status)\r
g_uuid_list.push_back(*service_uuid);\r
return ERRCODE_SUCC;\r
}\r
-#include "debug_print.h"\r
-extern "C" void custom_ble_service_start(void);\r
+\r
void wrapper_gatts_service_start(void)\r
{\r
- // printf("wrapper_gatts_service_start \n");\r
if (!g_uuid_list.empty()) {\r
bt_uuid_t &uuid = g_uuid_list.front();\r
- bt_uuid_t uuid_tmp={0};\r
- memcpy(&uuid_tmp,&uuid,sizeof(bt_uuid_t));\r
// 服务异步添加,需要保证当前服务start后,再添加下一个服务\r
- // g_uuid_list.pop_front();\r
- errcode_t ret = gatts_add_service(gatts_server_id, &uuid_tmp, true);\r
- // printf("wrapper_gatts_service_start gatts_add_service uuid len %x [0x%02X%02X],gatts_server_id %u, ret 0x%x, g_uuid_list.size %d\n",\r
- // uuid_tmp.uuid_len,uuid_tmp.uuid[0],uuid_tmp.uuid[1],gatts_server_id,ret,g_uuid_list.size());\r
-\r
+ (void)gatts_add_service(gatts_server_id, &uuid, true);\r
} else {\r
g_svr_handle_list.clear();\r
- // printf("wrapper_gatts_service_start g_uuid_list empty,start adv \n");\r
- /**开始ble广播*/\r
- custom_ble_service_start();\r
}\r
- // printf("wrapper_gatts_service_start end\n");\r
-\r
-}\r
-void wrapper_gatts_clear_service(void)\r
-{\r
- if (!g_uuid_list.empty()) g_uuid_list.clear();\r
- if (!g_svr_handle_list.empty()) g_svr_handle_list.clear();\r
- gatts_register_flag = false;\r
}\r
+\r
#ifdef __cplusplus\r
}\r
#endif\r
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2022. All rights reserved.
- * Description: This module include test function of BT PBAP Service module.
- */
-
-#include "Bluetooyhpabpserver.h"
-#include <soc_osal.h>
-#include <td_base.h>
-#include "securec.h"
-#include "errcode.h"
-#include "bts_br_gap.h"
-#include "bts_pbap.h"
-// #include "sample_common.h"
-#include "debug_print.h"
-#include "graphic_service.h"
-#include "msg_center.h"
-#include "bts_def.h"
-#include "bts_gatt_stru.h"
-#include "bts_a2dp_source.h"
-#include "bts_gatt_server.h"
-#include "bts_le_gap.h"
-#include "bts_spp.h"
-#include "osal_task.h"
-#ifdef SUPPORT_BLE_SERVICE
-#include <bleEvent.h>
-#include "bleService.h"
-#endif
-#include "BluetoothModel.h"
-#include "CallerLogModel.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define SAMPLE_PBAP_TASK_STACK_SIZE 0x400
-#define PBAP_APP_FOLDER_MAXLENGTH 40
-static bd_addr_t g_pbap_curr_addr;
-
-typedef enum {
- PBAP_VCF_PB = 0,
- PBAP_VCF_ICH,
- PBAP_VCF_OCH,
- PBAP_VCF_MCH,
- PBAP_VCF_CCH,
- PBAP_VCF_SPD,
- PBAP_VCF_FAV,
-} pbap_vcf_files;
-
-static void sample_pbap_print_addr(const bd_addr_t *bd_addr)
-{
- if (bd_addr != NULL) {
- printf("addr: ****%02x%02x%02x%02x ",
- bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* addr 下标 3 2 1 0 */
- }
-}
-
-static void sample_pbap_conn_state(const bd_addr_t *bd_addr, profile_connect_state_t state)
-{
- sample_pbap_print_addr(bd_addr);
- printf("sample_pbap_conn_state %d\n", state);
- if(state==PROFILE_STATE_CONNECTED)
- {
- uapi_pbap_cmd_pull_phonebook();
- }
- return;
-}
-//接收数据回调
-static void sample_pbap_receive_data(const bd_addr_t *bd_addr, const uint8_t* data, int32_t len)
-{
- sample_pbap_print_addr(bd_addr);
-
- printf("receive %d bytes(%s)\n", len, data);
- if(strstr((char*)data,"vcard-listing.dtd"))
- {
- if(strstr((char*)data,"name"))
- {
- char * name_str=strstr((char*)data,"name");
- char *name_=strtok(name_str,"\"");
- name_=strtok(NULL,"\"");
- OHOS:: CallerLogModel::GetInstance()->Setphonebname(name_,strlen(name_));
- printf("name_ : %s\r\n",name_);
- GraphicService::GetInstance()->PostGraphicEvent(
- std::bind(calllognameupdate));
-
-
- }
-
- }
-
- return;
-}
-
-//传输完成回调
-static void sample_pbap_transfer_complete(const bd_addr_t *bd_addr)
-{
- sample_pbap_print_addr(bd_addr);
- printf("\n");
- return;
-}
-
-static void sample_pbap_get_phonebook_size(const bd_addr_t *bd_addr, uint16_t size)
-{
- sample_pbap_print_addr(bd_addr);
-
- printf("%u\n", size);
- return;
-}
-
-typedef struct {
- uint32_t bts_code;
- td_char print_message[20]; /* 字符串长度20 */
-} sample_pbap_code_print;
-
-static sample_pbap_code_print g_pbap_error_pair[] = {
- {PBAP_ERROR_OK, "OK"},
- {PBAP_ERROR_BAD_REQUEST, "BAD REQUEST"},
- {PBAP_ERROR_NOT_IMPLEMENTED, "NOT IMPLEMENTED"},
- {PBAP_ERROR_UNAUTHORIZED, "UNAUTHORIZED"},
- {PBAP_ERROR_PRECONDITION_FAILED, "PRECONDITION FAILED"},
- {PBAP_ERROR_NOT_FOUND, "NOT FOUND"},
- {PBAP_ERROR_NOT_ACCEPTABLE, "NOT ACCEPTABLE"},
- {PBAP_ERROR_SERVICE_UNAVAILABLE, "SERVICE UNAVAILABLE"},
- {PBAP_ERROR_FORBIDDEN, "FORBIDDEN"},
-};
-
-static td_char* sample_pbap_print_error(uint32_t code)
-{
- for (uint32_t i = 0; i < sizeof(g_pbap_error_pair) / sizeof(g_pbap_error_pair[0]); i++) {
- if (code == g_pbap_error_pair[i].bts_code) {
- return g_pbap_error_pair[i].print_message;
- }
- }
- return NULL;
-}
-
-static void sample_pbap_handle_error_code(const bd_addr_t *bd_addr, int32_t code)
-{
- sample_pbap_print_addr(bd_addr);
- printf("0x%x %s\n", code, sample_pbap_print_error((uint32_t)code));
-}
-
-static bool sample_pbap_is_null_pointer(uint16_t sample_mode, uint8_t index)
-{
- return ((sample_mode & (1 << index)) != 0);
-}
-
-/* 蓝牙电话簿注册回调 */
-void uapi_pbap_pce_reg_callback(void)
-{
- errcode_t ret = ERRCODE_BT_SUCCESS;
- pbap_pce_callbacks_t callbacks = {
- sample_pbap_conn_state,
- sample_pbap_get_phonebook_size,
- sample_pbap_transfer_complete,
- sample_pbap_receive_data,
- sample_pbap_handle_error_code,
- };
- ret = (errcode_t)pbap_pce_register_callbacks(&callbacks);
- printf("uapi_pbap_pce_reg_callback ret=0x%x\n", ret);
-}
-
-
-
-static int32_t sample_pbap_connect_task_body(const void *bd_addr)
-{
- uint32_t result = (uint32_t)pbap_pce_connect((bd_addr_t*)bd_addr);
- if (result != ERRCODE_BT_SUCCESS) {
- printf("Connect to PBAP service failed\n");
- }
- printf("sample_pbap_connect_task_body [Line: %d] finish, result: 0x%x!\n", __LINE__, result);
- return 0;
-}
-
-static void sample_pbap_create_conn_task(const bd_addr_t *bd_addr)
-{
- osal_task *task = osal_kthread_create((osal_kthread_handler)sample_pbap_connect_task_body, (void *)bd_addr, "sample_pbap_connect_task",
- SAMPLE_PBAP_TASK_STACK_SIZE);
- if (task == NULL) {
- printf("create task fail\n");
- return;
- }
-}
-
-/* start a pbap client */
- void uapi_pbap_cmd_start_client()
-{
- // if (params_cnt != 2) { /* 2个参数 */
- // printf("params cnt err: %d!\n", params_cnt);
- // return;
- // }
-
- // uint32_t sample_mode;
- // if (sscanf_s(params[0], "%x", &sample_mode) <= 0) {
- // printf("get sample_mode fail\n");
- // return;
- // }
- // bd_addr_t* bd_addr = NULL;
- // if (!sample_pbap_is_null_pointer((uint16_t)sample_mode, 0)) {
- // bd_addr = sample_pbap_parse_addr(params[1]);
- bd_addr_t bdaddr={0};
- OHOS::uapi_get_br_address(&bdaddr);
- // }
- sample_pbap_create_conn_task((const bd_addr_t*)&bdaddr);
-}
-
-void uapi_pbap_cmd_stop_client()
-{
- bd_addr_t bdaddr={0};
- OHOS::uapi_get_br_address(&bdaddr);
-
- uint32_t ret = (uint32_t)pbap_pce_disconnect(&bdaddr);
- printf("[Line: %d] finish, ret: %u\n", __LINE__, ret);
-}
-
-static int32_t sample_pbap_set_folder_vcf(uint8_t* name, uint8_t vcf, bool is_pull_phone_book)
-{
- if (name == NULL) {
- return -1;
- }
- switch (vcf) {
- case PBAP_VCF_PB: /* Main Phone book */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "pb");
- break;
- case PBAP_VCF_ICH: /* Incoming Calls History */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "ich");
- break;
- case PBAP_VCF_OCH: /* Outgoing Calls History */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "och");
- break;
- case PBAP_VCF_MCH: /* Missed Calls History */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "mch");
- break;
- case PBAP_VCF_CCH: /* Combined Calls History */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "cch");
- break;
- case PBAP_VCF_SPD: /* Speed Dial */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "spd");
- break;
- case PBAP_VCF_FAV: /* Favorite Contacts */
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "fav");
- break;
- default:
- printf("no vcf file be seleted.\n");
- return -1;
- }
- if (is_pull_phone_book) {
- (void)strcat_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, ".vcf");
- }
- return 0;
-}
-
-static void sample_pbap_filter_composer(uint8_t filter[PBAP_MASK_LEN], uint8_t flag)
-{
- uint8_t *temp = NULL;
- uint8_t bytes = 0;
- uint8_t bits = 0;
-
- if (filter && (flag < 64)) { /* flag最大值64 */
- bytes = (uint8_t)(flag >> 3); /* 右移3位判断填入哪个字节 */
- bits = (uint8_t)(flag & 0x07); /* 求余数判断填入哪一位 */
- temp = filter + PBAP_MASK_LEN - 1 - bytes;
- *temp |= (1 << bits);
- }
-}
-
-static void sample_pbap_set_property(uint8_t pro_arr[PBAP_MASK_LEN], uint32_t property)
-{
- uint8_t cur_bit = 0;
- uint32_t temp = property;
- while (temp != 0) {
- if ((temp & 0x01) != 0) {
- sample_pbap_filter_composer(pro_arr, cur_bit);
- }
- temp = temp >> 1;
- cur_bit++;
- }
-}
-
-static bool sample_pbap_set_pull_phone_book_name(uint8_t folder, uint8_t vcf, uint8_t* name)
-{
- if (name == NULL) {
- printf("empty name.\n");
- return false;
- }
- if (folder == PBAP_REPOSITORY_LOCAL) {
- (void)strcpy_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "telecom/");
- } else if (folder == PBAP_REPOSITORY_SIM) {
- (void)strcpy_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, "SIM1/telecom/");
- } else {
- printf("no folder be seleted.\n");
- return false;
- }
-
- if (sample_pbap_set_folder_vcf(name, vcf, true) != 0) {
- return false;
- }
- return true;
-}
-
-static bool wstp_pbap_check_param_valid(
- uint8_t folder, uint8_t vcf, uint16_t max_list_count, uint16_t list_offset, uint8_t format)
-{
- // bts_unused(max_list_count);
- // bts_unused(list_offset);
- bool res = true;
- if (folder == 1) { /* folder 1 */
- if (vcf > 6) { /* vcf num 6 */
- res = false;
- }
- } else if (folder == 2) { /* folder 2 */
- if (vcf > 4) { /* vcf num 4 */
- res = false;
- }
- } else {
- res = false;
- }
-
- if (format > 1) {
- res = false;
- }
-
- return res;
-}
-//PBAP_VCF_PB 10 1 0
-/* get phone book */
-void uapi_pbap_cmd_pull_phonebook()
-{
- printf("uapi_pbap_cmd_pull_phonebook\n");
- uint8_t folder=PBAP_REPOSITORY_LOCAL;//写死只拿手机的,不拿SIM卡的
- uint8_t vcf=PBAP_VCF_PB;//写死 电话簿
- uint16_t max_list_count=0xFFFF;//最大数量
- uint16_t list_offset=0;
- uint8_t format=1;//编码格式
-
- if (!wstp_pbap_check_param_valid(folder, vcf, max_list_count, list_offset, format)) {
- printf("pbap param invalid\n");
- return;
- }
-
- pbap_pce_pull_phone_book_param_t *thr_par =
- (pbap_pce_pull_phone_book_param_t*)(void *)malloc(sizeof(pbap_pce_pull_phone_book_param_t));
- if (thr_par == NULL) {
- printf("pbap param malloc failed\n");
- return;
- }
- (void)memset_s(thr_par, sizeof(pbap_pce_pull_phone_book_param_t), 0, sizeof(pbap_pce_pull_phone_book_param_t));
- thr_par->name = (unsigned char *)(void *)malloc(PBAP_APP_FOLDER_MAXLENGTH);
- if (thr_par->name == NULL) {
- printf("pbap name malloc failed\n");
- free(thr_par);
- return;
- }
- (void)memset_s(thr_par->name, PBAP_APP_FOLDER_MAXLENGTH, 0, PBAP_APP_FOLDER_MAXLENGTH);
- /* 为0时代表查询对应记录大小 */
- thr_par->max_list_count = max_list_count;
- thr_par->list_offset = list_offset;
- thr_par->format = format;
- uint32_t property =PBAP_PROPERTY_MASK_TEL | PBAP_PROPERTY_MASK_FN|PBAP_PROPERTY_MASK_UID;
- sample_pbap_set_property(thr_par->property_selector, property);
- uint8_t filter = 0;
- if (filter != 0) {
- sample_pbap_filter_composer(thr_par->property_selector, PBAP_PROPERTY_MASK_FILTER);
- }
-
- if (sample_pbap_set_pull_phone_book_name(folder, vcf, thr_par->name)) {
- printf("pbap_pce_pull_phone_book name=%s\n", thr_par->name);
- pbap_pce_pull_phone_book(NULL, thr_par);
- }
- free(thr_par->name);
- free(thr_par);
-}
-
-/* get phone book */
-static void sample_pbap_cmd_pull_phonebook(const char **params, int32_t params_cnt)
-{
- // if (params_cnt != 9) { /* 9个参数 */
- // printf("params cnt err: %d!\n", params_cnt);
- // return;
- // }
-
- // uint32_t sample_mode;
- // if (sscanf_s(params[0], "%x", &sample_mode) <= 0) {
- // printf("get sample_mode fail\n");
- // return;
- // }
- // bd_addr_t* bd_addr = NULL;
- // if (!sample_pbap_is_null_pointer((uint16_t)sample_mode, 0)) {
- // bd_addr = sample_pbap_parse_addr(params[1]);
- // }
-
- // if (pbap_pce_get_device_connect_state(bd_addr) != PROFILE_STATE_CONNECTED) {
- // printf("No PBAP connection selected!\n");
- // return;
- // }
- // pbap_pce_pull_phone_book_param_t *thr_par =
- // (pbap_pce_pull_phone_book_param_t*)(void *)bt_os_new(sizeof(pbap_pce_pull_phone_book_param_t));
- // if (thr_par == NULL) {
- // printf("pbap param malloc failed\n");
- // return;
- // }
- // (void)memset_s(thr_par, sizeof(pbap_pce_pull_phone_book_param_t), 0, sizeof(pbap_pce_pull_phone_book_param_t));
- // thr_par->name = (unsigned char *)(void *)bt_os_new(PBAP_APP_FOLDER_MAXLENGTH);
- // if (thr_par->name == NULL) {
- // printf("pbap name malloc failed\n");
- // bt_os_free(thr_par);
- // return;
- // }
- // (void)memset_s(thr_par->name, PBAP_APP_FOLDER_MAXLENGTH, 0, PBAP_APP_FOLDER_MAXLENGTH);
- // thr_par->max_list_count = (unsigned short)atoi(params[4]); /* index = 4 */
- // thr_par->list_offset = (unsigned short)atoi(params[5]); /* index = 5 */
- // thr_par->format = (unsigned char)atoi(params[6]); /* index = 6 */
- // uint32_t property = (uint32_t)atoi(params[7]); /* index = 7 */
- // sample_pbap_set_property(thr_par->property_selector, property);
- // int filter = atoi(params[8]); /* index = 8 */
- // if (filter != 0) {
- // sample_pbap_filter_composer(thr_par->property_selector, PBAP_PROPERTY_MASK_FILTER);
- // }
-
- // uint8_t folder = (uint8_t)atoi(params[2]); /* index = 2 */
- // uint8_t vcf = (uint8_t)atoi(params[3]); /* index = 3 */
- // if (sample_pbap_set_pull_phone_book_name(folder, vcf, thr_par->name)) {
- // pbap_pce_pull_phone_book(bd_addr, thr_par);
- // }
- // bt_os_free(thr_par->name);
- // bt_os_free(thr_par);
-}
-
-static bool sample_pbap_set_vcard_listing_name(bd_addr_t* bd_addr, uint8_t folder, uint8_t vcf, uint8_t* name)
-{
- printf("folder=%u vcf=%u\n", folder, vcf);
- uint8_t tel_name[8] = "telecom";
- uint8_t sim_name[5] = "SIM1";
- if (name == NULL) {
- printf("empty name.\n");
- return false;
- }
- uint32_t ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, NULL);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- if (folder == PBAP_REPOSITORY_LOCAL) {
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, tel_name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- } else if (folder == PBAP_REPOSITORY_SIM) {
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, sim_name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, tel_name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- } else {
- printf("no folder be seleted.\n");
- return false;
- }
- if (sample_pbap_set_folder_vcf(name, vcf, false)) {
- return false;
- }
- return true;
-}
-
-/* get phone vCard-Listing */
-void uapi_pbap_cmd_pull_vcard_listing(unsigned char *tell,uint8_t len)
-{
- uint8_t folder=1;
- uint8_t vcf=PBAP_VCF_PB;
- uint16_t max_list_count=0xffff;
- uint16_t list_offset=0;
- uint8_t order=0;
-
- OHOS:: CallerLogModel::GetInstance()->Setphonebname("",0);
-
- OHOS:: CallerLogModel::GetInstance()->Setphonenumber((char *)tell,len);
-
- unsigned char *tell_=(unsigned char *)malloc(len+1);
- if(tell_==NULL)
- {
- return;
- }
- memset_s(tell_,30,0,len);
- memcpy_s(tell_,30,tell,len);
-
- if (!wstp_pbap_check_param_valid(folder, vcf, max_list_count, list_offset, 0)) {
- printf("pbap param invalid\n");
- return;
- }
-
- bd_addr_t* bd_addr = NULL;
-
- pbap_pce_pull_vcard_listing_param_t *thr_par =
- (pbap_pce_pull_vcard_listing_param_t*)(void *)malloc(sizeof(pbap_pce_pull_vcard_listing_param_t));
- if (thr_par == NULL) {
- printf("pbap param malloc failed\n");
- free(tell_);
- return;
- }
-
- (void)memset_s(
- thr_par, sizeof(pbap_pce_pull_vcard_listing_param_t), 0, sizeof(pbap_pce_pull_vcard_listing_param_t));
- thr_par->name = (uint8_t *)(void *)malloc(PBAP_APP_FOLDER_MAXLENGTH);
- if (thr_par->name == NULL) {
- printf("pbap param name malloc failed\n");
- free(thr_par);
- free(tell_);
- return;
- }
- (void)memset_s(thr_par->name, PBAP_APP_FOLDER_MAXLENGTH, 0, PBAP_APP_FOLDER_MAXLENGTH);
-
- thr_par->search_property=PBAP_SEARCH_PROPERTY_NUMBER;
- thr_par->search_value=tell_;
- thr_par->max_list_count = max_list_count;
- thr_par->list_offset = list_offset; /* index = 5 */
- /* 0:索引序 1:字典序 */
- thr_par->order = order;
-
- if (sample_pbap_set_vcard_listing_name(bd_addr, folder, vcf, thr_par->name)) {
- printf("pbap_pce_pull_vcard_listing name=%s\n", thr_par->name);
- pbap_pce_pull_vcard_listing(bd_addr, thr_par);
- }
- free(thr_par->name);
- free(thr_par);
- free(tell_);
-}
-
-/* get phone vCard-Listing */
-static void sample_pbap_cmd_pull_vcard_listing(const char **params, int32_t params_cnt)
-{
- // if (params_cnt != 7) { /* 7个参数 */
- // printf("params cnt err: %d!\n", params_cnt);
- // return;
- // }
-
- // uint32_t sample_mode;
- // if (sscanf_s(params[0], "%x", &sample_mode) <= 0) {
- // printf("get sample_mode fail\n");
- // return;
- // }
- // bd_addr_t* bd_addr = NULL;
- // if (!sample_pbap_is_null_pointer((uint16_t)sample_mode, 0)) {
- // bd_addr = sample_pbap_parse_addr(params[1]);
- // }
-
- // if (pbap_pce_get_device_connect_state(bd_addr) != PROFILE_STATE_CONNECTED) {
- // printf("No PBAP connection selected!\n");
- // return;
- // }
-
- // pbap_pce_pull_vcard_listing_param_t *thr_par =
- // (pbap_pce_pull_vcard_listing_param_t*)(void *)bt_os_new(sizeof(pbap_pce_pull_vcard_listing_param_t));
- // if (thr_par == NULL) {
- // printf("pbap param malloc failed\n");
- // return;
- // }
-
- // (void)memset_s(
- // thr_par, sizeof(pbap_pce_pull_vcard_listing_param_t), 0, sizeof(pbap_pce_pull_vcard_listing_param_t));
- // thr_par->name = (uint8_t *)(void *)bt_os_new(PBAP_APP_FOLDER_MAXLENGTH);
- // if (thr_par->name == NULL) {
- // printf("pbap param name malloc failed\n");
- // bt_os_free(thr_par);
- // return;
- // }
- // (void)memset_s(thr_par->name, PBAP_APP_FOLDER_MAXLENGTH, 0, PBAP_APP_FOLDER_MAXLENGTH);
- // uint8_t folder = (uint8_t)atoi(params[2]); /* index = 2 */
- // uint8_t vcf = (uint8_t)atoi(params[3]); /* index = 3 */
- // thr_par->max_list_count = (unsigned short)atoi(params[4]); /* index = 4 */
- // thr_par->list_offset = (unsigned short)atoi(params[5]); /* index = 5 */
- // thr_par->order = (unsigned char)atoi(params[6]); /* index = 6 */
-
- // if (sample_pbap_set_vcard_listing_name(bd_addr, folder, vcf, thr_par->name)) {
- // pbap_pce_pull_vcard_listing(bd_addr, thr_par);
- // }
- // bt_os_free(thr_par->name);
- // bt_os_free(thr_par);
-}
-
-static bool sample_pbap_set_vcard_entry_name(
- bd_addr_t *bd_addr, uint8_t folder, uint8_t vcf, const td_char *vcf_name, uint8_t *name)
-{
- if (name == NULL) {
- printf("empty name.\n");
- return false;
- }
- uint8_t tel_name[8] = "telecom";
- uint8_t sim_name[5] = "SIM1";
- uint32_t ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, NULL);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- if (folder == PBAP_REPOSITORY_LOCAL) {
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, tel_name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- } else if (folder == PBAP_REPOSITORY_SIM) {
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, sim_name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, tel_name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- } else {
- printf("no folder be seleted.\n");
- return false;
- }
- if (sample_pbap_set_folder_vcf(name, vcf, false)) {
- return false;
- } else {
- ret = (uint32_t)pbap_pce_set_phone_book(bd_addr, name);
- if (ret != ERRCODE_BT_SUCCESS) {
- printf("0x%x %s\n", ret, sample_pbap_print_error(ret));
- return false;
- }
- }
-
- if (strcpy_s((char *)name, PBAP_APP_FOLDER_MAXLENGTH, vcf_name) != EOK) {
- printf("strcpy_s vcf_name fail\n");
- return false;
- }
- return true;
-}
-
-/* get phone vCard-Entry */
-void uapi_pbap_cmd_pull_vcard_entry(td_char *vcf_name)
-{
- printf("uapi_pbap_cmd_pull_vcard_entry: %s\r\n",vcf_name);
- bd_addr_t bdaddr={0};
- OHOS::uapi_get_br_address(&bdaddr);
-
- uint8_t format=1;
- uint8_t vcf=PBAP_VCF_PB;
- uint8_t folder=1;
- if (!wstp_pbap_check_param_valid(folder, vcf, 0, 0, format)) {
- printf("pbap param invalid\n");
- return;
- }
-
- pbap_pce_pull_vcard_entry_param_t *thr_par =
- (pbap_pce_pull_vcard_entry_param_t*)(void *)malloc(sizeof(pbap_pce_pull_vcard_entry_param_t));
- if (thr_par == NULL) {
- printf("pbap param malloc failed\n");
- return;
- }
- (void)memset_s(thr_par, sizeof(pbap_pce_pull_vcard_entry_param_t), 0, sizeof(pbap_pce_pull_vcard_entry_param_t));
- thr_par->name = (uint8_t*)(void *)malloc(PBAP_APP_FOLDER_MAXLENGTH);
- if (thr_par->name == NULL) {
- printf("pbap param name malloc failed\n");
- free(thr_par);
- return;
- }
- (void)memset_s(thr_par->name, PBAP_APP_FOLDER_MAXLENGTH, 0, PBAP_APP_FOLDER_MAXLENGTH);
-
- thr_par->format = format; /* index = 5 */
- uint32_t property = PBAP_PROPERTY_MASK_TEL | PBAP_PROPERTY_MASK_FN; /* index = 6 */
- sample_pbap_set_property(thr_par->property_selector, property);
- uint8_t filter = 0; /* index = 7 */
- if (filter != 0) {
- sample_pbap_filter_composer(thr_par->property_selector, PBAP_PROPERTY_MASK_FILTER);
- }
-
- if (sample_pbap_set_vcard_entry_name(&bdaddr, folder, vcf, vcf_name, thr_par->name)) {
- pbap_pce_pull_vcard_entry(&bdaddr, thr_par);
- }
- free(thr_par->name);
- free(thr_par);
- printf("uapi_pbap_cmd_pull_vcard_entry\n");
-}
-
-/* get phone vCard-Entry */
-static void sample_pbap_cmd_pull_vcard_entry(const char **params, int32_t params_cnt)
-{
- // if (params_cnt != 8) { /* 8个参数 */
- // printf("params cnt err: %d!\n", params_cnt);
- // return;
- // }
-
- // uint32_t sample_mode;
- // if (sscanf_s(params[0], "%x", &sample_mode) <= 0) {
- // printf("get sample_mode fail\n");
- // return;
- // }
- // bd_addr_t* bd_addr = NULL;
- // if (!sample_pbap_is_null_pointer((uint16_t)sample_mode, 0)) {
- // bd_addr = sample_pbap_parse_addr(params[1]);
- // }
-
- // if (pbap_pce_get_device_connect_state(bd_addr) != PROFILE_STATE_CONNECTED) {
- // printf("No PBAP connection selected!\n");
- // return;
- // }
-
- // pbap_pce_pull_vcard_entry_param_t *thr_par =
- // (pbap_pce_pull_vcard_entry_param_t*)(void *)bt_os_new(sizeof(pbap_pce_pull_vcard_entry_param_t));
- // if (thr_par == NULL) {
- // printf("pbap param malloc failed\n");
- // return;
- // }
- // (void)memset_s(thr_par, sizeof(pbap_pce_pull_vcard_entry_param_t), 0, sizeof(pbap_pce_pull_vcard_entry_param_t));
- // thr_par->name = (uint8_t*)(void *)bt_os_new(PBAP_APP_FOLDER_MAXLENGTH);
- // if (thr_par->name == NULL) {
- // printf("pbap param name malloc failed\n");
- // bt_os_free(thr_par);
- // return;
- // }
- // (void)memset_s(thr_par->name, PBAP_APP_FOLDER_MAXLENGTH, 0, PBAP_APP_FOLDER_MAXLENGTH);
- // thr_par->format = (unsigned char)atoi(params[5]); /* index = 5 */
- // uint32_t property = (uint32_t)atoi(params[6]); /* index = 6 */
- // sample_pbap_set_property(thr_par->property_selector, property);
- // int filter = atoi(params[7]); /* index = 7 */
- // if (filter != 0) {
- // sample_pbap_filter_composer(thr_par->property_selector, PBAP_PROPERTY_MASK_FILTER);
- // }
- // uint8_t folder = (uint8_t)atoi(params[2]); /* index = 2 */
- // uint8_t vcf = (uint8_t)atoi(params[3]); /* index = 3 */
- // const td_char* vcf_name = params[4]; /* index = 4 */
-
- // if (sample_pbap_set_vcard_entry_name(bd_addr, folder, vcf, vcf_name, thr_par->name)) {
- // pbap_pce_pull_vcard_entry(bd_addr, thr_par);
- // }
- // bt_os_free(thr_par->name);
- // bt_os_free(thr_par);
-}
-
-/* pbap abort operation */
- void uapi_pbap_cmd_stop_trans(void)
-{
-
- bd_addr_t bdaddr={0};
- OHOS::uapi_get_br_address(&bdaddr);
-
- if (pbap_pce_get_device_connect_state(&bdaddr) != PROFILE_STATE_CONNECTED) {
- printf("No PBAP connection selected!\n");
- return;
- }
- uint32_t result = (uint32_t)pbap_pce_stop_trans(&bdaddr);
- printf("[Line: %d] finish, ret: 0x%x\n", __LINE__, result);
-}
-
-/* pbap get connect status */
-void uapi_pbap_amd_get_conn_state(void)
-{
- bd_addr_t bdaddr={0};
- OHOS::uapi_get_br_address(&bdaddr);
-
- uint32_t result = (uint32_t)pbap_pce_get_device_connect_state(&bdaddr);
- printf("[Line: %d] finish, conn state: 0x%x\n", __LINE__, result);
-}
-
-/* PBAP service test cmd id */
-typedef enum {
- SAMPLE_PBAP_CMD_REG_CALLBACK, /* 注册回调 */
- SAMPLE_PBAP_CMD_START_CLIENT, /* 启动PBAP客户端 */
- SAMPLE_PBAP_CMD_STOP_CLIENT, /* 关闭PBAP客户端 */
- SAMPLE_PBAP_CMD_PULL_PHONEBOOK, /* 下载电话簿 */
- SAMPLE_PBAP_CMD_PULL_VCARD_LISTING, /* 下载vcard列表 */
- SAMPLE_PBAP_CMD_PULL_VCARD_ENTRY, /* 下载vcard条目 */
- SAMPLE_PBAP_CMD_STOP_TRANS, /* 中断传输 */
- SAMPLE_PBAP_CMD_GET_CONN_STATE, /* 获取连接状态 */
-} sample_pbap_cmd_id;
-
-typedef void (*pbap_sample_cmd_handle_func)(const char **params, int32_t params_cnt);
-
-typedef struct {
- sample_pbap_cmd_id id;
- pbap_sample_cmd_handle_func func;
-} sample_pbap_hdl_info;
-
-// sample_pbap_hdl_info g_sample_pbap_hdls[] = {
-// { SAMPLE_PBAP_CMD_REG_CALLBACK, sample_pbap_cmd_reg_callback },
-// { SAMPLE_PBAP_CMD_START_CLIENT, sample_pbap_cmd_start_client },
-// { SAMPLE_PBAP_CMD_STOP_CLIENT, sample_pbap_cmd_stop_client },
-// { SAMPLE_PBAP_CMD_PULL_PHONEBOOK, sample_pbap_cmd_pull_phonebook },
-// { SAMPLE_PBAP_CMD_PULL_VCARD_LISTING, sample_pbap_cmd_pull_vcard_listing },
-// { SAMPLE_PBAP_CMD_PULL_VCARD_ENTRY, sample_pbap_cmd_pull_vcard_entry },
-// { SAMPLE_PBAP_CMD_STOP_TRANS, sample_pbap_cmd_stop_trans },
-// { SAMPLE_PBAP_CMD_GET_CONN_STATE, sample_pbap_amd_get_conn_state },
-// };
-
-// void bt_pbap_service_sample_cmd(uint32_t cmd_id, const char **params, int32_t params_cnt)
-// {
-// printf("id: %u\n", cmd_id);
-// uint32_t hdl_cnt = sizeof(g_sample_pbap_hdls) / sizeof(sample_pbap_hdl_info);
-// for (uint32_t i = 0; i < hdl_cnt; i++) {
-// if (g_sample_pbap_hdls[i].id == cmd_id) {
-// g_sample_pbap_hdls[i].func(params, params_cnt);
-// return;
-// }
-// }
-// printf("invalid cmd_id = %d \n", cmd_id);
-// }
-
-#ifdef __cplusplus
-}
-#endif
-
\r
void MainBluetoothView::OnStart()\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnStart");\r
- \r
-\r
BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
if (bluetoothModel == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::InitView bluetoothModel nullptr err");\r
int16_t unusedValue = BLUETOOTHEVIEW_MAX;\r
bool ret = bluetoothCaseList.IsEmpty();\r
if (!ret) {\r
- ChangeView(unusedValue, BLUETOOTHDEVICELISTVIEW); //已连接设备列表不为空 ->切换到“已连接过的蓝牙设备列表视图”\r
+ ChangeView(unusedValue, BLUETOOTHDEVICELISTVIEW);\r
} else {\r
- ChangeView(unusedValue, BLUETOOTHEARPHONEVIEW);//若一个都没有连接过就进行搜索\r
+ ChangeView(unusedValue, BLUETOOTHEARPHONEVIEW);\r
}\r
- RootView::GetInstance()->Invalidate();\r
+ Draw();\r
return;\r
}\r
\r
-\r
-/*跳转到已连接过的蓝牙设备列表视图*/\r
bool MainBluetoothView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)\r
{\r
UNUSED(hideView);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");\r
return false;\r
}\r
- UIViewGroup *group = bluetoothDeviceListView->CreateBluetoothDeviceListView();\r
+ // init view\r
+ UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();\r
if (group == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
- } \r
- // else {\r
- // // 刷新列表\r
- // UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
- // if (deviceList == nullptr) {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");\r
- // return false;\r
- // }\r
- // deviceList->RefreshList();\r
- // }\r
- if(bluetoothDeviceListView) {\r
- bluetoothDeviceListView->RefreshBluetoothDeviceListView();\r
+ AddViewToRootContainer(container[thisView]);\r
+ } else {\r
+ // 刷新列表\r
+ UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
+ if (deviceList == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");\r
+ return false;\r
+ }\r
+ deviceList->RefreshList();\r
}\r
+ bluetoothDeviceListView->RefreshText();\r
return true;\r
}\r
\r
return false;\r
}\r
// init view\r
- UIViewGroup *group = tipsFailMessageView->CreateTipsFailMessageView();\r
+ UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();\r
if (group == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
+ AddViewToRootContainer(container[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
+ AddViewToRootContainer(container[thisView]);\r
}\r
if (bluetoothReconnectView == nullptr) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");\r
return true;\r
}\r
\r
-//连接成功界面\r
bool MainBluetoothView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)\r
{\r
UNUSED(hideView);\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
+ AddViewToRootContainer(container[thisView]);\r
}\r
return true;\r
}\r
\r
-//搜索界面\r
bool MainBluetoothView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)\r
{\r
UNUSED(hideView);\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
+ AddViewToRootContainer(container[thisView]);\r
}\r
// 动画开始\r
bluetoothEarPhoneView->BtAnimatorStart();\r
return true;\r
}\r
\r
-//扫描出来的设备列表界面\r
bool MainBluetoothView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)\r
{\r
if (container[thisView] == nullptr) {\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
- } \r
- // else {\r
- // // 刷新列表\r
- // UIList *scanList = bluetoothEarListView->GetScanUIList();\r
- // if (scanList == nullptr) {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");\r
- // return false;\r
- // }\r
- // scanList->RefreshList();\r
- // }\r
- // ResetEarListView(hideView);\r
- if(bluetoothEarListView) {\r
- bluetoothEarListView->RefreshBluetoothEarListView();\r
+ AddViewToRootContainer(container[thisView]);\r
+ } else {\r
+ // 刷新列表\r
+ UIList *scanList = bluetoothEarListView->GetScanUIList();\r
+ if (scanList == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");\r
+ return false;\r
+ }\r
+ scanList->RefreshList();\r
}\r
+ ResetEarListView(hideView);\r
return true;\r
}\r
\r
return false;\r
}\r
// init view\r
- UIViewGroup *group = bluetoothOptionsView->CreateBluetoothOptionsView();\r
+ UIViewGroup *group = bluetoothOptionsView->InitShowUpView();\r
if (group == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
+ AddViewToRootContainer(container[thisView]);\r
}\r
return true;\r
}\r
\r
-//重新连接界面\r
bool MainBluetoothView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)\r
{\r
UNUSED(hideView);\r
return false;\r
}\r
container[thisView] = group;\r
- RootView::GetInstance()->Add(container[thisView]);\r
+ AddViewToRootContainer(container[thisView]);\r
}\r
BluetoothModel::GetInstance()->SetTagDisconnectView(true);\r
bluetoothReconnectView->RefreshBluetoothNameLabel();\r
return true;\r
}\r
\r
-/*连接失败和蓝牙重连视图都跳转到已连接的蓝牙设备列表视图*/\r
void MainBluetoothView::CorrespondingJump(int16_t hideView)\r
{\r
BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");\r
return;\r
}\r
- ChangeView(hideView, BLUETOOTHDEVICELISTVIEW);/*查看已连接过的蓝牙耳机设备视图*/\r
-\r
- // if (bluetoothModel->GetTagReconnectJump()) {\r
- // ChangeView(hideView, BLUETOOTHEOPTIONSVIEW);/*查看已连接过的蓝牙耳机设备视图*/\r
- // } else {\r
- // std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();\r
- // bool ret = bluetoothScanList.empty();\r
- // if (!ret) {\r
- // ChangeView(hideView, BLUETOOTHEARLISTVIEW);/*扫描出的耳机列表界面*/\r
- // } else {\r
- // ChangeView(hideView, BLUETOOTHEARPHONEVIEW);/*搜索界面*/\r
- // }\r
- // }\r
+ if (bluetoothModel->GetTagReconnectJump()) {\r
+ ChangeView(hideView, BLUETOOTHEOPTIONSVIEW);\r
+ } else {\r
+ std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();\r
+ bool ret = bluetoothScanList.empty();\r
+ if (!ret) {\r
+ ChangeView(hideView, BLUETOOTHEARLISTVIEW);\r
+ } else {\r
+ ChangeView(hideView, BLUETOOTHEARPHONEVIEW);\r
+ }\r
+ }\r
return;\r
}\r
\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeSettingView");\r
BluetoothModel::GetInstance()->SetTagConnectView(false);\r
BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
- // NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- NativeAbility::GetInstance().Back();\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
}\r
\r
void MainBluetoothView::DropEarPhoneView()\r
bluetoothEarPhoneView->StopBtDiscovery();\r
bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
if (ret) {\r
- ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHDEVICELISTVIEW);//返回到已连接的设备列表界面\r
+ ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHDEVICELISTVIEW);\r
} else {\r
- ChangeSettingView(); //退出蓝牙耳机界面\r
+ ChangeSettingView();\r
}\r
}\r
\r
\r
void MainBluetoothView::DropView(UIView& view)\r
{\r
- if (&view == container[BLUETOOTHEARPHONEVIEW]) { \r
+ if (&view == container[BLUETOOTHEARPHONEVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARPHONEVIEW]");\r
- DropEarPhoneView();//搜索界面右滑退出操作\r
+ DropEarPhoneView();\r
} else if (&view == container[BLUETOOTHEOPTIONSVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEOPTIONSVIEW]");\r
- ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);//查看已连接过的蓝牙耳机设备视图->已连接过的蓝牙耳机设备视图\r
+ ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
} else if (&view == container[TIPSCONNFAILMESSAGEVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSCONNFAILMESSAGEVIEW]");\r
- ChangeView(TIPSCONNFAILMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);/*连接失败的提示视图 ->已连接过的蓝牙耳机设备视图*/\r
+ CorrespondingJump(TIPSCONNFAILMESSAGEVIEW);\r
} else if (&view == container[TIPSSUCCMESSAGEVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSSUCCMESSAGEVIEW]");\r
- ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);//连接成功的提示视图->已连接过的蓝牙设备列表视图\r
+ ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);\r
} else if (&view == container[TIPSFAILMESSAGEVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSFAILMESSAGEVIEW]");\r
- // ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);//未搜索到蓝牙耳机界面->搜索界面\r
- ChangeSettingView();//未搜索到蓝牙耳机界面->退出蓝牙耳机界面\r
+ ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);\r
} else if (&view == container[BLUETOOTHEARLISTVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARLISTVIEW]");\r
DropEarListView();\r
} else if (&view == container[BLUETOOTHDEVICELISTVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHDEVICELISTVIEW]");\r
- ChangeSettingView();//已连接过的蓝牙设备列表视图 -> 退出蓝牙耳机界面\r
+ ChangeSettingView();\r
} else if (&view == container[BLUETOOTHRECONNECTVIEW]) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHRECONNECTVIEW]");\r
- BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
CorrespondingJump(BLUETOOTHRECONNECTVIEW);\r
- bluetoothReconnectView->BtReconnectStop();/*停止动画*/\r
+ BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
+ bluetoothReconnectView->BtReconnectStop();\r
}\r
}\r
\r
} else if (hideView == TIPSCONNFAILMESSAGEVIEW) {\r
bluetoothEarListView->SetTitleLabel("扫描完成");\r
bluetoothEarListView->SetNewEquipmentButtonAdd();\r
- RootView::GetInstance()->Invalidate();\r
+ Draw();\r
}\r
}\r
\r
}\r
container[showView]->SetVisible(true);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView:: ChangeView end!!!%d", showView);\r
- RootView::GetInstance()->Invalidate();\r
+ Draw();\r
BluetoothModel::GetInstance()->SetCurView(showView);\r
}\r
}\r
#include "UiConfig.h"\r
#include "PlayersPresenter.h"\r
#include "BluetoothPresenter.h"\r
-#include "ui_resource_string.h"\r
-namespace OHOS\r
+\r
+namespace OHOS {\r
+static TipsConnFailMessageView *g_pConnFailMessageView{nullptr};\r
+TipsConnFailMessageView::TipsConnFailMessageView()\r
{\r
- static TipsConnFailMessageView *g_pConnFailMessageView{nullptr};\r
- TipsConnFailMessageView::TipsConnFailMessageView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::TipsConnFailMessageView");\r
- g_pConnFailMessageView = this;\r
- }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::TipsConnFailMessageView");\r
+ g_pConnFailMessageView = this;\r
+}\r
\r
- TipsConnFailMessageView::~TipsConnFailMessageView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::~TipsConnFailMessageView");\r
- if (group)\r
- {\r
- group->RemoveAll();\r
- if (titleLabel)\r
- {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (tipImg)\r
- {\r
- delete tipImg;\r
- tipImg = nullptr;\r
- }\r
- if (backButton)\r
- {\r
- delete backButton;\r
- backButton = nullptr;\r
- }\r
- if (tipLabel)\r
- {\r
- delete tipLabel;\r
- tipLabel = nullptr;\r
- }\r
- if (conn_fail_Label)\r
- {\r
- delete conn_fail_Label;\r
- conn_fail_Label = nullptr;\r
- }\r
- if (bluetoothNameLabel)\r
- {\r
- delete bluetoothNameLabel;\r
- bluetoothNameLabel = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- g_pConnFailMessageView = nullptr;\r
- }\r
+TipsConnFailMessageView::~TipsConnFailMessageView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::~TipsConnFailMessageView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete backButton;\r
+ backButton = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ delete tipImg;\r
+ tipImg = nullptr;\r
+ delete tipLabel;\r
+ tipLabel = nullptr;\r
+ delete tipTwoLabel;\r
+ tipTwoLabel = nullptr;\r
+ g_pConnFailMessageView = nullptr;\r
+}\r
\r
- TipsConnFailMessageView *TipsConnFailMessageView::GetInstance()\r
- {\r
- return g_pConnFailMessageView;\r
- }\r
+TipsConnFailMessageView *TipsConnFailMessageView::GetInstance()\r
+{\r
+ return g_pConnFailMessageView;\r
+}\r
\r
- void TipsConnFailMessageView::ShowUpTipLabel()\r
- {\r
-#if 0\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpTipLabel");\r
- if (tipLabel == nullptr)\r
- {\r
- tipLabel = new UILabel();\r
- if (tipLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipLabel new fail");\r
- return;\r
- }\r
- tipLabel->SetPosition(0, 247, HORIZONTAL_RESOLUTION, 35); // 0:x 247:y 454:width 35:height.\r
- tipLabel->SetText("请确认该设备在通信范");\r
- tipLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
- tipLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- tipLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(tipLabel);\r
+void TipsConnFailMessageView::ShowUpTipLabel()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpTipLabel");\r
+ if (tipLabel == nullptr) {\r
+ tipLabel = new UILabel();\r
+ if (tipLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipLabel new fail");\r
+ return;\r
}\r
- if (tipTwoLabel == nullptr)\r
- {\r
- tipTwoLabel = new UILabel();\r
- if (tipTwoLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipTwoLabel new fail");\r
- return;\r
- }\r
- tipTwoLabel->SetPosition(0, 300, HORIZONTAL_RESOLUTION, 34); // 0:x 300:y 454:width 34:height.\r
- tipTwoLabel->SetText("围内且处于待配对状态。");\r
- tipTwoLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
- tipTwoLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- tipTwoLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(tipTwoLabel);\r
+ tipLabel->SetPosition(0, 247, HORIZONTAL_RESOLUTION, 35); // 0:x 247:y 454:width 35:height.\r
+ tipLabel->SetText("请确认该设备在通信范");\r
+ tipLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
+ tipLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ tipLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(tipLabel);\r
+ }\r
+ if (tipTwoLabel == nullptr) {\r
+ tipTwoLabel = new UILabel();\r
+ if (tipTwoLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipTwoLabel new fail");\r
+ return;\r
}\r
-#endif\r
- return;\r
+ tipTwoLabel->SetPosition(0, 300, HORIZONTAL_RESOLUTION, 34); // 0:x 300:y 454:width 34:height.\r
+ tipTwoLabel->SetText("围内且处于待配对状态。");\r
+ tipTwoLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
+ tipTwoLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ tipTwoLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(tipTwoLabel);\r
}\r
+ return;\r
+}\r
\r
- UIViewGroup *TipsConnFailMessageView::ShowUpViewInit(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpViewInit");\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(tipsDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(tipsDragListener2);\r
- }\r
- group->SetViewId(TIPS_CONN_FAIL_MESSAGE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- /* -------------------------------------------------------------------------- */\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabelExt();\r
- if (titleLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView titleLabel new fail");\r
- return nullptr;\r
- }\r
- titleLabel->SetPosition(83, 50, 300, 35);\r
- titleLabel->SetTextId(STR_BLUETOOTH_HEADPHONES); // 蓝牙耳机\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- titleLabel->SetRollSpeed(23);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- }\r
- /* --------------------------------- tipImg --------------------------------- */\r
- if (tipImg == nullptr)\r
- {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipImg new fail");\r
- return nullptr;\r
- }\r
- tipImg->SetPosition(193, 121, 80, 80);\r
- tipImg->SetSrc(PNG_ATTENTION_IMAGE);\r
- }\r
- /* --------------------------- bluetoothNameLabel --------------------------- */\r
- if (bluetoothNameLabel == nullptr)\r
- {\r
- bluetoothNameLabel = new UILabelExt();\r
- if (bluetoothNameLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
- return nullptr;\r
- }\r
- bluetoothNameLabel->SetPosition(53, 235, 360, 35);\r
- bluetoothNameLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- bluetoothNameLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- bluetoothNameLabel->SetRollSpeed(23);\r
- bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 30);\r
- bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- }\r
- /* ----------------------------- conn_fail_Label ---------------------------- */\r
- if (conn_fail_Label == nullptr)\r
- {\r
- conn_fail_Label = new UILabelExt();\r
- if (conn_fail_Label == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView conn_fail_Label new fail");\r
- return nullptr;\r
- }\r
- conn_fail_Label->SetPosition(53, bluetoothNameLabel->GetY() + bluetoothNameLabel->GetHeight(), 360, 35);\r
- conn_fail_Label->SetTextId(STR_CONNECTION_FAIL);\r
- conn_fail_Label->SetStyle(STYLE_TEXT_FONT, 30);\r
- conn_fail_Label->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- conn_fail_Label->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- conn_fail_Label->SetRollSpeed(23);\r
- conn_fail_Label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- conn_fail_Label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- conn_fail_Label->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- }\r
- /* -------------------------------- tipLabel -------------------------------- */\r
- if (tipLabel == nullptr)\r
- {\r
- tipLabel = new UILabelExt();\r
- if (tipLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipLabel new fail");\r
- return nullptr;\r
- }\r
- tipLabel->SetPosition(53, conn_fail_Label->GetY() + conn_fail_Label->GetHeight(), 360, 35);\r
- tipLabel->SetTextId(STR_CONNECTION_FAIL);\r
- tipLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- tipLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- // tipLabel->SetText("请确认该设备在通信范围内且处于待配对状态");\r
- tipLabel->SetTextId(STR_BTEARPHONE_CONN_FAIL_TIP);\r
- tipLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- // tipLabel->SetRollSpeed(23);\r
- tipLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- tipLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- tipLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- }\r
- /* ------------------------------- backButton ------------------------------- */\r
- if (backButton == nullptr)\r
- {\r
- backButton = new UILabelButtonExt();\r
- if (backButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView backButton new fail");\r
- return nullptr;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return nullptr;\r
- }\r
- backButton->SetPosition(0, 366, 466, 100);\r
- backButton->SetTextId(STR_RETRY); // 重试\r
- backButton->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- backButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
- backButton->SetViewId(BLUETOOTH_CONN_FAIL_BACK_BUTTON);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- backButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- backButton->SetOnClickListener(clickListener2);\r
- }\r
- }\r
- group->Add(titleLabel);\r
- group->Add(tipImg);\r
- group->Add(bluetoothNameLabel);\r
- group->Add(conn_fail_Label);\r
- group->Add(tipLabel);\r
- group->Add(backButton);\r
+void TipsConnFailMessageView::InitNameLabel(void)\r
+{\r
+ if (bluetoothNameLabel == nullptr) {\r
+ bluetoothNameLabel = new UILabel();\r
+ if (bluetoothNameLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
+ return;\r
}\r
- return group;\r
+ bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ bluetoothNameLabel->SetPosition(60, 139, 333, 45); // 60:x 139:y 333:width 45:height\r
+ bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+ bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(bluetoothNameLabel);\r
}\r
+}\r
\r
- // 刷新设备名称\r
- void TipsConnFailMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
- {\r
- BluetoothCaseInfo caseInfo;\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
- bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
- if (!ret)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView FindNameFromList fail");\r
+void TipsConnFailMessageView::ShowUpButtonBack()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpButtonBack");\r
+ if (backButton == nullptr) {\r
+ backButton = new UILabelButton();\r
+ if (backButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView backButton new fail");\r
return;\r
}\r
- if (bluetoothNameLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
return;\r
}\r
- bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
+ backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height.\r
+ backButton->SetText("重试");\r
+ backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+ backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+ backButton->SetViewId(BLUETOOTH_CONN_FAIL_BACK_BUTTON);\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ backButton->SetTextColor(Color::Red());\r
+ backButton->SetOnClickListener(clickListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ backButton->SetTextColor(Color::Blue());\r
+ backButton->SetOnClickListener(clickListener2);\r
+ }\r
+ group->Add(backButton);\r
+ }\r
+ if (tipImg == nullptr) {\r
+ tipImg = new UIImageView();\r
+ if (tipImg == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipImg new fail");\r
+ return;\r
+ }\r
+ tipImg->SetPosition(178, 20, 90, 90); // 178:x 20:y 90:width 90:height.\r
+ tipImg->SetSrc(PNG_GANTAN);\r
+ group->Add(tipImg);\r
+ }\r
+ return;\r
+}\r
+\r
+UIViewGroup *TipsConnFailMessageView::ShowUpViewInit(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpViewInit");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+ return nullptr;\r
+ }\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ }\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView titleLabel new fail");\r
+ return nullptr;\r
+ }\r
+ titleLabel->SetPosition(0, 189, HORIZONTAL_RESOLUTION, 45); // 0:x 189:y 454:width 45:height.\r
+ titleLabel->SetText("连接失败");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(titleLabel);\r
+ }\r
+ ShowUpButtonBack();\r
+ ShowUpTipLabel();\r
+ InitNameLabel();\r
+ UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(tipsDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(tipsDragListener2);\r
+ }\r
+ group->SetViewId(TIPS_CONN_FAIL_MESSAGE_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
+\r
+void TipsConnFailMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
+{\r
+ BluetoothCaseInfo caseInfo;\r
+ (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
+ bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
+ if (!ret) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView FindNameFromList fail");\r
+ return;\r
+ }\r
+ if (bluetoothNameLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
+ return;\r
}\r
+ bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
+}\r
}
\ No newline at end of file
#include "BluetoothModel.h"\r
#include "wearable_log.h"\r
#include "UiConfig.h"\r
-#include "player/include/PlayersPresenter.h"\r
-#include "player/include/PlayersView.h"\r
-#include "bluetooth/include/BluetoothPresenter.h"\r
-#include "ui_resource_string.h"\r
-#include "ui_resource_image.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
\r
-namespace OHOS\r
+namespace OHOS {\r
+static TipsFailMessageView *g_pFailMessageView{nullptr};\r
+TipsFailMessageView::TipsFailMessageView()\r
{\r
- static TipsFailMessageView *g_pFailMessageView{nullptr};\r
- TipsFailMessageView::TipsFailMessageView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::TipsFailMessageView");\r
- g_pFailMessageView = this;\r
- }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::TipsFailMessageView");\r
+ g_pFailMessageView = this;\r
+}\r
\r
- TipsFailMessageView::~TipsFailMessageView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::~TipsFailMessageView");\r
- if (group != nullptr)\r
- {\r
- group->RemoveAll();\r
- if (titleLabel)\r
- {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (btIconImage)\r
- {\r
- delete btIconImage;\r
- btIconImage = nullptr;\r
- ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_BLUETOOTH_GRAY, PLAYER_IAMGES);\r
- }\r
- if (btHeadsetNotFoundLabel)\r
- {\r
- delete btHeadsetNotFoundLabel;\r
- btHeadsetNotFoundLabel = nullptr;\r
- }\r
- if (rescanButton)\r
- {\r
- delete rescanButton;\r
- rescanButton = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- g_pFailMessageView = nullptr;\r
- }\r
+TipsFailMessageView::~TipsFailMessageView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::~TipsFailMessageView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete backButton;\r
+ backButton = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ delete tipImg;\r
+ tipImg = nullptr;\r
+ g_pFailMessageView = nullptr;\r
+}\r
\r
- TipsFailMessageView *TipsFailMessageView::GetInstance()\r
- {\r
- return g_pFailMessageView;\r
- }\r
+TipsFailMessageView *TipsFailMessageView::GetInstance()\r
+{\r
+ return g_pFailMessageView;\r
+}\r
\r
- bool TipsFailMessageView::CreateTipsFailMessageLabelView(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::CreateTipsFailMessageLabelView");\r
- /* ------------------------------- titleLabel ------------------------------- */\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabelExt();\r
- if (titleLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
- return false;\r
- }\r
+int TipsFailMessageView::ShowUpButtonBack()\r
+{\r
+ if (backButton == nullptr) {\r
+ backButton = new UILabelButton();\r
+ if (backButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView backButton new fail");\r
+ return OHOS_FAILURE;\r
}\r
- titleLabel->SetPosition(83, 50, 300, 35);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- titleLabel->SetTextId(STR_BLUETOOTH_HEADPHONES); /*蓝牙耳机*/\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- /* ------------------------- btHeadsetNotFoundLabel ------------------------- */\r
- if (btHeadsetNotFoundLabel == nullptr)\r
- {\r
- btHeadsetNotFoundLabel = new UILabelExt();\r
- if (btHeadsetNotFoundLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
- return false;\r
- }\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+ return OHOS_FAILURE;\r
}\r
- btHeadsetNotFoundLabel->SetPosition(53, 305, 360, 30);\r
- btHeadsetNotFoundLabel->SetStyle(STYLE_TEXT_FONT, 26);\r
- btHeadsetNotFoundLabel->SetStyle(STYLE_LINE_HEIGHT, 30);\r
- btHeadsetNotFoundLabel->SetTextId(STR_BT_HEADSET_NOFOND); /*当前搜索不到耳机蓝牙设备*/\r
- btHeadsetNotFoundLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
- btHeadsetNotFoundLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- btHeadsetNotFoundLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- btHeadsetNotFoundLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
-\r
- return true;\r
- }\r
-\r
- bool TipsFailMessageView::CreateTipsFailMessageImageView(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::CreateTipsFailMessageImageView");\r
- if (btIconImage == nullptr)\r
- {\r
- btIconImage = new UIImageView();\r
- if (btIconImage == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return false;\r
- }\r
- btIconImage->SetPosition(163, 126, 140, 140);\r
- btIconImage->SetAutoEnable(false);\r
- btIconImage->SetResizeMode(UIImageView::CENTER);\r
- if (!PlayersView::LoadPlayerImage(btIconImage, PLAYER_BLUETOOTH_GRAY))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btIconImage LoadPlayerImage fail");\r
- return false;\r
- }\r
+ backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
+ backButton->SetText("重试");\r
+ backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+ backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+ backButton->SetViewId(BLUETOOTH_FAIL_BACK_BUTTON);\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ backButton->SetTextColor(Color::Red());\r
+ backButton->SetOnClickListener(clickListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ backButton->SetTextColor(Color::Blue());\r
+ backButton->SetOnClickListener(clickListener2);\r
}\r
- return true;\r
+ group->Add(backButton);\r
}\r
-\r
- bool TipsFailMessageView::CreateTipsFailMessageLabelButton()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::CreateTipsFailMessageLabelButton");\r
- if (rescanButton == nullptr)\r
- {\r
- rescanButton = new UILabelExt();\r
- if (rescanButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView rescanButton new fail");\r
- return false;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- rescanButton->SetPosition(73, 350, 320, 100);\r
- rescanButton->SetTextId(STR_BT_HEADSET_RESCAN); /*重新搜索*/\r
- rescanButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- rescanButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- rescanButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- rescanButton->SetViewId(BLUETOOTH_FAIL_BACK_BUTTON);\r
- rescanButton->SetTextColor(Color::GetColorFromRGBA(0x35, 0x49, 0xff, 0xff));\r
- // rescanButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- rescanButton->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- rescanButton->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- rescanButton->SetTouchable(true);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- rescanButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- rescanButton->SetOnClickListener(clickListener2);\r
- }\r
+ if (tipImg == nullptr) {\r
+ tipImg = new UIImageView();\r
+ if (tipImg == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView tipImg new fail");\r
+ return OHOS_FAILURE;\r
}\r
- return true;\r
+ tipImg->SetPosition(181, 111, 90, 90); // 181:x 111:y 90:width 90:height\r
+ tipImg->SetSrc(PNG_GANTAN);\r
+ group->Add(tipImg);\r
}\r
+ return OHOS_SUCCESS;\r
+}\r
\r
- UIViewGroup *TipsFailMessageView::CreateTipsFailMessageView(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::CreateTipsFailMessageView");\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0, 466, 466);\r
- }\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+UIViewGroup *TipsFailMessageView::ShowUpViewInit(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::ShowUpViewInit");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
return nullptr;\r
}\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(tipsDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(tipsDragListener2);\r
- }\r
- group->SetViewId(TIPS_FAIL_MESSAGE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- /* -------------------------------------------------------------------------- */\r
- if (!CreateTipsFailMessageLabelView() || !CreateTipsFailMessageImageView() || !CreateTipsFailMessageLabelButton())\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::CreateTipsFailMessageView fail!!");\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ }\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView titleLabel new fail");\r
return nullptr;\r
}\r
- /* ----------------------------------- Add ---------------------------------- */\r
+ titleLabel->SetPosition(0, 234, HORIZONTAL_RESOLUTION, 45); // 0:x 234:y 454:width 45:height\r
+ titleLabel->SetText("未发现蓝牙耳机");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
group->Add(titleLabel);\r
- group->Add(btIconImage);\r
- group->Add(btHeadsetNotFoundLabel);\r
- group->Add(rescanButton);\r
- /* -------------------------------------------------------------------------- */\r
- return group;\r
}\r
+ ShowUpButtonBack();\r
+ UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(tipsDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(tipsDragListener2);\r
+ }\r
+ group->SetViewId(TIPS_FAIL_MESSAGE_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
}
\ No newline at end of file
#include "UiConfig.h"\r
#include "PlayersPresenter.h"\r
#include "BluetoothPresenter.h"\r
-#include "ui_resource_string.h"\r
-namespace OHOS\r
+\r
+namespace OHOS {\r
+static TipsSuccMessageView *g_pSuccMessageView{nullptr};\r
+TipsSuccMessageView::TipsSuccMessageView()\r
{\r
- static TipsSuccMessageView *g_pSuccMessageView{nullptr};\r
- TipsSuccMessageView::TipsSuccMessageView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::TipsSuccMessageView");\r
- g_pSuccMessageView = this;\r
- }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::TipsSuccMessageView");\r
+ g_pSuccMessageView = this;\r
+}\r
\r
- TipsSuccMessageView::~TipsSuccMessageView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::~TipsSuccMessageView");\r
- if (group)\r
- {\r
- group->RemoveAll();\r
- if (titleLabel)\r
- {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (tipImg)\r
- {\r
- delete tipImg;\r
- tipImg = nullptr;\r
- }\r
- if (bluetoothNameLabel)\r
- {\r
- delete bluetoothNameLabel;\r
- bluetoothNameLabel = nullptr;\r
- }\r
- if (conn_succ_Label)\r
- {\r
- delete conn_succ_Label;\r
- conn_succ_Label = nullptr;\r
- }\r
- if (backButton)\r
- {\r
- delete backButton;\r
- backButton = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
- }\r
- g_pSuccMessageView = nullptr;\r
- }\r
+TipsSuccMessageView::~TipsSuccMessageView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::~TipsSuccMessageView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete backButton;\r
+ backButton = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ delete tipImg;\r
+ tipImg = nullptr;\r
+ g_pSuccMessageView = nullptr;\r
+}\r
\r
- TipsSuccMessageView *TipsSuccMessageView::GetInstance()\r
- {\r
- return g_pSuccMessageView;\r
- }\r
+TipsSuccMessageView *TipsSuccMessageView::GetInstance()\r
+{\r
+ return g_pSuccMessageView;\r
+}\r
\r
- UIViewGroup *TipsSuccMessageView::ShowUpViewInit(void)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::ShowUpViewInit");\r
- if (group == nullptr)\r
- {\r
- group = new UIViewGroup();\r
- if (group == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- group->SetOnDragListener(tipsDragListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- group->SetOnDragListener(tipsDragListener2);\r
- }\r
- group->SetViewId(TIPS_SUCC_MESSAGE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- /* ------------------------------- titleLabel ------------------------------- */\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabelExt();\r
- if (titleLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");\r
- return nullptr;\r
- }\r
- titleLabel->SetPosition(83, 50, 300, 35);\r
- titleLabel->SetTextId(STR_BLUETOOTH_HEADPHONES); // 蓝牙耳机\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- titleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- titleLabel->SetRollSpeed(23);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- }\r
- /* --------------------------------- tipImg --------------------------------- */\r
- if (tipImg == nullptr)\r
- {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipImg new fail");\r
- return nullptr;\r
- }\r
- tipImg->SetPosition(193, 121, 80, 80);\r
- tipImg->SetSrc("/user/res/OK.bin");\r
- }\r
- /* --------------------------- bluetoothNameLabel --------------------------- */\r
- if (bluetoothNameLabel == nullptr)\r
- {\r
- bluetoothNameLabel = new UILabelExt();\r
- if (bluetoothNameLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
- return nullptr;\r
- }\r
- bluetoothNameLabel->SetPosition(53, 235, 360, 35);\r
- bluetoothNameLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- bluetoothNameLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- bluetoothNameLabel->SetRollSpeed(23);\r
- bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 30);\r
- bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- }\r
- /* ----------------------------- conn_succ_Label ---------------------------- */\r
- if (conn_succ_Label == nullptr)\r
- {\r
- conn_succ_Label = new UILabelExt();\r
- if (conn_succ_Label == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView conn_succ_Label new fail");\r
- return nullptr;\r
- }\r
- conn_succ_Label->SetPosition(53, bluetoothNameLabel->GetY() + bluetoothNameLabel->GetHeight(), 360, 35);\r
- // conn_succ_Label->SetText("连接成功");\r
- conn_succ_Label->SetTextId(STR_CONNECTION_SUCC);\r
- conn_succ_Label->SetStyle(STYLE_TEXT_FONT, 30);\r
- conn_succ_Label->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- conn_succ_Label->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
- conn_succ_Label->SetRollSpeed(23);\r
- conn_succ_Label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- conn_succ_Label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- conn_succ_Label->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));\r
- }\r
- /* ------------------------------- backButton ------------------------------- */\r
- if (backButton == nullptr)\r
- {\r
- backButton = new UILabelButtonExt();\r
- if (backButton == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView backButton new fail");\r
- return nullptr;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return nullptr;\r
- }\r
- backButton->SetPosition(0, 366, 466, 100);\r
- backButton->SetTextId(STR_OK); // 确定\r
- backButton->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- backButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
- backButton->SetViewId(BLUETOOTH_SUCC_BACK_BUTTON);\r
- backButton->SetTextColor(Color::GetColorFromRGBA(0x35, 0x49, 0xff, 0xff));\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS)\r
- {\r
- backButton->SetOnClickListener(clickListener);\r
- }\r
- else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING)\r
- {\r
- backButton->SetOnClickListener(clickListener2);\r
- }\r
- }\r
- group->Add(titleLabel);\r
- group->Add(tipImg);\r
- group->Add(bluetoothNameLabel);\r
- group->Add(conn_succ_Label);\r
- group->Add(backButton);\r
+void TipsSuccMessageView::InitNameLabel(void)\r
+{\r
+ if (bluetoothNameLabel == nullptr) {\r
+ bluetoothNameLabel = new UILabel();\r
+ if (bluetoothNameLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
+ return;\r
}\r
- return group;\r
+ bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ bluetoothNameLabel->SetPosition(60, 180, 333, 45); // 60:x 180:y 333:width 45:height\r
+ bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+ bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(bluetoothNameLabel);\r
}\r
+}\r
\r
- // 刷新设备名称\r
- void TipsSuccMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
- {\r
- BluetoothCaseInfo caseInfo;\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
- bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
- if (!ret)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView FindNameFromList fail");\r
+void TipsSuccMessageView::ShowUpButtonBack()\r
+{\r
+ if (backButton == nullptr) {\r
+ backButton = new UILabelButton();\r
+ if (backButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView backButton new fail");\r
return;\r
}\r
- if (bluetoothNameLabel == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+ return;\r
+ }\r
+ backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
+ backButton->SetText("确定");\r
+ backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+ backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+ backButton->SetViewId(BLUETOOTH_SUCC_BACK_BUTTON);\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ backButton->SetTextColor(Color::Red());\r
+ backButton->SetOnClickListener(clickListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ backButton->SetTextColor(Color::Blue());\r
+ backButton->SetOnClickListener(clickListener2);\r
+ }\r
+ group->Add(backButton);\r
+ }\r
+ if (tipImg == nullptr) {\r
+ tipImg = new UIImageView();\r
+ if (tipImg == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipImg new fail");\r
return;\r
}\r
- bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
+ tipImg->SetPosition(181, 78, 90, 90); // 181:x 78:y 90:width 90:height\r
+ tipImg->SetSrc(PNG_RIGHT);\r
+ group->Add(tipImg);\r
+ }\r
+ return;\r
+}\r
+\r
+UIViewGroup *TipsSuccMessageView::ShowUpViewInit(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::ShowUpViewInit");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+ return nullptr;\r
+ }\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ }\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView titleLabel new fail");\r
+ return nullptr;\r
+ }\r
+ titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
+ titleLabel->SetText("连接成功");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ group->Add(titleLabel);\r
+ }\r
+ InitNameLabel();\r
+ ShowUpButtonBack();\r
+ UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+ if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+ group->SetOnDragListener(tipsDragListener);\r
+ } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+ group->SetOnDragListener(tipsDragListener2);\r
+ }\r
+ group->SetViewId(TIPS_SUCC_MESSAGE_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
+\r
+void TipsSuccMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
+{\r
+ BluetoothCaseInfo caseInfo;\r
+ (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
+ bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
+ if (!ret) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView FindNameFromList fail");\r
+ return;\r
+ }\r
+ if (bluetoothNameLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
+ return;\r
}\r
+ bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
+}\r
}
\ No newline at end of file