Android中使用Camera
来源:互联网 发布:大数据相关研究课题 编辑:程序博客网 时间:2024/05/17 03:19
1.使用surfaceView来预览。
2.调用Camera来设置相机。
3.设置camera的参数。
看下面的例子:
//设置surfaceView不需要自己维护缓冲区 surfaceView_image_show.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); //获取surfaceView的SurfaceHolder surfaceHolder = surfaceView_image_show.getHolder(); //为surfaceHolder添加一个回调监听器 surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { initCamera(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { //如果camera不为空,释放摄像头 if(camera != null){ if(isPreview){ camera.stopPreview(); } camera.release(); camera = null; } } });}//初始化摄像头private void initCamera(){ //如果没有预览 if(!isPreview){ camera = Camera.open(0);//打开后置摄像头 camera.setDisplayOrientation(90); } if(camera != null && !isPreview){ //设置Camera的参数 Camera.Parameters parameters = camera.getParameters(); parameters.setPreviewSize(screenWidth,screenHeight);//设置预览照片大小 parameters.setPreviewFpsRange(4, 10);//预览照片每秒显示多少帧的最小值和最大值 parameters.setPreviewFormat(ImageFormat.JPEG);//设置图片格式 parameters.set("jpeg-quality", 85);//设置JPG照片的质量 parameters.setPictureSize(screenWidth, screenHeight);//设置图片大小 try { camera.setPreviewDisplay(surfaceHolder);//通过SurfaceView显示取景画面 } catch (IOException e) { e.printStackTrace(); } camera.startPreview();//开始预览 isPreview = true; }}//控制摄像头自动对焦public void capture(View view){ if(camera != null){ //控制摄像头自动对焦后才拍照 camera.autoFocus(new Camera.AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { if(!success){ camera.takePicture(new Camera.ShutterCallback() { @Override public void onShutter() { //按下快门会执行此处代码 } }, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { //此处代码可以决定是否需要保存原始照片信息 } }, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { //根据拍照所取得的数据创建位图 final Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length); View view = getLayoutInflater().inflate(R.layout.save_camera_img, null); ImageView camera_img = (ImageView)view.findViewById(R.id.ImageView_camera_showimg); camera_img.setImageBitmap(bm); AlertDialog.Builder dialog = new AlertDialog.Builder(CameraActivity.this) .setView(view) .setNegativeButton("取消", null) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //跳转到图片编辑界面,并将该Bitmap对象传过去 File file = new File(Environment.getExternalStorageDirectory(), UUID.randomUUID().toString()+".jpg"); try { FileOutputStream fos = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.JPEG,100,fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Intent intent = new Intent(CameraActivity.this, EditCameraImgActivity.class); intent.putExtra("cameraImgPath",file.getAbsolutePath()); CameraActivity.this.startActivity(intent); CameraActivity.this.finish(); } }); dialog.create().show(); camera.stopPreview(); camera.startPreview(); isPreview = true; } }); } } }); }}
0 0
- Android中使用Camera
- android中Camera setDisplayOrientation使用
- Android 中使用Camera照相
- android中Camera setDisplayOrientation使用
- android中Camera setDisplayOrientation使用
- android中Camera setDisplayOrientation使用
- android中Camera setDisplayOrientation使用
- Android中Camera架构
- Android Camera 使用小结
- Android Camera 使用小结
- Android Camera 使用小结
- Android Camera 使用小结
- Android Camera 使用小结
- Android Camera使用小结
- Android Camera 使用小结
- Android Camera 使用小结
- Android camera 使用小结
- Android Camera 使用小结
- 手斧Linux – 从LFS到Funtoo (146)
- Pipeline Partitioning
- 手斧Linux – 从LFS到Funtoo (147)
- 缺页中断处理过程
- No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
- Android中使用Camera
- css3--背景图片适应不同分辨率手机
- dd测试磁盘速度
- /mongod: /usr/lib64/libssl.so.10: no version information available (required by ./mongod)
- Excel自动生成身份证号
- Uva 11210 - Chinese Mahjong
- SPOJ QTREE5 lct
- TestFlight——完美的iOS App测试方案---pre.im
- GetLastError 在程序中的使用