您的位置:首页 > 移动开发 > Android开发

Android调用系统摄像头--使用MediaRecorder--1--预览(preview)功能

2013-02-16 11:21 483 查看
使用MediaRecorder就灵活的多,当前Android系统支持的视频/音频编码格式都可以进行定制,灵活组合编码格式。

抛砖引玉,先扯下预览功能

[java] view
plaincopyprint?

import java.io.IOException;

import android.content.Context;

import android.hardware.Camera;

import android.util.Log;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

public class CameraPreview extends SurfaceView implements Callback {

private static final String TAG = "TAG-CameraPreview";

private SurfaceHolder mHolder;

private Camera mCamera;

public CameraPreview(Context context, Camera camera) {

super(context);

mCamera = camera;

// 安装一个SurfaceHolder.Callback

mHolder = getHolder();

mHolder.addCallback(this);

// 针对低于3.0的Android

mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

public void surfaceCreated(SurfaceHolder holder) {

// 把预览画面的位置通知摄像头

try {

mCamera.setPreviewDisplay(holder);

mCamera.startPreview();

} catch (IOException e) {

Log.d(TAG, "Error setting camera preview: " + e.getMessage());

}

}

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO

}

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

if (mHolder.getSurface() == null){

// 预览surface不存在

return;

}

// 更改时停止预览

try {

mCamera.stopPreview();

} catch (Exception e){

}

// 在此进行缩放、旋转和重新组织格式

// 以新的设置启动预览

try {

mCamera.setPreviewDisplay(mHolder);

mCamera.startPreview();

} catch (Exception e){

Log.d(TAG, "Error starting camera preview: " + e.getMessage());

}

}

}

预览功能就是在拍视频或者照片的时候屏幕上的“预览”,我试了好多次,貌似Android设备不能不设置预览就进行间谍式的拍摄......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: