protected override IEnumerable<Datum> Poll(CancellationToken cancellationToken) { MediaRecorder recorder = null; try { recorder = new MediaRecorder(); recorder.SetAudioSource(AudioSource.Mic); recorder.SetOutputFormat(OutputFormat.ThreeGpp); recorder.SetAudioEncoder(AudioEncoder.AmrNb); recorder.SetOutputFile("/dev/null"); recorder.Prepare(); recorder.Start(); // mark start time of amplitude measurement -- MaxAmplitude is always computed from previous call to MaxAmplitude int dummy = recorder.MaxAmplitude; Thread.Sleep(SampleLengthMS); return new Datum[] { new SoundDatum(DateTimeOffset.UtcNow, 20 * Math.Log10(recorder.MaxAmplitude)) }; // http://www.mathworks.com/help/signal/ref/mag2db.html } finally { if (recorder != null) { try { recorder.Stop(); } catch (Exception) { } try { recorder.Release(); } catch (Exception) { } } } }
protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.video); string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/test.mp4"; var record = FindViewById<Button> (Resource.Id.Record); var stop = FindViewById<Button> (Resource.Id.Stop); var play = FindViewById<Button> (Resource.Id.Play); var video = FindViewById<VideoView> (Resource.Id.SampleVideoView); record.Click += delegate { video.StopPlayback (); recorder = new MediaRecorder (); recorder.SetVideoSource (VideoSource.Camera); recorder.SetAudioSource (AudioSource.Mic); recorder.SetOutputFormat (OutputFormat.Default); recorder.SetVideoEncoder (VideoEncoder.Default); recorder.SetAudioEncoder (AudioEncoder.Default); recorder.SetOutputFile (path); recorder.SetPreviewDisplay (video.Holder.Surface); recorder.Prepare (); recorder.Start (); }; stop.Click += delegate { if (recorder != null) { recorder.Stop (); recorder.Release (); } }; play.Click += delegate { var uri = Android.Net.Uri.Parse (path); video.SetVideoURI (uri); video.Start (); }; }
public void StopRecorder() { try { IsRecorderStop = true; IsRecorderPlaying = false; if (timer != null) { timer.Stop(); timer.Dispose(); timer = null; } if (mediaRecorder != null) { mediaRecorder.Stop(); mediaRecorder.Release(); mediaRecorder.Dispose(); mediaRecorder = null; } } catch (System.Exception ex) { } }
public void OnCompletion(MediaRecorder recorder) { f.Close(); if (!failed) { recorder.Reset(); recorder.Release(); try { System.IO.File.Move(tempFilename, outputFilename); System.IO.File.Delete(tempFilename); } catch { } } }