public void StartRecorder()
        {
            try {
                //Java.IO.File sdDir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryMusic);
                //filePath = sdDir + "/" + "testAudio.mp3";
                if (File.Exists (filePath))
                    File.Delete (filePath);

                //Java.IO.File myFile = new Java.IO.File(filePath);
                //myFile.CreateNewFile();

                if (recorder == null)
                    recorder = new MediaRecorder (); // Initial state.
                else
                    recorder.Reset ();

                recorder.SetAudioSource (AudioSource.Mic);
                recorder.SetOutputFormat (OutputFormat.Mpeg4);
                recorder.SetAudioEncoder (AudioEncoder.AmrNb); // Initialized state.
                recorder.SetOutputFile (filePath); // DataSourceConfigured state.
                recorder.Prepare (); // Prepared state
                recorder.Start (); // Recording state.

            } catch (Exception ex) {
                Console.Out.WriteLine (ex.StackTrace);
            }
        }
示例#2
0
        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) { }
                }
            }
        }
        public void SurfaceCreated(ISurfaceHolder holder)
        {
            var outputFile = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(),
                                                    "myvideooutputfile.mp4");
            if (!recording)
            {
                mediaRecorder = new MediaRecorder();
                //correctCamera();
                //if (camera != null)
                //    mediaRecorder.SetCamera(camera);

                mediaRecorder.SetAudioSource(AudioSource.Mic);
                mediaRecorder.SetVideoSource(VideoSource.Camera);
                mediaRecorder.SetOutputFormat(OutputFormat.ThreeGpp);
                mediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
                mediaRecorder.SetVideoEncoder(VideoEncoder.Mpeg4Sp);

                if (System.IO.File.Exists(outputFile))
                    System.IO.File.Delete(outputFile);
                System.IO.File.Create(outputFile);

                CamcorderProfile camProf = CamcorderProfile.Get(CamcorderQuality.Low);
                fps = camProf.VideoFrameRate;

                mediaRecorder.SetOutputFile(outputFile);
                mediaRecorder.SetPreviewDisplay(holder.Surface);
                mediaRecorder.Prepare();
            } else
            {
                mediaPlayer.SetDisplay(holder);
                mediaPlayer.SetDataSource(outputFile);
                mediaPlayer.Prepared += new EventHandler(mediaPlayer_Prepared);
                mediaPlayer.PrepareAsync();
            }
        }
 public void StopRecorder()
 {
     if (recorder != null) {
         recorder.Stop ();
         recorder.Release ();
         recorder = null;
     }
 }
        public bool RecordAudio()
        {
            if (string.IsNullOrEmpty(folder) || string.IsNullOrEmpty(directoryname))
            {
                return false;
            }

            //--test
            
            // get all under root:
                /*
                var directories = Directory.EnumerateDirectories("./");
                foreach (var directory in directories)
                {
                    Console.WriteLine(directory);
                }
             */

            // read text file:
                /*
                var text = File.ReadAllText("TestData/ReadMe.txt");
                Console.WriteLine(text);
                */

            // xml stream reader:
               /*
                using (TextReader reader = new StreamReader("./TestData/test.xml"))
                {
                    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyObject));
                    var xml = (MyObject)serializer.Deserialize(reader);
                }
                */

            try
            {
                Directory.CreateDirectory(directoryname);
                fileName = string.Format("Audio{0}.aac", DateTime.Now.ToString("yyyyMMddHHmmss"));
                path = Path.Combine(directoryname, fileName);

                _recorder = new MediaRecorder();
                _recorder.Reset();
				_recorder.SetAudioSource(AudioSource.Mic);
				_recorder.SetOutputFormat(OutputFormat.Default);
				_recorder.SetAudioEncoder(AudioEncoder.Aac);
                _recorder.SetOutputFile(path);
                _recorder.Prepare();
                _recorder.Start();
          
                return true;
            }
            catch (System.Exception ex)
            {
                _recorder = null;
                fileName = string.Empty;
                var test = ex.Message;
                return false;
            }
        }
示例#6
0
 public void Pause()
 {
     _player.Release();
     _recorder.Release();
     _player.Dispose();
     _recorder.Dispose();
     _player = null;
     _recorder = null;
 }
示例#7
0
        public void StopRecording()
        {
            // stop recording
              _mic.Stop();

              // prepare object for GC by calling dispose
              _mic.Release();
              _mic = null;
        }
示例#8
0
        protected override void OnDestroy()
        {
            base.OnDestroy ();

            if (recorder != null) {
                recorder.Release ();
                recorder.Dispose ();
                recorder = null;
            }
        }
示例#9
0
        protected override void OnPause()
        {
            base.OnPause();

            _player.Release();
            _recorder.Release();
            _player.Dispose();
            _recorder.Dispose();
            _player = null;
            _recorder = null;
        }
 public void RecordSound()
 {
     _url = StorageService.GenerateFilename(StorageType.Sound, "3gpp");
     _recorder = new MediaRecorder();
     _recorder.SetAudioSource(AudioSource.Mic);
     _recorder.SetOutputFormat(OutputFormat.ThreeGpp);
     _recorder.SetAudioEncoder(AudioEncoder.AmrNb);
     _recorder.SetOutputFile(_url);
     _recorder.Prepare();
     _recorder.Start();
 }
示例#11
0
        protected override void OnResume()
        {
            base.OnResume ();

            _recorder = new MediaRecorder ();
            _player = new MediaPlayer ();

            _player.Completion += (sender, e) => {
                _player.Reset ();
                _start.Enabled = !_start.Enabled;
            };
        }
示例#12
0
        protected override void OnResume()
        {
            base.OnResume();

            _recorder = new MediaRecorder();
            _player = new MediaPlayer();

            _player.Completion += (sender, e) =>
            {
                _player.Reset();
                _btnRecord.Enabled = true;
                _btnPlay.Enabled = true;
            };
        }
示例#13
0
        public void Resume()
        {
            //base.OnResume();

            _recorder = new MediaRecorder();
            _player = new MediaPlayer();

            _player.Completion += (sender, e) =>
            {
                _player.Reset();

                MessagingCenter.Send<ISoundRecorder>(this, "MediaPlayer.Complete");
            };
        }
示例#14
0
 private void releaseMediaRecorder()
 {
     if (mMediaRecorder != null)
     {
         // clear recorder configuration
         mMediaRecorder.Reset();
         // release the recorder object
         mMediaRecorder.Release();
         mMediaRecorder = null;
         // Lock camera for later use i.e taking it back from MediaRecorder.
         // MediaRecorder doesn't need it anymore and we will release it if the activity pauses.
         mCamera.Lock();
     }
 }
 public void SetUpRecoder()
 {
     try
     {
         if (null == activity)
         {
             return;
         }
         if (userResponse == UserResponse.Video)
         {
             mediaRecorder = new MediaRecorder();
             mediaRecorder.Reset();
             mediaRecorder.SetAudioSource(AudioSource.Mic);
             mediaRecorder.SetVideoSource(VideoSource.Surface);
             mediaRecorder.SetOutputFormat(OutputFormat.Mpeg4);
             mediaRecorder.SetOutputFile(path + "/test.mp4");
             mediaRecorder.SetVideoEncodingBitRate(10000000);
             mediaRecorder.SetVideoFrameRate(30);
             mediaRecorder.SetVideoSize(videoSize.Width, videoSize.Height);
             mediaRecorder.SetVideoEncoder(VideoEncoder.H264);
             mediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
             //int rotation = (int)activity.WindowManager.DefaultDisplay.Rotation;
             //int orientation = ORIENTATIONS.Get(rotation);
             if (LensFacing == CameraFacing.BACK)
             {
                 mediaRecorder.SetOrientationHint(90);
             }
             else
             {
                 mediaRecorder.SetOrientationHint(270);
             }
             mediaRecorder.SetMaxDuration(30000);
             mediaRecorder.Prepare();
         }
         else
         {
             mediaRecorder = new MediaRecorder();
             mediaRecorder.Reset();
             mediaRecorder.SetAudioSource(AudioSource.Mic);
             mediaRecorder.SetOutputFormat(OutputFormat.ThreeGpp);
             mediaRecorder.SetAudioEncoder(AudioEncoder.AmrNb);
             mediaRecorder.SetOutputFile(path + "/test.mp3");
             mediaRecorder.SetMaxDuration(30000);
             mediaRecorder.Prepare();
         }
     }
     catch (System.Exception ex)
     {
     }
 }
示例#16
0
        public void SurfaceCreated(ISurfaceHolder holder)
        {
            mediaRecord = new MediaRecorder ();
            mediaRecord.SetAudioSource (AudioSource.Mic);
            mediaRecord.SetVideoSource (VideoSource.Camera);
            mediaRecord.SetOutputFormat (OutputFormat.Default);
            mediaRecord.SetAudioEncoder (AudioEncoder.Default);
            mediaRecord.SetVideoEncoder (VideoEncoder.Default);

            System.IO.File.Create (videoFilename);

            mediaRecord.SetOutputFile (videoFilename);
            mediaRecord.SetPreviewDisplay (holder.Surface);
            mediaRecord.Prepare ();
        }
		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 ();   
			};
		}
示例#18
0
        public void SetVideo()
        {
            var recorder = new Android.Media.MediaRecorder();

            recorder.SetAudioSource(AudioSource.Mic);
            recorder.SetVideoSource(VideoSource.Surface);
            recorder.SetOutputFormat(OutputFormat.Mpeg4);
            recorder.SetVideoEncodingBitRate(10000000);
            recorder.SetVideoFrameRate(30);
            recorder.SetVideoEncoder(VideoEncoder.H264);
            recorder.SetAudioEncoder(AudioEncoder.Aac);
            recorder.SetVideoSize(_previewSize.Width, _previewSize.Height);
            SurfaceOrientation rotation = windowManager.DefaultDisplay.Rotation;

            recorder.SetOrientationHint();

            var pfd = new ParcelFileDescriptor(ParcelFileDescriptor.FromSocket(new Socket()));

            recorder.SetOutputFile(pfd.FileDescriptor);

            #region sample

            /*mediaRecorder.SetAudioSource(AudioSource.Mic);
             * mediaRecorder.SetVideoSource(VideoSource.Surface);
             * mediaRecorder.SetOutputFormat(OutputFormat.Mpeg4);
             * mediaRecorder.SetOutputFile(GetVideoFile(Activity).AbsolutePath);
             * mediaRecorder.SetVideoEncodingBitRate(10000000);
             * mediaRecorder.SetVideoFrameRate(30);
             * mediaRecorder.SetVideoSize(videoSize.Width, videoSize.Height);
             * mediaRecorder.SetVideoEncoder(VideoEncoder.H264);
             * mediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
             * int rotation    = (int)Activity.WindowManager.DefaultDisplay.Rotation;
             * int orientation = ORIENTATIONS.Get(rotation);
             * mediaRecorder.SetOrientationHint(orientation);          //
             * mediaRecorder.Prepare();*/
            #endregion
        }
 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 stopRecordingVideo() 
		{
			//UI
			is_recording_video = false;
			button_video.SetText (Resource.String.record);

			//Stop recording
			media_recorder.Stop ();
			media_recorder.Release ();
			media_recorder = null;
			if (null != Activity) {
				Toast.MakeText (Activity, "Video saved: " + getVideoFile (Activity),
					ToastLength.Short).Show ();
			}
			startPreview ();
		}
		private void startRecordingVideo() {
			if (null == Activity) 
				return;


			media_recorder = new MediaRecorder ();
			File file = getVideoFile (Activity);
			try {
				//UI
				button_video.SetText (Resource.String.stop);
				is_recording_video = true;

				//Configure the MediaRecorder
				media_recorder.SetAudioSource (AudioSource.Mic);
				media_recorder.SetVideoSource (VideoSource.Surface);
				media_recorder.SetOutputFormat (OutputFormat.Mpeg4);
				media_recorder.SetOutputFile (System.IO.Path.GetFullPath (file.ToString()));
				media_recorder.SetVideoEncodingBitRate (10000000);
				media_recorder.SetVideoFrameRate (30);
				media_recorder.SetVideoSize (1440, 1080);
				media_recorder.SetVideoEncoder (VideoEncoder.H264);
				media_recorder.SetAudioEncoder (AudioEncoder.Aac);
				int rotation = (int)Activity.WindowManager.DefaultDisplay.Rotation;
				int orientation = ORIENTATIONS.Get (rotation);
				media_recorder.SetOrientationHint (orientation);
				media_recorder.Prepare ();
				Surface surface = media_recorder.Surface;

				//Set up CaptureRequest
				builder = camera_device.CreateCaptureRequest (CameraTemplate.Record);
				builder.AddTarget (surface);
				var preview_surface = new Surface (texture_view.SurfaceTexture);
				builder.AddTarget (preview_surface);
				var surface_list = new List<Surface>();
				surface_list.Add(surface);
				surface_list.Add(preview_surface);
				camera_device.CreateCaptureSession(surface_list,new RecordingCaptureStateListener(this),null);

			} catch (IOException e) {
				e.PrintStackTrace ();
			} catch (CameraAccessException e) {
				e.PrintStackTrace ();
			} catch (IllegalStateException e) {
				e.PrintStackTrace ();
			}

		}
示例#22
0
        protected override void OnResume()
        {
            base.OnResume ();
            _recorder = new MediaRecorder ();
            _player = new MediaPlayer ();

            _player.Completion += (sender, e) => {
                _player.Reset ();

            };

            _photoAdapter.NotifyDataSetChanged ();
            _recordAdapter.NotifyDataSetChanged ();
        }
        public void StartRecording()
        {
            var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            _recordedFileName = documents + File.PathSeparator + Guid.NewGuid() + ".mp4";

            ClearMediaRecorder();
            _mediaRecorder = new MediaRecorder();
            _mediaRecorder.SetAudioSource(AudioSource.Default);
            _mediaRecorder.SetOutputFormat(OutputFormat.Mpeg4);
            _mediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
            _mediaRecorder.SetOutputFile(_recordedFileName);
            _mediaRecorder.Prepare();
            _mediaRecorder.Start();
        }
示例#24
0
 public RecordAdapter() 
 {
     recorder = new MediaRecorder();
     if (!Directory.Exists(FILE_PATH))
         Directory.CreateDirectory(FILE_PATH);
 }
示例#25
0
 public void OnStart(MediaRecorder recorder)
 {
     try
     {
         recorder.Start();
     } catch (Java.Lang.RuntimeException e)
     {
         #if DEBUG
         System.Diagnostics.Debug.WriteLine("Runtime Exception thrown : {0}, {1}", e.Message, e.StackTrace);
         #endif
         failed = true;
     } catch (Java.Lang.Exception es)
     {
         #if DEBUG
         System.Diagnostics.Debug.WriteLine("Exception thown : {0}, {1}", es.Message, es.StackTrace);
         #endif
         failed = true;
     }
     #if DEBUG
     System.Diagnostics.Debug.WriteLine("failed = {0}", failed);
     #endif
 }
 private void ClearMediaRecorder()
 {
     if (_mediaRecorder != null)
     {
         _mediaRecorder.Release();
         _mediaRecorder = null;
     }
 }
 public AndroidAudioRecorder()
 {
     Recorder = new MediaRecorder ();
 }
		//Tries to open a CameraDevice
		public void openCamera(int width, int height)
		{
			if (null == Activity || Activity.IsFinishing) 
				return;

			CameraManager manager = (CameraManager)Activity.GetSystemService (Context.CameraService);
			try {
				if(!cameraOpenCloseLock.TryAcquire(2500,TimeUnit.Milliseconds))
					throw new RuntimeException("Time out waiting to lock camera opening.");
				string cameraId = manager.GetCameraIdList()[0];
				CameraCharacteristics characteristics = manager.GetCameraCharacteristics(cameraId);
				StreamConfigurationMap map = (StreamConfigurationMap)characteristics.Get(CameraCharacteristics.ScalerStreamConfigurationMap);
				videoSize = ChooseVideoSize(map.GetOutputSizes(Class.FromType(typeof(MediaRecorder))));
				previewSize = ChooseOptimalSize(map.GetOutputSizes(Class.FromType(typeof(MediaRecorder))),width,height,videoSize);
				int orientation = (int)Resources.Configuration.Orientation;
				if(orientation == (int)Android.Content.Res.Orientation.Landscape){
					textureView.SetAspectRatio(previewSize.Width,previewSize.Height);
				} else {
					textureView.SetAspectRatio(previewSize.Height,previewSize.Width);
				}
				configureTransform(width,height);
				mediaRecorder = new MediaRecorder();
				manager.OpenCamera(cameraId,stateListener,null);

			} catch (CameraAccessException) {
				Toast.MakeText (Activity, "Cannot access the camera.", ToastLength.Short).Show ();
				Activity.Finish ();
			} catch (NullPointerException) {
				var dialog = new ErrorDialog ();
				dialog.Show (FragmentManager, "dialog");
			} catch (InterruptedException) {
				throw new RuntimeException ("Interrupted while trying to lock camera opening.");
			}
		}
示例#29
0
        public AudioRecorder(string filename)
        {
            if (filename == "")
            {
                #if DEBUG
                System.Diagnostics.Debug.WriteLine("filename passed in is NULL");
                #endif
                return;
            }

            if (System.IO.File.Exists(filename))
                System.IO.File.Delete(filename);

            recorder = new MediaRecorder();
            recorder.SetAudioSource(AudioSource.Mic);
            recorder.SetOutputFormat(OutputFormat.ThreeGpp);
            recorder.SetAudioEncoder(AudioEncoder.Aac);
            tempFilename = System.IO.Path.Combine(wowZapp.LaffOutOut.Singleton.ContentDirectory, "tempfile.3gp");
            outputFilename = filename;
            #if (DEBUG)
            System.Diagnostics.Debug.WriteLine("filename = {0}", filename);
            #endif
            f = System.IO.File.Create(tempFilename);
            recorder.SetOutputFile(tempFilename);
            recorder.Prepare();
        }
示例#30
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
                {
                }
            }
        }
示例#31
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate (bundle);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Memory);

            ImageButton record = FindViewById<ImageButton> (Resource.Id.vid);
            ImageButton btnNormalDialog = FindViewById<ImageButton> (Resource.Id.img);

            _imageView = FindViewById<ImageView> (Resource.Id.imgv);
            btnNormalDialog.Click += ButtonOnClick;

            mToolbar = FindViewById<SupportToolbar>(Resource.Id.toolbar);
            mDrawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            mLeftDrawer = FindViewById<ListView>(Resource.Id.left_drawer);

            mLeftDrawer.Tag = 0;

            SetSupportActionBar(mToolbar);

            mLeftDataSet = new List<string>();
            mLeftDataSet.Add ("Left Item 1");
            mLeftDataSet.Add ("Left Item 2");
            mLeftAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, mLeftDataSet);
            mLeftDrawer.Adapter = mLeftAdapter;
            mDrawerToggle = new MyActionBarDrawerToggle(
                this,							//Host Activity
                mDrawerLayout,					//DrawerLayout
                Resource.String.openDrawer,		//Opened Message
                Resource.String.closeDrawer		//Closed Message
            );

            mDrawerLayout.SetDrawerListener(mDrawerToggle);
            SupportActionBar.SetHomeButtonEnabled(true);
            SupportActionBar.SetDisplayShowTitleEnabled(true);
            mDrawerToggle.SyncState();

            if (bundle != null)
            {
                if (bundle.GetString("DrawerState") == "Opened")
                {
                    SupportActionBar.SetTitle(Resource.String.openDrawer);
                }

                else
                {
                    SupportActionBar.SetTitle(Resource.String.closeDrawer);
                }
            }

            else
            {
                //This is the first the time the activity is ran
                SupportActionBar.SetTitle(Resource.String.closeDrawer);
            }

            VideoView video = FindViewById<VideoView> (Resource.Id.vidv);

            _button = FindViewById<ImageButton> (Resource.Id.mica);

            string path1 = Environment.ExternalStorageDirectory.AbsolutePath + "/test.mp4";

            _button.Click += delegate {

                if (count == 1) {

                    _recorder.SetAudioSource (AudioSource.Mic);
                    _recorder.SetOutputFormat (OutputFormat.ThreeGpp);
                    _recorder.SetAudioEncoder (AudioEncoder.AmrNb);
                    _recorder.SetOutputFile (path1);
                    _recorder.Prepare ();
                    _recorder.Start ();
                    Toast toast = Toast.MakeText (this , "Audio Recording", ToastLength.Short);
                    toast.Show ();
                    count ++;
                } else if (count == 2) {
                    _recorder.Stop();
                    _recorder.Release ();

                    count = 0;
                    Toast toast = Toast.MakeText (this , "Recording Stopped", ToastLength.Short);
                    toast.Show ();
                }
            };

            record.Click += delegate {
                video.StopPlayback ();
                if(c1 == 1)
                {
                    _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 (path1);
                    _recorder.SetPreviewDisplay (video.Holder.Surface);
                    _recorder.Prepare ();
                    _recorder.Start ();
                    c1++;
                }
                else if(c1 == 2){
                    if (_recorder != null)
                    {
                        _recorder.Stop ();
                        _recorder.Release ();
                        c1 = 0;
                    }
                }
            };
        }
示例#32
0
 public void OnStop(MediaRecorder recorder)
 {
     if (!failed)
     {
         f.Close();
         recorder.Stop();
         System.IO.File.Move(tempFilename, outputFilename);
         System.IO.File.Delete(tempFilename);
     }
 }
示例#33
0
        protected override void OnPause()
        {
            base.OnPause ();

                //realease media recorder and player while they are not needed (ie when app paused)
                _player.Release ();
                _recorder.Release ();
                _player.Dispose ();
                _recorder.Dispose ();
                _player = null;
                _recorder = null;
        }
		private void CloseCamera()
		{
			try {
				cameraOpenCloseLock.Acquire();
				if(null != cameraDevice) {
					cameraDevice.Close();
					cameraDevice = null;
				}
				if(null != mediaRecorder) {
					mediaRecorder.Release();
					mediaRecorder = null;
				}
			} catch (InterruptedException e) {
				throw new RuntimeException ("Interrupted while trying to lock camera closing.");
			} finally {
				cameraOpenCloseLock.Release ();
			}
		}
示例#35
0
        private bool prepareVideoRecorder()
        {
            // BEGIN_INCLUDE (configure_preview)
            mCamera = CameraHelper.getDefaultCameraInstance();

            // We need to make sure that our preview and recording video size are supported by the
            // camera. Query camera to find all the sizes and choose the optimal size given the
            // dimensions of our preview surface.
            Camera.Parameters   parameters             = mCamera.GetParameters();
            IList <Camera.Size> mSupportedPreviewSizes = parameters.SupportedPreviewSizes;
            IList <Camera.Size> mSupportedVideoSizes   = parameters.SupportedVideoSizes;

            Camera.Size optimalSize = CameraHelper.getOptimalVideoSize(mSupportedVideoSizes,
                                                                       mSupportedPreviewSizes, mPreview.Width, mPreview.Height);

            // Use the same size for recording profile.
            CamcorderProfile profile = CamcorderProfile.Get(CamcorderQuality.High);

            profile.VideoFrameWidth  = optimalSize.Width;
            profile.VideoFrameHeight = optimalSize.Height;

            // likewise for the camera object itself.
            parameters.SetPreviewSize(profile.VideoFrameWidth, profile.VideoFrameHeight);
            mCamera.SetParameters(parameters);
            try
            {
                // Requires API level 11+, For backward compatibility use {@link setPreviewDisplay}
                // with {@link SurfaceView}
                mCamera.SetPreviewTexture(mPreview.SurfaceTexture);
            }
            catch (IOException e)
            {
                Log.Error(TAG, "Surface texture is unavailable or unsuitable" + e.Message);
                return(false);
            }
            // END_INCLUDE (configure_preview)


            // BEGIN_INCLUDE (configure_media_recorder)
            mMediaRecorder = new Android.Media.MediaRecorder();

            // Step 1: Unlock and set camera to MediaRecorder
            mCamera.Unlock();
            mMediaRecorder.SetCamera(mCamera);

            // Step 2: Set sources
            mMediaRecorder.SetAudioSource(AudioSource.Default);
            mMediaRecorder.SetVideoSource(VideoSource.Camera);

            // Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
            mMediaRecorder.SetProfile(profile);

            // Step 4: Set output file
            mOutputFile = CameraHelper.getOutputMediaFile(CameraHelper.MEDIA_TYPE_VIDEO);
            if (mOutputFile == null)
            {
                return(false);
            }
            mMediaRecorder.SetOutputFile(mOutputFile.Path);
            // END_INCLUDE (configure_media_recorder)

            // Step 5: Prepare configured MediaRecorder
            try
            {
                mMediaRecorder.Prepare();
            }
            catch (IllegalStateException e)
            {
                Log.Debug(TAG, "IllegalStateException preparing MediaRecorder: " + e.Message);
                releaseMediaRecorder();
                return(false);
            }
            catch (IOException e)
            {
                Log.Debug(TAG, "IOException preparing MediaRecorder: " + e.Message);
                releaseMediaRecorder();
                return(false);
            }
            return(true);
        }