实现手机App录屏功能结果如下:
activity_recorder.xml类布局
RecorderActivity类
public class RecorderActivity extends AppCompatActivity {
private Button b_ks;
private Button b_tz;
private SurfaceView sv_recorder;
private MediaRecorder mediaRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recorder);
sv_recorder =(SurfaceView) findViewById(R.id.sv_recorder);
//得到开始的按钮
b_ks =(Button)findViewById(R.id.b_ks);
//得到停止的按钮
b_tz =(Button)findViewById(R.id.b_tz);
//实例化媒体控制器
mediaRecorder = new MediaRecorder();
//开始按钮的点击事件
b_ks.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//重置
mediaRecorder.reset();
//设置视屏和音频的来源
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置保存的格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//设置编码格式
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoFrameRate(3);
//设置保存的路径
mediaRecorder.setOutputFile("mnt/sdcard/"+System.currentTimeMillis()+".mp4");
//将画面展示到SurfaceView
mediaRecorder.setPreviewDisplay(sv_recorder.getHolder().getSurface());
//准备
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//停止按钮的点击事件
b_tz.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//停止
mediaRecorder.stop();
}
});
}
}
在AndroidManifest.xml中加入权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />