视频刻录的简单实现

本代码可能在不用的平台上会存在一些问题。。

但是主要方法还是一样的


1、main.xml

 

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

     >



    <SurfaceView android:id="@+id/surfaceview"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

         />

    

    <LinearLayout android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:orientation="horizontal"

        android:layout_alignParentBottom="true"

        android:layout_alignParentRight="true"

        >

        

        <Button android:id="@+id/bt_start"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="开始"

        android:onClick="start"

        android:layout_marginRight="10dp"/>

        <Button android:id="@+id/bt_stop"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="停止"

        android:onClick="stop"

        android:enabled="false"

        android:layout_marginRight="10dp"/>

    </LinearLayout>



</RelativeLayout>


 

2、MainActivity

 

package com.njupt.vediorecorder;



import java.io.File;



import android.media.MediaRecorder;

import android.os.Bundle;

import android.os.Environment;

import android.app.Activity;

import android.view.Menu;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.widget.Button;



public class MainActivity extends Activity {



	private SurfaceView surfaceview;

	private MediaRecorder mr;

    private Button bt_start;

    private Button bt_stop;

    

	@Override

	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);



		surfaceview = (SurfaceView) findViewById(R.id.surfaceview);

		bt_start = (Button) findViewById(R.id.bt_start);

		bt_stop = (Button) findViewById(R.id.bt_stop);

		

		SurfaceHolder holder = surfaceview.getHolder();

		holder.setFixedSize(176, 144);

		holder.setKeepScreenOn(true);

		holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);



	}



	public void start(View v) {



		try {

			mr = new MediaRecorder();

			mr.reset();

			mr.setAudioSource(MediaRecorder.AudioSource.MIC);

			mr.setVideoSource(MediaRecorder.VideoSource.CAMERA);

			mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

			mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

			mr.setVideoEncoder(MediaRecorder.VideoEncoder.H264);



			File file = new File(Environment.getExternalStorageDirectory(),

					System.currentTimeMillis() + ".3gp");

			mr.setOutputFile(file.getAbsolutePath());



			mr.setPreviewDisplay(surfaceview.getHolder().getSurface());

			mr.prepare();

			

			bt_start.setEnabled(false);

			bt_stop.setEnabled(true);

			mr.start();

		} catch (Exception e) {

			e.printStackTrace();

		}

	}



	public void stop(View v){

		mr.stop();

		

		bt_start.setEnabled(true);

		bt_stop.setEnabled(false);

		mr.release();

	}

	@Override

	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.

		getMenuInflater().inflate(R.menu.main, menu);

		return true;

	}



}


 

3、AndroidManifest.xml

注册权限

 

 <uses-permission android:name="android.permission.RECORD_AUDIO"/>//媒体刻录

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

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>//以下两个是读写SD卡

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

    


 

横屏显示

 

 android:screenOrientation="landscape"


 

 

你可能感兴趣的:(实现)