fix: voice interupt
This commit is contained in:
@ -214,6 +214,9 @@ public:
|
||||
case kDeviceStateSpeaking:
|
||||
ctrl_->SetStatusColor(64, 0, 0); // red
|
||||
break;
|
||||
case kDeviceStateThinking:
|
||||
ctrl_->SetStatusColor(0, 0, 64); // blue
|
||||
break;
|
||||
default:
|
||||
ctrl_->SetStatusColor(0, 0, 64); // blue
|
||||
break;
|
||||
|
||||
@ -203,7 +203,10 @@ void WifiBoard::EnterWifiConfigMode() {
|
||||
auto& app = Application::GetInstance();
|
||||
auto state = app.GetDeviceState();
|
||||
|
||||
if (state == kDeviceStateSpeaking || state == kDeviceStateListening || state == kDeviceStateIdle) {
|
||||
if (state == kDeviceStateSpeaking ||
|
||||
state == kDeviceStateThinking ||
|
||||
state == kDeviceStateListening ||
|
||||
state == kDeviceStateIdle) {
|
||||
// Reset protocol (close audio channel, reset protocol)
|
||||
Application::GetInstance().ResetProtocol();
|
||||
|
||||
|
||||
@ -85,6 +85,13 @@ void ElectronEmojiDisplay::SetStatus(const char* status) {
|
||||
lv_obj_add_flag(network_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(battery_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
return;
|
||||
} else if (strcmp(status, Lang::Strings::THINKING) == 0) {
|
||||
lv_obj_set_style_text_font(status_label_, text_font, 0);
|
||||
lv_label_set_text(status_label_, status);
|
||||
lv_obj_clear_flag(status_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(network_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(battery_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
return;
|
||||
} else if (strcmp(status, Lang::Strings::CONNECTING) == 0) {
|
||||
lv_obj_set_style_text_font(status_label_, &OTTO_ICON_FONT, 0);
|
||||
lv_label_set_text(status_label_, "\xEF\x83\x81"); // U+F0c1 连接图标
|
||||
@ -102,4 +109,4 @@ void ElectronEmojiDisplay::SetStatus(const char* status) {
|
||||
lv_obj_clear_flag(status_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_clear_flag(network_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_clear_flag(battery_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,6 +155,8 @@ void EmojiWidget::SetStatus(const char* status)
|
||||
if (player_) {
|
||||
if (strcmp(status, Lang::Strings::LISTENING) == 0) {
|
||||
player_->StartPlayer("asking", true, 15);
|
||||
} else if (strcmp(status, Lang::Strings::THINKING) == 0) {
|
||||
player_->StartPlayer("thinking", true, 15);
|
||||
} else if (strcmp(status, Lang::Strings::STANDBY) == 0) {
|
||||
player_->StartPlayer("wake", true, 15);
|
||||
}
|
||||
|
||||
@ -231,9 +231,9 @@ private:
|
||||
// 如果当前是聆听状态,切换到待命状态
|
||||
ESP_LOGI(TAG, "从聆听状态切换到待命状态");
|
||||
app.ToggleChatState(); // 切换到待命状态
|
||||
} else if (current_state == kDeviceStateSpeaking) {
|
||||
// 如果当前是说话状态,终止说话并切换到待命状态
|
||||
ESP_LOGI(TAG, "从说话状态切换到待命状态");
|
||||
} else if (current_state == kDeviceStateSpeaking || current_state == kDeviceStateThinking) {
|
||||
// 如果当前是说话或思考状态,终止并切换到待命状态
|
||||
ESP_LOGI(TAG, "从说话/思考状态切换到待命状态");
|
||||
app.ToggleChatState(); // 终止说话
|
||||
} else {
|
||||
// 其他状态下只唤醒设备
|
||||
|
||||
@ -77,6 +77,13 @@ void OttoEmojiDisplay::SetStatus(const char* status) {
|
||||
lv_obj_add_flag(network_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(battery_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
return;
|
||||
} else if (strcmp(status, Lang::Strings::THINKING) == 0) {
|
||||
lv_obj_set_style_text_font(status_label_, text_font, 0);
|
||||
lv_label_set_text(status_label_, status);
|
||||
lv_obj_clear_flag(status_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(network_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(battery_label_, LV_OBJ_FLAG_HIDDEN);
|
||||
return;
|
||||
} else if (strcmp(status, Lang::Strings::CONNECTING) == 0) {
|
||||
lv_obj_set_style_text_font(status_label_, &OTTO_ICON_FONT, 0);
|
||||
lv_label_set_text(status_label_, "\xEF\x83\x81"); // U+F0c1 连接图标
|
||||
@ -131,4 +138,4 @@ void OttoEmojiDisplay::SetPreviewImage(std::unique_ptr<LvglImage> image) {
|
||||
lv_obj_remove_flag(preview_image_, LV_OBJ_FLAG_HIDDEN);
|
||||
esp_timer_stop(preview_timer_);
|
||||
ESP_ERROR_CHECK(esp_timer_start_once(preview_timer_, PREVIEW_IMAGE_DURATION_MS * 1000));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user