初始化MediaRecorder

来源:互联网 发布:夏普desk扫描软件 编辑:程序博客网 时间:2024/05/21 00:47
  1. private boolean initializeVideo() {   
  2.        Log.v(TAG, "initializeVideo");   
  3.           
  4.        if (mSurfaceHolder == null) {   
  5.            Log.v(TAG, "SurfaceHolder is null");   
  6.            return false;   
  7.        }   
  8.   
  9.        mMediaRecorderRecording = true;   
  10.   
  11.        if (mMediaRecorder == null)   
  12.                mMediaRecorder = new MediaRecorder();   
  13.        else  
  14.                mMediaRecorder.reset();   
  15.        if (mCamera != null) {   
  16.                if (Integer.parseInt(Build.VERSION.SDK) >= 8)   
  17.                        VideoCameraNew2.reconnect(mCamera);   
  18.                mCamera.release();   
  19.                mCamera = null;   
  20.        }   
  21.   
  22.        if (useFront && Integer.parseInt(Build.VERSION.SDK) >= 5) {   
  23.                        if (isAvailableSprintFFC)   
  24.                        {   
  25.                                try  
  26.                                {   
  27.                                        Method method = Class.forName("android.hardware.HtcFrontFacingCamera").getDeclaredMethod("getCamera"null);   
  28.                                        mCamera = (Camera) method.invoke(nullnull);   
  29.                                }   
  30.                                catch (Exception ex)   
  31.                                {   
  32.                                        Log.d(TAG, ex.toString());   
  33.                                }   
  34.                        } else {   
  35.                                mCamera = Camera.open();    
  36.                                Camera.Parameters parameters = mCamera.getParameters();    
  37.                                parameters.set("camera-id"2);    
  38.                                mCamera.setParameters(parameters);    
  39.                        }   
  40.                        VideoCameraNew.unlock(mCamera);   
  41.                        mMediaRecorder.setCamera(mCamera);   
  42.                mVideoPreview.setOnClickListener(this);   
  43.        }   
  44.        mVideoPreview.setOnLongClickListener(this);   
  45.        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);   
  46.        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);   
  47.        mMediaRecorder.setOutputFile(sender.getFileDescriptor());   
  48.   
  49.                mMediaRecorder.setVideoFrameRate(20);   
  50.        if (videoQualityHigh) {   
  51.            mMediaRecorder.setVideoSize(352,288);   
  52.        } else {   
  53.            mMediaRecorder.setVideoSize(176,144);   
  54.        }   
  55.        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);   
  56.        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());   
  57.   
  58.        try {   
  59.            mMediaRecorder.prepare();   
  60.            mMediaRecorder.setOnErrorListener(this);   
  61.            mMediaRecorder.start();   
  62.        } catch (IOException exception) {   
  63.            releaseMediaRecorder();   
  64.            finish();   
  65.            return false;   
  66.        }   
  67.        return true;   
  68.    }  

 

Java代码 复制代码 收藏代码
  1. private void releaseMediaRecorder() {   
  2.         Log.v(TAG, "Releasing media recorder.");   
  3.         if (mMediaRecorder != null) {   
  4.             mMediaRecorder.reset();   
  5.             if (mCamera != null) {   
  6.                         if (Integer.parseInt(Build.VERSION.SDK) >= 8)   
  7.                                 VideoCameraNew2.reconnect(mCamera);   
  8.                         mCamera.release();   
  9.                         mCamera = null;   
  10.             }   
  11.             mMediaRecorder.release();   
  12.             mMediaRecorder = null;   
  13.         }   
  14.     }   
  15.            
  16.     public void onError(MediaRecorder mr, int what, int extra) {   
  17.         if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN) {   
  18.             finish();   
  19.         }   
  20.     }  

 

Java代码 复制代码 收藏代码
  1. private void stopVideoRecording() {   
  2.        Log.v(TAG, "stopVideoRecording");   
  3.        if (mMediaRecorderRecording || mMediaRecorder != null) {   
  4.                Receiver.listener_video = null;   
  5.                t.interrupt();   
  6.            RtpStreamSender.delay = 0;   
  7.   
  8.            if (mMediaRecorderRecording && mMediaRecorder != null) {   
  9.                try {   
  10.                    mMediaRecorder.setOnErrorListener(null);   
  11.                    mMediaRecorder.setOnInfoListener(null);   
  12.                    mMediaRecorder.stop();   
  13.                } catch (RuntimeException e) {   
  14.                    Log.e(TAG, "stop fail: " + e.getMessage());   
  15.                }   
  16.   
  17.                mMediaRecorderRecording = false;   
  18.            }   
  19.            releaseMediaRecorder();   
  20.        }   
  21.    }