刚学习了了个简单的拍照的dome,跟大家分享下,步骤如下
(1)获取id
main_sv = (SurfaceView) findViewById(R.id.main_sv);(2)SurfaceView接受摄像头界面变化的信息
main_sv.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { camera = Camera.open(); Camera.Parameters parameters=camera.getParameters(); //设置保存的格式 parameters.setPictureFormat(PixelFormat.JPEG); //设置质量 parameters.set("jpeg-quality",85); //给相机设置参数 camera.setParameters(parameters); //展示到sv try { camera.setPReviewDisplay(main_sv.getHolder()); camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { } @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) { }});(2)写方法
camera.takePicture(null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] bytes, Camera camera) { // Bitmap bitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length); try { FileOutputStream fos=new FileOutputStream("/mnt/sdcard/DCIM/camera/G150825_"+System.currentTimeMillis()+".png"); bitmap.compress(Bitmap.CompressFormat.JPEG,85,fos); camera.stopPreview(); camera.startPreview(); } catch (FileNotFoundException e) { e.printStackTrace(); } }});(注意权限)<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
新闻热点
疑难解答