コード例 #1
0
ファイル: AndroidSoundProbe.cs プロジェクト: shamik94/sensus
        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) { }
                }
            }
        }
コード例 #2
0
		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 ();   
			};
		}
コード例 #3
0
 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)
     {
     }
 }
コード例 #4
0
        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
                {
                }
            }
        }