使用MediaRecorder就灵活的多,当前Android系统支持的视频/音频编码格式都可以进行定制,灵活组合编码格式。
抛砖引玉,先扯下预览功能
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设备不能不设置预览就进行间谍式的拍摄......