作者 王振宇

修复循环播放的文本切换实时喊话文本播放不立刻停止的问题

@@ -124,7 +124,7 @@ int JZ_TtsPlayFeature(int len,char* data) @@ -124,7 +124,7 @@ int JZ_TtsPlayFeature(int len,char* data)
124 { 124 {
125 usleep(100*1000); 125 usleep(100*1000);
126 } 126 }
127 - usleep(600*1000); 127 + usleep(700*1000);
128 if(GetSpeakerMode() == 2) 128 if(GetSpeakerMode() == 2)
129 { 129 {
130 TTS(tts_tone,100,tts_speed,len,data); 130 TTS(tts_tone,100,tts_speed,len,data);
@@ -249,8 +249,10 @@ static T_UAVReturnCode StartPlay(void) @@ -249,8 +249,10 @@ static T_UAVReturnCode StartPlay(void)
249 } 249 }
250 else 250 else
251 { 251 {
252 - SetSpeakerMode(1);//实时喊话 252 + stop_music();
  253 + Opus_RealTimeSpeak_AbnormalInterrupt();
253 Init_opus(); 254 Init_opus();
  255 + SetSpeakerMode(1);//实时喊话
254 SetSpeakerState(UAV_WIDGET_SPEAKER_STATE_PLAYING); 256 SetSpeakerState(UAV_WIDGET_SPEAKER_STATE_PLAYING);
255 break; 257 break;
256 } 258 }
@@ -429,6 +431,7 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl) @@ -429,6 +431,7 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
429 case 8://音频暂停 431 case 8://音频暂停
430 break; 432 break;
431 case 9://音频停止 433 case 9://音频停止
  434 + LOG_INFO("音频停止");
432 WidgetPlayFlag = 0;//用于退出录音喊话 435 WidgetPlayFlag = 0;//用于退出录音喊话
433 stop_music(); 436 stop_music();
434 set_paly_state(0); 437 set_paly_state(0);
@@ -447,6 +450,7 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl) @@ -447,6 +450,7 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
447 case 14://播放音频 450 case 14://播放音频
448 if(readyflag == 1)//喊话器准备就绪 451 if(readyflag == 1)//喊话器准备就绪
449 { 452 {
  453 + LOG_INFO("播放录音");
450 SetSpeakerMode(3); 454 SetSpeakerMode(3);
451 JZ_loop_playback_create();//录音喊话线程 455 JZ_loop_playback_create();//录音喊话线程
452 } 456 }
@@ -459,8 +463,10 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl) @@ -459,8 +463,10 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
459 break; 463 break;
460 case 17://文本传输 464 case 17://文本传输
461 SetSpeakerMode(2); 465 SetSpeakerMode(2);
  466 + set_paly_state(2);
462 break; 467 break;
463 case 18://文本传输结束 468 case 18://文本传输结束
  469 + LOG_INFO("播放文本");
464 JZ_TtsPlayFeature(text_len,(char *)text_buf);//播放文本 470 JZ_TtsPlayFeature(text_len,(char *)text_buf);//播放文本
465 break; 471 break;
466 472
@@ -611,17 +611,20 @@ void *TTS_first(void *arg) @@ -611,17 +611,20 @@ void *TTS_first(void *arg)
611 //TTS合成线程 611 //TTS合成线程
612 void *TTS_flie(void *arg) 612 void *TTS_flie(void *arg)
613 { 613 {
614 -  
615 SetTtsStatus(1); 614 SetTtsStatus(1);
616 set_amplifier(1); 615 set_amplifier(1);
617 616
618 play_tts(tts_tone,tts_volume,tts_speed,ttsdata);//生成文件 617 play_tts(tts_tone,tts_volume,tts_speed,ttsdata);//生成文件
619 618
620 set_amplifier(0); 619 set_amplifier(0);
621 - SetTtsStatus(0);  
622 set_volume(now_volume);//恢复音量 620 set_volume(now_volume);//恢复音量
623 delay(500); 621 delay(500);
  622 + if(play_mode == 1)
  623 + {
  624 + delay(1000);
  625 + }
624 626
  627 + SetTtsStatus(0);
625 } 628 }
626 629
627 //TTS_mobie合成线程 630 //TTS_mobie合成线程