增加语音播报

最后更新: 2019/9/26

巡逻员模板在默认情况下不提供语音播报功能,本节内容主要讲解如何在巡逻员模板中加入语音播报的功能,实现机器人边移动边播放语音的效果。

首先,按照目录app/template/cruise/CruiseViewModel.ts打开CruiseViewModel.ts

6.1 加入控制语音定时播放的变量Timer。

export class CruiseViewModel extends BaseViewModel {

   private playTextTime: any;
   private preNavigation: PreNavigation;
   private linePoseSelector: LinePoseSelector;
   private recover: boolean = false;

6.2 在开始巡逻时,开始播放语音内容,并注释掉原来的播放逻辑

public onGetRouterFinish = (event?: ComponentEvent): boolean => {
       if (event && event.status) {
           switch (event.status) {
               case ComponentResultConst.RESULT_SUCCESS: {
                   event.status = FinishResult.RESULT_GETROUTER_SUCCESS;
                   cruiseStore.setComponentEvent(event);
                   try {
                       if (event.data) {
                           let jdata = JSON.parse(event.data);
                           this.linePoseSelector.setLine(
                               JSON.parse(jdata.coordinate)
                           );
                           cruiseStore.setHeadReset(true);
                           this._startCruise();
                           this.playText();
                           // if (this.bPlayAd) {
                           //     this.playAD(event.data);
                           // }

6.3 在巡逻结束时,停止并清除计时器

public onStop = (): void => {
       this.stopCruise();
       this.warningTimeout && clearTimeout(this.warningTimeout);
       this.playADTime && clearInterval(this.playADTime);
       this.playTextTime && clearInterval(this.playTextTime);
       this.emojiPlayerStore.setShow(false);
       this.emojiPlayerStore.setContentView(null);
       cruiseStore.reset();
       this.emojiPlayerListener && this.emojiPlayerListener.remove();
       this.delayWakeUpTimeout && clearTimeout(this.delayWakeUpTimeout);
   };

6.4 增加实现播放的具体逻辑

public playText = (): void => {
       try {
           this.playTextTime && clearInterval(this.playTextTime);
           this.playTextTime = setInterval((): void => {
               if (this.cruise) {
                   console.log("playText",'欢迎来到猎户星空')
                   speechApi.playText(-1, '欢迎来到猎户星空');                    }
               }, 3000);
       } catch (e) {
           console.log('CruiseScreen', e);
       }
   };

现在机器人在巡逻过程中的语音播报已经设置完成。