Android录制视频,第二部分具体使用
简述
录制视频博客第一篇写了视频录制控件的相关内容(视频录制博客第一篇),这一篇里讲一下控件的具体使用。其实自己看一下控件的代码,很容易使用的,可以根据自己的要求定制一下参数什么的,这里的代码就各位就当个参考看看吧。
具体实现
录制页面大概这几个功能点:
- 显示录制进度
- 按下录制
- 上划取消录制
- 录制完成保存视频
- 退出页面删除视频文件或文件夹(可选)
注意的点
录制预览的尺寸需要设置的,控件的大小长宽比率需要配合预览尺寸,不然预览会变形的。还有就是我们公司项目是要自拍的,所以直接默认调用了前置摄像头,需要调用后置的可以在代码里更改。切换摄像头的需求没有,也就没做,有需求可以自己做一下。还有权限问题,录制前会有权限检测。注释还算比较详细的,具体可以参考注释。
代码
java代码RecordVideoActivity.java
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
/**
* 视频拍摄页面
* Created by Wood on 2016/4/6.
*/
public class RecordVideoActivity extends Activity implements View.OnClickListener {
private static final String LOG_TAG = "RecordVideoActivity";
private static final int REQ_CODE = 110;
private static final int RES_CODE = 111;
/**
* 录制进度
*/
private static final int RECORD_PROGRESS = 100;
/**
* 录制结束
*/
private static final int RECORD_FINISH = 101;
private MovieRecorderView movieRecorderView;
private Button buttonShoot;
private RelativeLayout rlBottomRoot;
private ProgressBar progressVideo;
private TextView textViewCountDown;
private TextView textViewUpToCancel;//上移取消
private TextView textViewReleaseToCancel;//释放取消
/**
* 是否结束录制
*/
private boolean isFinish = true;
/**
* 是否触摸在松开取消的状态
*/
private boolean isTouchOnUpToCancel = false;
/**
* 当前进度
*/
private int currentTime = 0;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case RECORD_PROGRESS:
progressVideo.setProgress(currentTime);
if (currentTime < 10) {
textViewCountDown.setText("00:0" + currentTime);
} else {
textViewCountDown.setText("00:" + currentTime);
}
break;
case RECORD_FINISH:
if (isTouchOnUpToCancel) {
//录制结束,还在上移删除状态没有松手,就复位录制
resetData();
} else {
//录制结束,在正常位置,录制完成跳转页面
isFinish = true;
buttonShoot.setEnabled(false);
finishActivity();
}
break;
}
}
};
/**
* 按下的位置
*/
private float startY;
@Override
protected void</