首页 > 系统 > Android > 正文

Android 无预览拍照功能

2019-10-22 18:15:36
字体:
来源:转载
供稿:网友

最近得到了一个需求,在后台拍照并保存

public void onTakePhotoClicked() {   final SurfaceView preview = new SurfaceView(this);   SurfaceHolder holder = preview.getHolder();   // deprecated setting, but required on Android versions prior to 3.0holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); holder.addCallback(new SurfaceHolder.Callback() {     @Override     //The preview must happen at or after this point or takePicture fails     public void surfaceCreated(SurfaceHolder holder) {       Log.d(TAG, "Surface created");        camera = null;       try {         camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);         Log.d(TAG, "Opened camera");         try {           camera.setPreviewDisplay(holder);         } catch (IOException e) {           throw new RuntimeException(e);         }         camera.startPreview();         Log.d(TAG, "Started preview");      //延时拍照         ThreadUtils.postOnUiThreadDelayed(new Runnable() {           @Override           public void run() {             Log.e("zgj","开始拍照");             camera.takePicture(null, null, CameraService.this);           }         },5000);       } catch (Exception e) {         if (camera != null)           camera.release();         throw new RuntimeException(e);       }     }     @Override     public void surfaceDestroyed(SurfaceHolder holder) {}     @Override     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}   });   WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);   WindowManager.LayoutParams params = new WindowManager.LayoutParams(       1, 1, //Must be at least 1x1       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,       0,       //Don't know if this is a safe default       PixelFormat.UNKNOWN);   //Don't set the preview visibility to GONE or INVISIBLE   wm.addView(preview, params); } @Override public void onPictureTaken(byte[] bytes, Camera camera) {   Log.e("zgj", "拍照结束");   File pictureDir = Environment.getExternalStorageDirectory();   if (pictureDir == null) {     Log.d("zgj",         "Error creating media file, check storage permissions!");     return;   }   try {     String pictureName = "ssss.png";     File file = new File(pictureDir + "/pic/");     if (!file.exists()) {       file.mkdir();     }     file = new File(pictureDir + "/pic/" + pictureName);     FileOutputStream fos = new FileOutputStream(file);     fos.write(bytes);     fos.close();   } catch (FileNotFoundException e) {     Log.d("zgj", "File not found: " + e.getMessage());   } catch (IOException e) {     Log.d("zgj", "Error accessing file: " + e.getMessage());   } }

总结

以上所述是小编给大家介绍的Android 无预览拍照功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VEVB武林网网站的支持!


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表