Android中用MediaRecorder进行录影的实例代码
Android中用MediaRecorder进行录影的实例代码
发布时间:2016-12-28 来源:查字典编辑
摘要:MediaRecorder进行录影和录音没什么差别,就多了一个设置图像的格式参考:http://www.jb51.net/article/4...

MediaRecorder进行录影和录音没什么差别 ,就多了一个设置图像的格式

参考:http://www.jb51.net/article/46182.htm

实例:

复制代码 代码如下:

<>

<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" />

复制代码 代码如下:

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

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity" >

<SurfaceView

android:id="@+id/dView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:orientation="horizontal" >

<Button

android:id="@+id/record"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="@string/record" />

<Button

android:id="@+id/stop"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="@string/stop" />

</LinearLayout>

</RelativeLayout>

复制代码 代码如下:

package com.android.xiong.videotest;

import java.io.File;

import android.app.Activity;

import android.hardware.Camera;

import android.media.MediaRecorder;

import android.os.Bundle;

import android.os.Environment;

import android.view.Menu;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

Button record, stop;

// 系统视频文件

File viodFile;

MediaRecorder mRecorder;

// 显示视频的SurfaceView

SurfaceView sView;

// 记录是否正在进行录制

boolean isRecording = false;

Camera camera;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

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

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

sView = (SurfaceView) findViewById(R.id.dView);

// stop按钮不可用

stop.setEnabled(false);

// 设置Surface不需要维护自己的缓冲区

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

// 设置分辨率

sView.getHolder().setFixedSize(320, 280);

// 设置该组件不会让屏幕自动关闭

sView.getHolder().setKeepScreenOn(true);

record.setOnClickListener(this);

stop.setOnClickListener(this);

}

@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;

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.record:

if (!Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

Toast.makeText(this, "SD卡不存在,请插卡!", Toast.LENGTH_SHORT).show();

return;

}

try {

// 创建MediaPlayer对象

mRecorder = new MediaRecorder();

mRecorder.reset();

/*camera = Camera.open();

camera.unlock();

camera.setDisplayOrientation(0);

mRecorder.setCamera(camera);*/

// 创建保存录制视频的视频文件

viodFile = new File(Environment.getExternalStorageDirectory()

.getCanonicalFile() + "/myvideo.mp4");

if (!viodFile.exists())

viodFile.createNewFile();

// 设置从麦克风采集声音

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

// 设置从摄像头采集图像

mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// 设置视频、音频的输出格式

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);

// 设置音频的编码格式、

mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

// 设置图像编码格式

mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

mRecorder.setOrientationHint(90);

//mRecorder.setVideoSize(320, 280);

// mRecorder.setVideoFrameRate(5);

mRecorder.setOutputFile(viodFile.getAbsolutePath());

// 指定SurfaceView来预览视频

mRecorder.setPreviewDisplay(sView.getHolder().getSurface());

mRecorder.prepare();

// 开始录制

mRecorder.start();

// 让record按钮不可用

record.setEnabled(false);

// 让stop按钮可用

stop.setEnabled(true);

isRecording = true;

} catch (Exception e) {

e.printStackTrace();

}

break;

case R.id.stop:

// 如果正在录制

if (isRecording) {

// 停止录制

mRecorder.stop();

// 释放资源

mRecorder.release();

mRecorder = null;

// 让record按钮可用

record.setEnabled(true);

// 让stop按钮不可用

stop.setEnabled(false);

}

break;

default:

break;

}

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类