WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_bt_report_earphone_connection_status: a2dpState=%d, isEarphoneConnected=%d",
a2dpState, isEarphoneConnected);
+ // 检查当前是否在蓝牙界面,如果在则设置标志
+ OHOS::ThunderBirdMainView *mainView = OHOS::ThunderBirdMainView::GetInstance();
+ bool isInBlueView = false;
+ if (mainView != nullptr) {
+ int currentView = mainView->GetCurrentView();
+ isInBlueView = (currentView == 7);
+ }
+
if (isEarphoneConnected)
{
// 蓝牙已连接,上报蓝牙状态
char *bluetoothStatus = "CONNECTED";
do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));
+
+ // 如果当前在蓝牙界面,设置标志表示已上报
+ if (isInBlueView && mainView != nullptr) {
+ mainView->m_btStatusReportedInBlueView_ = true;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_bt_report_earphone_connection_status: 在蓝牙界面内上报状态,设置标志");
+ }
}
else
{
// 蓝牙已断开,上报蓝牙状态
char *bluetoothStatus = "DISCONNECTED";
do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));
+
+ // 如果当前在蓝牙界面,设置标志表示已上报
+ if (isInBlueView && mainView != nullptr) {
+ mainView->m_btStatusReportedInBlueView_ = true;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_bt_report_earphone_connection_status: 在蓝牙界面内上报状态,设置标志");
+ }
}
return 0;
// 如果屏保模式未开启,才调用InvalidateGroup1(false)隐藏iconView
// 如果屏保模式已开启,不应该隐藏iconView,否则会关闭屏保模式
InvalidateGroup1(false);
- ln_bt_report_earphone_connection_status();
+
+ // 如果蓝牙界面已经上报过状态,则退出时不再上报
+ if (m_btStatusReportedInBlueView_) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::ChangeView: 蓝牙界面已上报过状态,退出时不再上报");
+ m_btStatusReportedInBlueView_ = false; // 清除标志
+ } else {
+ ln_bt_report_earphone_connection_status();
+ }
}
if(showView == THUNDERBIRD_BLUEVIEW )
{
+ // 进入蓝牙界面时,清除上报标志
+ m_btStatusReportedInBlueView_ = false;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::ChangeView: 进入蓝牙界面,清除上报标志");
if(hideView == THUNDERBIRD_LULLABYVIEW)
{