android基础--视频刻录

来源:互联网 发布:array shift php 编辑:程序博客网 时间:2024/05/20 07:32
 

增加四个权限

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

 <uses-permission android:name="android.permission.CAMERA"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

MainActivity.java

public class MainActivity extends Activity {

    private MediaRecorder mediaRecorder;

    private Button recordButton;

    private Button stopButton;

    private SurfaceView surfaceView;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

       

        requestWindowFeature(Window.FEATURE_NO_TITLE);//设置为没有标题

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏

       

        setContentView(R.layout.main);

       

        recordButton = (Button)this.findViewById(R.id.recordbutton);

        stopButton = (Button)this.findViewById(R.id.stopbutton);

        ButtonClickListener listener = new ButtonClickListener();

        recordButton.setOnClickListener(listener);

        stopButton.setOnClickListener(listener);

       

        surfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);

        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        surfaceView.getHolder().setKeepScreenOn(true);//设置高亮

    }

    private final class ButtonClickListener implements View.OnClickListener{

       public void onClick(View v) {

           try {

              if(v.getId()==R.id.recordbutton){

                  File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");//设置存放文件名

                  mediaRecorder = new MediaRecorder();

                  mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//设置视频的采集来源

                  mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//指定声音采集来源

                  mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置输出格式,应该放到高宽之前设置

                  mediaRecorder.setVideoSize(320, 240);//设置视频的高度宽度

                  mediaRecorder.setVideoFrameRate(5);//设置采集画面的速度,每秒采集5个

                  mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//设置视频的编码方式

                  mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置声音的编码格式

                  mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());

                  mediaRecorder.setOutputFile(file.getAbsolutePath());//设置存放文件路径

                  mediaRecorder.prepare();

                  mediaRecorder.start();

                  recordButton.setEnabled(false);//开始刻录,则刻录按钮不能用

                  stopButton.setEnabled(true);//停止按钮可用

              }else{

                  if(mediaRecorder!=null){

                     mediaRecorder.stop();

                     mediaRecorder.release();

                     mediaRecorder=null;

                     recordButton.setEnabled(true);//没有刻录,则刻录按钮可用

                     stopButton.setEnabled(false);//停止按钮不可用

                  }

              }

           } catch (Exception e) {

              e.printStackTrace();

           }

       }

    }

}

原创粉丝点击