播放音乐和视频用的是类:MediaPlayer
刻录声音和视频用的是类:MediaRecorder
拍照:Camera
没什么难度,都是调用android的API
1.刻录视频,关键代码如下:
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.reset(); //首先重置一下
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机种采集视频
mediaRecorder.setVideoSource(MediaRecorder.AudioSource.MIC); //从麦克风中采集声音
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //输出格式3GP
mediaRecorder.setVideoSize(350, 240); //视频文件大小
mediaRecorder.setVideoFrameRate(3); //录制帧数,每秒3帧
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//设置视频编码方式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置声音编码方式
/*设置保存路径为sd卡根目录*/
File videoFile = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");
mediaRecorder.setOutputFile(videoFile.getAbsolutePath());
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface()); //定义一个SurfaceView来显示画面
mediaRecorder.prepare(); //此处要捕捉异常,底层调用硬件实现准备工作
mediaRecorder.start();
//停止
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder=null;
2.刻录声音,关键代码如下:
//与录制视频很相似
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //声音来源麦克风
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //输出格式
mRecorder.setOutputFile(mFileName); //可以自己给定保存文件
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //编码方式
mRecorder.prepare();
mRecorder.start();
3.播放声音,关键代码如下:
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.reset
mPlayer.setDataSource(mFileName); //设置播放的声音文件
mPlayer.prepare();
mPlayer.start();
//............
//基本方法
mPlayer.pause() //暂停播放
mPlayer.stop() //停止播放
mPlayer.seekTo(int) //直接跳到某点进行播放
4.播放视频,关键代码如下:
MeidaPlayer media = new MeidaPlayer();
media.setAudioStreamType(AudioManager.STREAM_MUSIC);
media.setDisplay(sh); //定义一个SurfaceView播放它
media.setDataSource(file.getAbsolutePath());
media.prepare();
media.start();
5.拍照,关键代码如下
Camera camera = Camera.open();
Parameters parameters = camera.getParameters();
parameters.setPreviewSize(420, 300); //设置预览照片的大小
parameters.setPreviewFrameRate(3); //每秒3帧
parameters.setPictureFormat(PixelFormat.JPEG); //设置照片输出格式
parameters.set("jpeg-quaility", 85); //设置照片质量
parameters.setPictureSize(420, 300); //设置照片大小
camera.setParameters(parameters);
camera.setPreviewDisplay(SurfaceView) //定义一个 SurfaceView用于显示预览
camera.startPreview();
//..........
//按下拍照键后
//camera.autoFocus(null); 自动对焦
camera.takePicture(null, null, new PictureClassback()); //拍照
//..............
//需要实现PictureCallback接口
private class PictureClassback implements PictureCallback{
public void onPictureTaken(byte[] abyte0, Camera camera) {
Bitmap bitmap = BitmapFactory.decodeByteArray(abyte0, 0, abyte0.length); //根据照片2进制流生成位图
File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
FileOutputStream stream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, stream); //此方法设置照片质量和输出格式,并且保存图片
stream.close();
}
}
.............