コード例 #1
0
        public string StartRecordingAudio()
        {
            string fullfilename = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath
                                  + "/" + Android.OS.Environment.DirectoryDownloads;

            fullfilename += "/" + String.Format("myAudio_{0}.mp4", Guid.NewGuid());

            try
            {
                _recorder = new Android.Media.MediaRecorder();
                _recorder.SetAudioSource(Android.Media.AudioSource.Mic);
                _recorder.SetOutputFormat(Android.Media.OutputFormat.Mpeg4);
                _recorder.SetAudioEncoder(Android.Media.AudioEncoder.AmrNb);
                _recorder.SetOutputFile(fullfilename);
                _recorder.Prepare();
                _recorder.Start();
                timer.Start();
                saveAudio      = false;
                _recordingFile = fullfilename;
                return(fullfilename);
            }
            catch (Exception)
            {
                return("");
            }
        }
コード例 #2
0
        public PlatformSystem(Activity activity)
        {
            m_Activity = activity;
            this.m_ConnectivityManager = (ConnectivityManager)Application.Context.GetSystemService(Context.ConnectivityService);

            //record audios
            timer.Interval = 1000;
            timer.Elapsed += Timer_Elapsed;


            _recorder = new Android.Media.MediaRecorder();
            _player   = new Android.Media.MediaPlayer();

            _player.Completion += (sender, e) => {
                _player.Reset();
            };
        }
コード例 #3
0
        private void initRecorder(int width, int height)
        {
            mMediaRecorder = new Android.Media.MediaRecorder();

            // 遇到的坑 -- 用户权限没有赋予 Mic 会报错 "setAudioSource failed.", 故此处进行判断是否含有麦克风权限
            if (Xamarin.Essentials.DeviceInfo.Version.Major >= 6)
            {
                Android.Content.PM.Permission permission = mAppActivity.CheckSelfPermission(Android.Manifest.Permission.RecordAudio);
                if (permission == Android.Content.PM.Permission.Granted)
                {
                    // mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    mMediaRecorder.SetAudioSource(Android.Media.AudioSource.Mic);
                }
            }

            // mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
            mMediaRecorder.SetVideoSource(Android.Media.VideoSource.Surface);

            // mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mMediaRecorder.SetOutputFormat(Android.Media.OutputFormat.ThreeGpp);

            // mediaRecorder.setOutputFile(getsaveDirectory() + System.currentTimeMillis() + ".mp4");
            // 遇到的坑 -- 目录没有创建会报出 Java.IO.FileNotFoundException, 要先判断 Dir 是否存在, 不存在则进行创建
            var mp4FileInfo = MyAndroidScreenRecord.GetScreenVideoFileInfo(mImageFileDateTime, mDirName);

            if (mp4FileInfo.Directory.Exists == false)
            {
                mp4FileInfo.Directory.Create();
            }

            mMediaRecorder.SetOutputFile(mp4FileInfo.FullName);

            // mediaRecorder.setVideoSize(width, height);
            mMediaRecorder.SetVideoSize(width, height);

            // mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
            mMediaRecorder.SetVideoEncoder(Android.Media.VideoEncoder.H264);

            // 遇到的坑 -- 用户权限没有赋予 Mic 会报错 "setAudioSource failed.", 故此处进行判断是否含有麦克风权限
            if (Xamarin.Essentials.DeviceInfo.Version.Major >= 6)
            {
                Android.Content.PM.Permission permission = mAppActivity.CheckSelfPermission(Android.Manifest.Permission.RecordAudio);
                if (permission == Android.Content.PM.Permission.Granted)
                {
                    // mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    mMediaRecorder.SetAudioEncoder(Android.Media.AudioEncoder.AmrNb);
                }
            }

            // mediaRecorder.setVideoEncodingBitRate(5 * 1024 * 1024);
            mMediaRecorder.SetVideoEncodingBitRate(5 * 1024 * 1024);

            // mediaRecorder.setVideoFrameRate(30);
            mMediaRecorder.SetVideoFrameRate(mDpi);

            try
            {
                mMediaRecorder.Prepare();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("MyAndroidScreenRecord - initRecorder 捕获到错误");
                System.Diagnostics.Debug.WriteLine(ex.GetFullInfo());
                System.Diagnostics.Debugger.Break();

                throw ex;
            }
        }