1.得到Activity里面的ID
调用
sv_main_sss.getHolder().addCallback(new SurfaceHolder.Callback()这个方法
2.打开照相机
Camera.open();设置参数
再进行拍照效果,要压缩,不然消耗内存比较大Camera.Parameters parameters=camera.getParameters();
//格式 parameters.setPictureFormat(PixelFormat.JPEG); //质量 parameters.set("jpeg-quality",85); camera.setParameters(parameters); //展示画面 try { camera.setPreviewDisplay(sv_main_sss.getHolder()); //开启预览 camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } }
//拍照 camera.takePicture(null, null,new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { //压缩 Bitmap bitmap= BitmapFactory.decodeByteArray(data,0,data.length); try { FileOutputStream fos=new FileOutputStream("/mnt/sdcard/koo/"+System.currentTimeMillis()+".png"); bitmap.compress(Bitmap.CompressFormat.PNG,85,fos); camera.stopPreview(); camera.startPreview(); } catch (FileNotFoundException e) { e.printStackTrace(); }还要在清单文件配置下权限<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />拍照之前的预览效果
拍照完成的效果