Android应用中拍照和录制视频都需要Surface,所以需要创建在Activiy中存在SurfaceView或者VideoView,可以在xml中配置,在代码中加载。同时主Activity中需要implements SurfaceHolder.Callback,实现其中的surfaceCreate, surfaceChanged, surfaceDestoryed三个方法。具体流程如下

First:

SurfaceView mSurfaceView = (SurfaceView)findViewById(R.id.surfaceview);

SurfaceHolder mHolder = mSurfaceView.getHolder();

mHolder.addCallback(this);

当调用addCallback的时候,就会触发SurfaceHolder.Callback回调,执行surfaceCreate方法,可以在surfaceCreate中做一些初始化。

Second:

打开摄像头,进行初始化。如:

Camera mCamera = Camera.open();

mCamera.setPreviewDisplay(mHolder);

当surfaceview被覆盖或者应用结束退出时,surface会destory,执行surfaceDestoryed回调,可以在该回调中释放Camera,如:

mCamera.stopPrevew();

mCamera.release();

mCamera = null;

Thrid:

进行拍照时,调用takePicture接口,传入callback参数,并在最后一个callback中获取byte[] data,并将数据以jpg文件格式保存,如下所示:

mCamera.takePicture(new ShutterCallback(){}, new PictureCallback(){},new PictureCallback(){}, new PictureCallback(){public void onPictureTaken(byte[] data, Camera camera) {save(data)} });

在save方法中通过流输出到指定路径:

File mediaStoragePath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "PicFiles");

String fileName = mediaStoragePath.getPath() + File.sperator + "PIC_" + System.currentTimeMills() + ".jpg";

File pictureFile = new File(fileName);

FileOutputStream fos = new FileOutputStream(picture);

fos.write(data);

fos.close();

转载于:https://blog.51cto.com/spi08breaker/1363714

Android拍照流程相关推荐

  1. android camera(6)---camera2 拍照流程

    android camera2 拍照流程 正文 camera2 API 的加入是从AndroidV5.0(21)开始的,因此我们使用Camera2应该是在Android 5.0(含5.0)之后.同时, ...

  2. Android手机拍照程序开发,android Camera开发-手机拍照流程

    android 拍照API流程 1. 在布局文件中添加一个 surfaceView (摄影平面) 2.根据 SurfaceView  获得 Holder (固定器) 3.给固定器设置 SurfaceH ...

  3. Android 骁龙Camera拍照流程梳理

    本文以SnapdragonCamera为例,分析骁龙Camera的拍照流程,其实现与camera2大致相同. 首先将SnapdragonCamera源码倒入android studio, 具体操作,可 ...

  4. Android 拍照以及相册中选择(适配高版本)————上传多张照片之压缩处理、在线预览可伸缩放大(二)

    ______ Introduction ______ 前言 上一篇文章刚给大家总结完,关于上传头像的功能.此文章所述 主要是关于上传头像的具体流程以及如何对照片做裁剪处理,回调给控件显示:当然重中之重 ...

  5. Android开发流程总结

    本文来自肥宝传说之路,引用必须注明出处! Android开发流程总结 首先,发个作品链接先 http://www.mumayi.com/android-550241.html 一.注册开发者账号: 开 ...

  6. Android拍照录像框架Camera2使用简介

    Android拍照录像框架Camera2使用简介 在Android 21时Google更新了以往的摄像头类库Camera,取而代之的是Camera2.作为更新版本,Camera2具有更强功能的同时也增 ...

  7. Android绘制流程

    一.前言 1.1.C++界面库 MFC.WTL.DuiLib.QT.Skia.OpenGL. Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的. ...

  8. Android事件流程详解

    Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...

  9. android - 拍照

    android 拍照 <uses-permission android:name="android.permission.CAMERA"/><uses-permi ...

最新文章

  1. 不允许程序员透露薪资!!!凭啥?
  2. java用符号断开取前面_java-如何读取断开的符号链接指向的路径?
  3. access创建窗体特别慢_64位Access运行速度很慢的解决办法
  4. 如何修改Xshell默认存储路径
  5. 2019ICPC(上海) - Light bulbs(离散化+差分)
  6. 查看-增强会话_会话式人工智能-关键技术和挑战-第2部分
  7. openwrt安装蒲公英_网速不给力?双宽带叠加,立马消除卡顿
  8. HTML5手机重力与方向感应的应用——摇一摇效果
  9. mybatis 详解(三)------入门实例(基于注解)
  10. RabbitMQ学习之ConntectionFactory与Conntection的认知
  11. (转)理解SQLSERVER中的排序规则
  12. windows下安装canal_Windows环境下python的安装与使用
  13. php socket访问单片机,可运行在单片机上的UDP通讯协议的实现【上】
  14. Win10注册.bat或.exe成为系统服务(NSSM)
  15. 渗透测试中利用社会工程学的巧妙之处
  16. Google浏览器无法上网问题解决
  17. 解决python处理word文档时的两个问题,截取内容和页眉横线
  18. Unity富文本详解
  19. 您未被授权查看该页 错误 401.3
  20. [android]so easy实现根据viewpager、edittext、时间使背景动态渐变色效果~

热门文章

  1. matlab 不单调 插值,三组无关数据进行MATLAB画三维图不采用插值的方法该怎么办...
  2. 5G同步信号(PSS/SSS)及其时频资源
  3. spring的InitializingBean介绍
  4. 如何用二进制表示一个小数
  5. Eclipse Alt+/ Content Assistant
  6. java中堆栈(stack)和堆(heap)
  7. 理解变量字符的截取功能
  8. day38 css的4种引入方式
  9. 【Luogu3932】浮游大陆的68号岛
  10. mysql常见的错误码