Android 无预览拍照功能

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

public void onTakePhotoClicked() {
   final SurfaceView preview = new SurfaceView(this);
   SurfaceHolder holder = preview.getHolder();
   // deprecated setting, but required on Android versions prior to 3.0
holder.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 无预览拍照功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android 无预览拍照功能

    最近得到了一个需求,在后台拍照并保存 public void onTakePhotoClicked() { final SurfaceView preview = new SurfaceView(this); SurfaceHolder holder = preview.getHolder(); // deprecated setting, but required on Android versions prior to 3.0 holder.setType(SurfaceHolder.SUR

  • Android快速实现无预览拍照功能

    本文实例为大家分享了Android实现无预览拍照功能的具体代码,供大家参考,具体内容如下 实现思路: 把预览的SurfaceView的宽高设置为肉眼看不出的值,例如0.1dp,其他的就是自定义相机的标准步骤了! 当然,网上自定义相机的文章多的去了,我是不可能再做老生常谈的事的,在这里我推荐一个很好用的第三方库,也许很多人已经了解过并且用过,没用过的同学可以试试,亲测好用. 废话不多说,先上源码地址 这里简单介绍一下用法: 1.在gradle里添加库的依赖:compile 'com.wonderk

  • vue裁切预览组件功能的实现步骤

    vue版本裁切工具,包含预览功能 最终效果: qiuyaofan.github.io/vue-crop-de- 源码地址: github.com/qiuyaofan/v- 第一步:先用vue-cli安装脚手架(不会安装的看 vue-cli官网) // 初始化vue-cli vue init webpack my-plugin 第二步:创建文件 新建src/views/validSlideDemo.vue, src/components里新建VueCrop/index.js,VueCrop.vue

  • jQuery实现上传图片前预览效果功能

    网上很多代码实现了上传图片这个功能,但不支持实时预览图片,下面实现了上传图片前预览效果功能,具体如下 效果如图: 代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery上传图片之前可以预览效果</title> <script src="http://libs.baidu.com/jquery/1.11.3/jq

  • JS实现上传图片的三种方法并实现预览图片功能

    在常见的用户注册页面,需要用户在本地选择一张图片作为头像,并同时预览. 常见的思路有两种:一是将图片上传至服务器的临时文件夹中,并返回该图片的url,然后渲染在html页面:另一种思路是,直接在本地内存中预览图片,用户确认提交后再上传至服务器保存. 这两种方法各有利弊,方法一很明显,浪费流量和服务器资源:方法二则加重了浏览器的负担,并且对浏览器的兼容性要求更高(在某些低版本中的IE浏览器不支持). 以下是实现上述思路的方法: 1. 模板文件 <!DOCTYPE html> <html l

  • 微信小程序选择图片和放大预览图片功能

    视频中,老师也是看着官方文档,为学生们讲解,微信提供了系统的方法来选择图片. wx.chooseImage({}) 此方法是用来选择图片的方法,具体使用如下: data: { avatarUrl:null }, 首先在数据中定义接收数据的变量,然后调用方法选择图片,将图片显示出来. bindViewTap:function(){ var that = this; wx.chooseImage({ // 设置最多可以选择的图片张数,默认9,如果我们设置了多张,那么接收时//就不在是单个变量了, c

  • input file样式修改以及图片预览删除功能详细概括(推荐)

    本篇对input file进行了修改,改成自己需要的样式,类似验证身份上传身份证图片的功能. 效果图如下: 这里主要展示上传预览图片功能,对于删除功能的html及css写的比较粗糙,对于想要精细表现这块儿的可以在自己添加修改. <!--点击预览图片--> <div class="picDiv"> <div class="addImages"> <!--multiple属性可选择多个图片上传--> <input t

  • java使用PDFRenderer实现预览PDF功能

    本文实例为大家分享了java使用PDFRenderer实现预览PDF功能,供大家参考,具体内容如下 需要一个jar PDFRenderer-0.9.0.jar package com.wonders.stpt.attach.action; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInp

  • js实现的在本地预览图片功能示例

    本文实例讲述了js实现的在本地预览图片功能.分享给大家供大家参考,具体如下: 移动web <body> <form enctype="multipart/form-data" name="form1"> 上传文件:<input id="f" type="file" name="f" onchange="change()" /> 预览:<img i

  • jQuery实现图片上传预览效果功能完整实例【测试可用】

    本文实例讲述了jQuery实现图片上传预览效果功能.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>www.jb51.net jquery图片上传预览效果</title> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.j

随机推荐