android音频、视频、拍照基础操作

播放音乐和视频用的是类: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();
		}
    	
    }

猜你喜欢

转载自gundumw100.iteye.com/blog/1837218