public MainPage(App app) { _mainpage = this; InitializeComponent(); ScrollView.Content = Label; SetButtonImage("listen_disabled_allgreyedout.png"); //SetActionButtonIsEnabled(false); //ImageButton.Clicked += ActionButton_ButtonClicked; //ImageButton.Pressed += ImageButton_PressedAsync; _sapService = new SapService(OnConnectedCallback); Task.Run(async() => await _sapService.Connect().ConfigureAwait(false)); Task.Run(() => { Pref = new Preferences(app, this); Pref.LoadSettings(); _player = new Player(); _player.SetSource(new MediaBufferSource(File.ReadAllBytes(Path.Combine(imageDir, "ding.mp3")))); _player.PrepareAsync(); _player.PlaybackCompleted += delegate { _player.Stop(); }; } ); }
public static void StartRecording(bool htmlResponse) { //_audioCapture = new AudioCapture(16000, AudioChannel.Mono, AudioSampleType.S16Le); IsRecording = true; var ar = new AssistRequest { Config = new AssistConfig { AudioInConfig = new AudioInConfig { SampleRateHertz = 16000, Encoding = AudioInConfig.Types.Encoding.Linear16 }, ScreenOutConfig = new ScreenOutConfig { ScreenMode = htmlResponse ? ScreenOutConfig.Types.ScreenMode.Playing : ScreenOutConfig.Types.ScreenMode.Unspecified } } }; SapService.SendData(ar.ToByteArray()); _audioCapture.Prepare(); Record(); }
public void Stop() { var ar = new AssistRequest { Config = new AssistConfig { AudioInConfig = new AudioInConfig { SampleRateHertz = 16000, Encoding = AudioInConfig.Types.Encoding.Flac } } }; SapService.SendData(ar.ToByteArray()); IsPlaying = false; IsPrepared = false; if (_player.State != PlayerState.Playing) { return; } _player.Stop(); _source.Cancel(); BufferFileStream.Close(); //if (File.Exists(BufferFilePath)) File.Delete(BufferFilePath); _player.PlaybackCompleted -= Player_PlaybackCompleted; OnPlaybackStopped(EventArgs.Empty); MainPage.SetButtonImage("listen_blue.png"); MainPage.SetActionButtonIsEnabled(true); }
private static void Record() { _source = new CancellationTokenSource(); _token = _source.Token; Task.Run(() => { while (!_token.IsCancellationRequested) { var ar2 = new AssistRequest { AudioIn = ByteString.CopyFrom(_audioCapture.Read(_bufferSize)) }; SapService.SendData(ar2.ToByteArray()); } _audioCapture.Flush(); _audioCapture.Unprepare(); }, _token); }