Exemple #1
0
        public async Task <List <TimerInfo> > GetTimersAsync()
        {
            List <TimerInfo> timers = new List <TimerInfo>();

            GetTimersResponse response = await client.GetAsync(new GetTimersRequest());

            if (response.timers != null)
            {
                foreach (VdrTimer timer in response.timers)
                {
                    RecordingStatus status = RecordingStatus.New;

                    if (timer.is_recording)
                    {
                        status = RecordingStatus.InProgress;
                    }

                    timers.Add(new TimerInfo()
                    {
                        Id        = timer.id,
                        ChannelId = timer.channel,
                        StartDate = DateTime.Parse(timer.start_timestamp).ToUniversalTime(),
                        EndDate   = DateTime.Parse(timer.stop_timestamp).ToUniversalTime(),
                        Name      = timer.filename,
                        Priority  = timer.priority,
                        ProgramId = timer.event_id.ToString(),
                        Status    = status
                    });
                }
            }

            return(timers);
        }
        public override bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
        {
            var tvProgram = (IProgramRecordingStatus)TvDatabase.Program.Retrieve(program.ProgramId).ToProgram(true);

            recordingStatus = tvProgram.RecordingStatus;
            return(true);
        }
Exemple #3
0
        public async void CompletedStop(IAsyncAction asyncInfo, AsyncStatus asyncStatus)
        {
            if (asyncStatus == AsyncStatus.Completed)
            {
                if (_recordingStatus == RecordingStatus.recording)
                {
                    _recordingStatus = RecordingStatus.sucessful;

                    var file = await ApplicationData.Current.LocalFolder.GetFileAsync("recording.mp4");

                    var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);

                    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        mediaElement.SetSource(stream, "");
                        mediaElement.Play();
                    });

                    _recordingStatus = RecordingStatus.stopped;
                }

                if (_recordingStatus == RecordingStatus.failed)
                {
                    // Recording has failed somewhere. Set the recording status to stopped.
                    _recordingStatus = RecordingStatus.stopped;
                }
            }
        }
Exemple #4
0
 public void CompletedStart(IAsyncAction asyncInfo, AsyncStatus asyncStatus)
 {
     if (asyncStatus == AsyncStatus.Completed)
     {
         _recordingStatus = RecordingStatus.recording;
     }
 }
Exemple #5
0
        private UPnPError OnGetRecordingStatus(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfoAsync     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync;
            IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int programId = (int)inParams[0];

            bool            result = false;
            IProgram        program;
            RecordingStatus recordingStatus = RecordingStatus.None;

            if (programInfo.GetProgram(programId, out program))
            {
                var scheduleResult = scheduleControl.GetRecordingStatusAsync(program).Result;
                if (scheduleResult.Success)
                {
                    result          = true;
                    recordingStatus = scheduleResult.Result;
                }
            }

            outParams = new List <object> {
                result, recordingStatus.ToString()
            };
            return(null);
        }
        public RecordingPageViewModel(
            IAudioService audioService,
            IOptionsService optionsService,
            ICommandLineService commandLineService,
            IRecordingDestinationService destinationService)
        {
            Messenger.Default.Register <BeforeShutDownMessage>(this, OnShutDown);

            _commandLineService = commandLineService;
            _stopwatch          = new Stopwatch();

            _audioService = audioService;
            _audioService.StartedEvent           += AudioStartedHandler;
            _audioService.StoppedEvent           += AudioStoppedHandler;
            _audioService.StopRequested          += AudioStopRequestedHandler;
            _audioService.RecordingProgressEvent += AudioProgressHandler;

            _optionsService     = optionsService;
            _destinationService = destinationService;
            _recordingStatus    = RecordingStatus.NotRecording;

            _statusStr = Properties.Resources.NOT_RECORDING;

            // bind commands...
            StartRecordingCommand   = new RelayCommand(StartRecording, CanExecuteStart);
            StopRecordingCommand    = new RelayCommand(StopRecording, CanExecuteStop);
            NavigateSettingsCommand = new RelayCommand(NavigateSettings, CanExecuteNavigateSettings);
            ShowRecordingsCommand   = new RelayCommand(ShowRecordings);
        }
        public bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
        {
            recordingStatus = RecordingStatus.None;

            Program indexProgram = program as Program;

            if (indexProgram == null)
            {
                return(false);
            }

            if (!CheckConnection(indexProgram.ServerIndex))
            {
                return(false);
            }

            try
            {
                WebProgramDetailed programDetailed = TvServer(indexProgram.ServerIndex).GetProgramDetailedById(program.ProgramId);
                recordingStatus = Program.GetRecordingStatus(programDetailed);
            }
            catch
            {
                return(false);
            }
            return(true);
        }
        protected override void OnRecordingStatusChanged(IProgram program, RecordingStatus oldStatus, RecordingStatus newStatus, ScheduleRecordingType type)
        {
            base.OnRecordingStatusChanged(program, oldStatus, newStatus, type);
            if (type == ScheduleRecordingType.Once)
            {
                return; // Change only affected one program
            }
            // Look for all other programs that might be affected
            List <IProgram> candidates = new List <IProgram>();

            foreach (IProgram p in _groupPrograms)
            {
                if (p.ChannelId == program.ChannelId && p.StartTime == program.StartTime && p.EndTime == program.EndTime)
                {
                    candidates.Add(p);
                }
                else if (p.Title == program.Title)
                {
                    candidates.Add(p);
                }
            }
            if (candidates.Count > 0)
            {
                UpdateRecordingStatus(candidates).Start();
            }
        }
        public Task StartRecording(string file, int?maxSeconds = null)
        {
            return(RunIfAnswered(
                       async() =>
            {
                if (file == recordingPath)
                {
                    return;
                }

                if (recordingPath != null)
                {
                    Log.Warn(
                        () =>
                        "Channel {0} received a request to record to file {1} while currently recording to file {2}. Channel will stop recording and start recording to the new file."
                        .Fmt(UUID, file, recordingPath));
                    await StopRecording().ConfigureAwait(false);
                }

                recordingPath = file;
                await eventSocket.SendApi("uuid_record {0} start {1} {2}".Fmt(UUID, recordingPath, maxSeconds)).ConfigureAwait(false);
                Log.Debug(() => "Channel {0} is recording to {1}".Fmt(UUID, recordingPath));
                recordingStatus = RecordingStatus.Recording;
            }));
        }
Exemple #10
0
        public bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
        {
            IProgramService         programService = GlobalServiceProvider.Get <IProgramService>();
            IProgramRecordingStatus recProgram     = (IProgramRecordingStatus)programService.GetProgram(program.ProgramId).ToProgram(true);

            recordingStatus = recProgram.RecordingStatus;
            return(true);
        }
Exemple #11
0
        public void StopRecording(bool fadeOut)
        {
            _status = RecordingStatus.StopRequested;
            OnStopRequested();

            _timer.Stop();
            OnStoppedEvent();
        }
Exemple #12
0
 protected override bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
 {
     if (ProgramComparer.Instance.Equals(_selectedProgram, program))
     {
         IsSingleRecordingScheduled = newStatus.HasFlag(RecordingStatus.Scheduled);
         IsSeriesRecordingScheduled = newStatus.HasFlag(RecordingStatus.SeriesScheduled);
     }
     return(base.UpdateRecordingStatus(program, newStatus));
 }
Exemple #13
0
 public void StartRecording(RecordingCandidate candidateFile, IOptionsService optionsService)
 {
     if (_status == RecordingStatus.NotRecording)
     {
         _status = RecordingStatus.Recording;
         OnStartedEvent();
         _timer.Start();
     }
 }
Exemple #14
0
        public MockAudioService()
        {
            _status = RecordingStatus.NotRecording;
            _random = new Random();

            _timer = new DispatcherTimer {
                Interval = TimeSpan.FromMilliseconds(20)
            };
            _timer.Tick += RecordingTimer;
        }
 /// <summary>
 /// Gets the request builder for CallUpdateRecordingStatus.
 /// </summary>
 /// <returns>The <see cref="ICallUpdateRecordingStatusRequestBuilder"/>.</returns>
 public ICallUpdateRecordingStatusRequestBuilder UpdateRecordingStatus(
     RecordingStatus status,
     string clientContext = null)
 {
     return(new CallUpdateRecordingStatusRequestBuilder(
                this.AppendSegmentToRequestUrl("microsoft.graph.updateRecordingStatus"),
                this.Client,
                status,
                clientContext));
 }
Exemple #16
0
 /// <summary>
 /// Constructs a new <see cref="CallUpdateRecordingStatusRequestBuilder"/>.
 /// </summary>
 /// <param name="requestUrl">The URL for the request.</param>
 /// <param name="client">The <see cref="IBaseClient"/> for handling requests.</param>
 /// <param name="status">A status parameter for the OData method call.</param>
 /// <param name="clientContext">A clientContext parameter for the OData method call.</param>
 public CallUpdateRecordingStatusRequestBuilder(
     string requestUrl,
     IBaseClient client,
     RecordingStatus status,
     string clientContext)
     : base(requestUrl, client)
 {
     this.SetParameter("status", status, false);
     this.SetParameter("clientContext", clientContext, true);
 }
Exemple #17
0
        public static RecordingStatus GetRecordingStatus(WebProgramBasic programDetailed)
        {
            RecordingStatus recordingStatus = RecordingStatus.None;

            if (programDetailed.IsScheduled)
            {
                recordingStatus |= RecordingStatus.Scheduled;
            }
            return(recordingStatus);
        }
Exemple #18
0
        public bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
        {
#if TVE3
            var tvProgram = (IProgramRecordingStatus)TvDatabase.Program.Retrieve(program.ProgramId).ToProgram(true);
            recordingStatus = tvProgram.RecordingStatus;
#else
            IProgramService         programService = GlobalServiceProvider.Instance.Get <IProgramService>();
            IProgramRecordingStatus recProgram     = (IProgramRecordingStatus)programService.GetProgram(program.ProgramId).ToProgram(true);
            recordingStatus = recProgram.RecordingStatus;
#endif
            return(true);
        }
Exemple #19
0
        protected virtual bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
        {
            IProgramRecordingStatus status = program as IProgramRecordingStatus;

            if (status == null)
            {
                return(false);
            }

            status.RecordingStatus = newStatus;
            return(true);
        }
        protected virtual bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
        {
            IProgramRecordingStatus status = program as IProgramRecordingStatus;

            if (status == null)
            {
                return(false);
            }

            status.RecordingStatus = newStatus;
            SlimTvClientMessaging.SendSlimTvProgramChangedMessage(program);
            return(true);
        }
        protected virtual bool UpdateRecordingStatus(IProgram program, RecordingStatus status, ScheduleRecordingType type)
        {
            IProgramRecordingStatus recordingStatus = program as IProgramRecordingStatus;

            if (recordingStatus == null || recordingStatus.RecordingStatus == status)
            {
                return(false);
            }
            RecordingStatus oldStatus = recordingStatus.RecordingStatus;

            recordingStatus.RecordingStatus = (RecordingStatus)status;
            OnRecordingStatusChanged(program, oldStatus, status, type);
            return(true);
        }
Exemple #22
0
 //auxiliary function that performs the actual recording.
 private void recordWrapper(string filepath)
 {
     //get an int array of virtual keys for the macro
     int[] macroArr = macroKeys.ToArray <int>();
     //wait for macro press before starting recording
     currStatus = RecordingStatus.Waiting;
     raController.watchForStartSequence(macroArr);
     //begin recording, macro press will end the recording.
     currStatus = RecordingStatus.Recording;
     raController.recordActivity(filepath);
     //finished recording, reset all class variables.
     isCurrentlyRecording    = false;
     currStatus              = RecordingStatus.NotRecording;
     recordButton.ImageIndex = 0;
 }
Exemple #23
0
        public RecordingPage()
        {
            this.InitializeComponent();

            _timer          = new DispatcherTimer();
            _clock          = new DispatcherTimer();
            _timer.Interval = new TimeSpan(0, 0, 5);
            _timer.Tick    += UpdateRealTimeDataAsync;
            _clock.Tick    += UpdateClock;
            _mediaControls  = new MediaControls();
            _status         = RecordingStatus.NotStarted;
            _session        = new Session();
            FaceData        = new ObservableCollection <AudienceFrame>();
            InitializeGraphs();
        }
        public void Stop()
        {
            //Detenemos la grabación.
            IAsyncAction stopAction = _mediaCapture.StopRecordAsync();

            stopAction.Completed += (info, status) =>
            {
                if (status == AsyncStatus.Completed)
                {
                    if (_recordingStatus == RecordingStatus.Recording)
                    {
                        _recordingStatus = RecordingStatus.Sucessfull;
                    }
                }
            };
        }
 public Task MaskRecording()
 {
     return RunIfAnswered(
         async () =>
         {
             if (string.IsNullOrEmpty(recordingPath))
             {
                 Log.LogWarning("Channel {0} is not recording".Fmt(Uuid));
             }
             else
             {
                 await eventSocket.SendApi("uuid_record {0} mask {1}".Fmt(Uuid, recordingPath)).ConfigureAwait(false);
                 Log.LogDebug("Channel {0} has masked recording to {1}".Fmt(Uuid, recordingPath));
                 recordingStatus = RecordingStatus.Paused;
             }
         });
 }
Exemple #26
0
 public Task MaskRecording()
 {
     return(RunIfAnswered(
                async() =>
     {
         if (string.IsNullOrEmpty(recordingPath))
         {
             Console.WriteLine("Channel {0} is not recording".Fmt(UUID));
         }
         else
         {
             await eventSocket.SendApi("uuid_record {0} mask {1}".Fmt(UUID, recordingPath)).ConfigureAwait(false);
             Console.WriteLine("Channel {0} has masked recording to {1}".Fmt(UUID, recordingPath));
             recordingStatus = RecordingStatus.Paused;
         }
     }));
 }
 public Task UnmaskRecording()
 {
     return(RunIfAnswered(
                async() =>
     {
         if (string.IsNullOrEmpty(recordingPath))
         {
             Log.Warn(() => "Channel {0} is not recording".Fmt(UUID));
         }
         else
         {
             await eventSocket.SendApi("uuid_record {0} unmask {1}".Fmt(UUID, recordingPath)).ConfigureAwait(false);
             Log.Debug(() => "Channel {0} has unmasked recording to {1}".Fmt(UUID, recordingPath));
             recordingStatus = RecordingStatus.Recording;
         }
     }));
 }
Exemple #28
0
        public static RecordingStatus GetRecordingStatus(WebProgramDetailed programDetailed)
        {
            RecordingStatus recordingStatus = RecordingStatus.None;

            if (programDetailed.IsRecording || programDetailed.IsRecordingOnce || programDetailed.IsRecordingSeries)
            {
                recordingStatus |= RecordingStatus.Recording;
            }
            if (programDetailed.IsScheduled || programDetailed.IsRecordingOncePending)
            {
                recordingStatus |= RecordingStatus.Scheduled;
            }
            if (programDetailed.IsRecordingSeriesPending)
            {
                recordingStatus |= RecordingStatus.SeriesScheduled;
            }
            return(recordingStatus);
        }
Exemple #29
0
        /// <summary>
        /// Gets descriptive text for the specified enum value (or throws if not found)
        /// </summary>
        /// <param name="value">Enum value</param>
        /// <returns>Descriptive text</returns>
        // ReSharper disable once UnusedMember.Global
        public static string GetDescriptiveText(this RecordingStatus value)
        {
            switch (value)
            {
            case RecordingStatus.NotRecording:
                return(Properties.Resources.NOT_RECORDING);

            case RecordingStatus.Recording:
                return(Properties.Resources.RECORDING);

            case RecordingStatus.StopRequested:
                return(Properties.Resources.STOPPING);

            default:
            // ReSharper disable once RedundantCaseLabel
            case RecordingStatus.Unknown:
                throw new ArgumentException(nameof(value));
            }
        }
        public string GetStatusName(RecordingStatus status)
        {
            if (status == RecordingStatus.InProgress)
            {
                return("In Progress");
            }

            if (status == RecordingStatus.ConflictedNotOk)
            {
                return("Conflicted");
            }

            if (status == RecordingStatus.ConflictedOk)
            {
                return("Scheduled");
            }

            return(status.ToString());
        }
 public abstract bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus);
 public void RecordingReachedLimit(Windows.Media.Capture.MediaCapture currentCaptureObject)
 {
     _recordingStatus = RecordingStatus.failed;
     NotifyUser("RecordLimitationExceeded event raised.", NotifyType.ErrorMessage);
 }
 protected override bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
 {
   bool changed = base.UpdateRecordingStatus(program, newStatus);
   return changed && UpdateRecordingStatus(program);
 }
 protected override bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
 {
   bool changed = base.UpdateRecordingStatus(program, newStatus);
   if (changed)
   {
     ProgramListItem listProgram;
     lock (_programsList.SyncRoot)
     {
       listProgram = _programsList.OfType<ProgramListItem>().FirstOrDefault(p => p.Program.ProgramId == program.ProgramId);
       if (listProgram == null)
         return false;
     }
     listProgram.Program.UpdateState(newStatus);
   }
   return changed;
 }
 public void RecordingFailed(Windows.Media.Capture.MediaCapture currentCaptureObject, MediaCaptureFailedEventArgs currentFailure)
 {
     _recordingStatus = RecordingStatus.failed;
     NotifyUser("RecordFailed Event raised. ", NotifyType.ErrorMessage);
 }
 void OnTestGesture()
 {
     status = RecordingStatus.USE;
 }
        public string GetStatusName(RecordingStatus status)
        {
            if (status == RecordingStatus.InProgress)
            {
                return "In Progress";
            }

            if (status == RecordingStatus.ConflictedNotOk)
            {
                return "Conflicted";
            }

            if (status == RecordingStatus.ConflictedOk)
            {
                return "Scheduled";
            }

            return status.ToString();
        }
    protected virtual bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
    {
      IProgramRecordingStatus status = program as IProgramRecordingStatus;
      if (status == null)
        return false;

      status.RecordingStatus = newStatus;
      SlimTvClientMessaging.SendSlimTvProgramChangedMessage(program);
      return true;
    }
 protected override bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
 {
   if (ProgramComparer.Instance.Equals(_selectedProgram, program))
   {
     IsSingleRecordingScheduled = newStatus.HasFlag(RecordingStatus.Scheduled);
     IsSeriesRecordingScheduled = newStatus.HasFlag(RecordingStatus.SeriesScheduled);
   }
   return base.UpdateRecordingStatus(program, newStatus);
 }
Exemple #40
0
 public override bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
 {
   var tvProgram = (IProgramRecordingStatus)TvDatabase.Program.Retrieve(program.ProgramId).ToProgram(true);
   recordingStatus = tvProgram.RecordingStatus;
   return true;
 }
        public bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
        {
            recordingStatus = RecordingStatus.None;

              Program indexProgram = program as Program;
              if (indexProgram == null)
            return false;

              if (!CheckConnection(indexProgram.ServerIndex))
            return false;

              try
              {
            WebProgramDetailed programDetailed = TvServer(indexProgram.ServerIndex).GetProgramDetailedById(program.ProgramId);
            recordingStatus = Program.GetRecordingStatus(programDetailed);
              }
              catch
              {
            return false;
              }
              return true;
        }
    public bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
    {
#if TVE3
      var tvProgram = (IProgramRecordingStatus)TvDatabase.Program.Retrieve(program.ProgramId).ToProgram(true);
      recordingStatus = tvProgram.RecordingStatus;
#else
      IProgramService programService = GlobalServiceProvider.Instance.Get<IProgramService>();
      IProgramRecordingStatus recProgram = (IProgramRecordingStatus)programService.GetProgram(program.ProgramId).ToProgram(true);
      recordingStatus = recProgram.RecordingStatus;
#endif
      return true;
    }
        protected override bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
        {
            bool changed = base.UpdateRecordingStatus(program, newStatus);
              if (changed)
              {
            ChannelProgramListItem programChannel = _channelList.OfType<ChannelProgramListItem>().FirstOrDefault(c => c.Channel.ChannelId == program.ChannelId);
            if (programChannel == null)
              return false;

            ProgramListItem listProgram = programChannel.Programs.OfType<ProgramListItem>().FirstOrDefault(p => p.Program.ProgramId == program.ProgramId);
            if (listProgram == null)
              return false;
            listProgram.Program.IsScheduled = newStatus != RecordingStatus.None;
              }
              return changed;
        }
 public override bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
 {
   IProgramService programService = GlobalServiceProvider.Instance.Get<IProgramService>();
   IProgramRecordingStatus recProgram = (IProgramRecordingStatus)programService.GetProgram(program.ProgramId).ToProgram(true);
   recordingStatus = recProgram.RecordingStatus;
   return true;
 }
 void OnStopRecord()
 {
     status = RecordingStatus.STOP;
 }
 public void CompletedStart(IAsyncAction asyncInfo, AsyncStatus asyncStatus)
 {
     if (asyncStatus == AsyncStatus.Completed)
     {
         _recordingStatus = RecordingStatus.recording;
     }
 }
 public void UpdateState(RecordingStatus recordingStatus)
 {
   IsScheduled = recordingStatus != RecordingStatus.None; // Can be single or series
   IsSeriesScheduled = recordingStatus == RecordingStatus.SeriesScheduled;
 }
 public bool GetRecordingStatus(IProgram program, out RecordingStatus recordingStatus)
 {
   try
   {
     CpAction action = GetAction(Consts.ACTION_GET_REC_STATUS);
     IList<object> inParameters = new List<object> { program.ProgramId };
     IList<object> outParameters = action.InvokeAction(inParameters);
     bool result = (bool)outParameters[0];
     recordingStatus = (RecordingStatus)Enum.Parse(typeof(RecordingStatus), outParameters[1].ToString());
     return result;
   }
   catch (Exception ex)
   {
     NotifyException(ex);
     recordingStatus = RecordingStatus.None;
     return false;
   }
 }
        public async void CompletedStop(IAsyncAction asyncInfo, AsyncStatus asyncStatus)
        {
            if (asyncStatus == AsyncStatus.Completed)
            {
                if (_recordingStatus == RecordingStatus.recording)
                {
                    _recordingStatus = RecordingStatus.sucessful;

                    var file = await ApplicationData.Current.LocalFolder.GetFileAsync("recording.mp4");
                    var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);

                    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        mediaElement.SetSource(stream, "");
                        mediaElement.Play();
                    });

                    _recordingStatus = RecordingStatus.stopped;
                }

                if (_recordingStatus == RecordingStatus.failed)
                {
                    // Recording has failed somewhere. Set the recording status to stopped.
                    _recordingStatus = RecordingStatus.stopped;
                }
            }
        }
 protected virtual bool UpdateRecordingStatus(IProgram program, RecordingStatus newStatus)
 {
   IProgramRecordingStatus status = program as IProgramRecordingStatus;
   if (status == null)
     return false;
   
   status.RecordingStatus = newStatus;
   return true;
 }
 //Voice trigger events
 void OnStartRecord()
 {
     status = RecordingStatus.RECORD;
     gesture1_left.Clear();
     gesture1_right.Clear();
 }