概述相机几乎是每个APP都要用到的功能,万一老板让你定制相机方不方?反正我是有点方。关于相机的两天奋斗总结免费送给你。 启动相机的两种方式1.直接启动系统相机 Intent intent = new Intent()
或者指定返回图片的名称mCurrentPhotoFile Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
2.自定义启动相机 今天以第二种为例。效果图如下 
自定义相机的一般步骤- 创建显示相机画面的布局,Android已经为我们选定好SurfaceView
- 通过SurfaceView#getHolder()获得链接Camera和SurfaceView的SurfaceHolder
- Camame.open()打开相机
- 通过SurfaceHolder链接Camera和SurfaceView
一般步骤的代码演示public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback, Camera.AutoFocusCallback {
private static final String TAG = "CameraSurfaceView";
private Context mContext;
private SurfaceHolder holder;
private Camera mCamera;
private int mScreenWidth;
private int mScreenHeight;
public CameraSurfaceView(Context context) {
this(context, null);
}
public CameraSurfaceView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CameraSurfaceView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
getScreenMetrix(context);
initView();
}
private void getScreenMetrix(Context context) {
WindowManager WM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
WM.getDefaultDisplay().getMetrics(outMetrics);
mScreenWidth = outMetrics.widthPixels;
mScreenHeight = outMetrics.heightPixels;
}
private void initView() {
holder = getHolder();
添加相机和自动聚焦限权 <uses-permission
|