1.在androidmanifest.xml配置

  <uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.RECORD_AUDIO">uses-permission>

在xml中通过SurfaceView来显示

 <SurfaceView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/sv_main_surface"        />

Java代码的照相机实现过程,通过 Camera的一些参数,将取到的数值放画面展示到SurfaceView

 sv_main_surface = (SurfaceView) findViewById(R.id.sv_main_surface);        sv_main_surface.getHolder().addCallback(new SurfaceHolder.Callback() {            @Override            public void surfaceCreated(SurfaceHolder holder) {                //打开照相机                camera = Camera.open();                //设置参数                Camera.Parameters parameters=camera.getParameters();                parameters.setPictureFormat(PixelFormat.JPEG);                parameters.set("jpeg-quality",85);                camera.setParameters(parameters);                //将画面展示到SurfaceView                try {                    camera.setPreviewDisplay(sv_main_surface.getHolder());                    //开启预览                    camera.startPreview();                } catch (IOException e) {                    e.printStackTrace();                }            }            @Override            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {            }            @Override            public void surfaceDestroyed(SurfaceHolder holder) {                //关闭照相机                if(camera!=null){                    camera.release();                    camera.stopPreview();                    camera=null;                }            }        });

//将图片大小进行压缩,图片压缩技术(字节数组转成Bitmap),
//通过文件输出流FileOutputStream的形式将图片进行压缩

 public void takePhoto(View view) {        camera.takePicture(null, null, new Camera.PictureCallback() {            @Override            public void onPictureTaken(byte[] bytes, Camera camera) {                //实例化文件输出流                //写                //压缩(图片)                //将字节数组转成Bitmap                Bitmap bitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length);                try {                    FileOutputStream fos=new FileOutputStream("/mnt/sdcard/dcim/相机/G150831_"+System.currentTimeMillis()+".png");                    bitmap.compress(Bitmap.CompressFormat.PNG,85,fos);                    //重新继续拍照                    camera.stopPreview();                    camera.startPreview();                } catch (FileNotFoundException e) {                    e.printStackTrace();                }            }        });    }

更多相关文章

  1. Android(安卓)bitmap 图片缩放,压缩处理
  2. android中的Json一
  3. Android(安卓)Fragment 体系源码跟踪笔记(1)
  4. 关于 android Intent 传对象和对象数组的一些操作
  5. android背景图片更换——经典例子
  6. Android(安卓)图片选择详解及实例代码
  7. Value xxx of type org.json.JSONObject cannot be converted to
  8. android在Fragment中使用ListView显示数据总结
  9. android 自定义照相机Camera黑屏

随机推荐

  1. android简介
  2. 【iOS-cocos2d-X 游戏开发之三】Mac下配
  3. Android的adb网络调试方法
  4. Android应用如何支持屏幕多尺寸多分辨率
  5. Android系列教程之六:TextView小组件的使
  6. ANDROID音频系统散记之一:A2dpAudioInterf
  7. Android开发前景已成末路
  8. Android(安卓)XML属性介绍
  9. Android开发前景已成末路
  10. Android加载大量图片内存溢出解决办法