首先需要用到的是一个叫Camera类的,更新的一个叫Camera2的类。

Camera2是从 SDK 5.0(API Level 21)开始才被引入的。里面的方法有些还是比原来的方便许多的,但是,用户系统版本参差不齐,所以暂时还是使用Camera来进行开发。


SufaceView

这个View可以直接重内存或者DMA等硬件接口获取所得的图像数据,是个非常重要的绘图容器,所以,开发相机应用一般都是使用它。

SurfaceView可以在主线程之外的线程中向屏幕绘图,这样可以避免画图任务繁重的时候,造成主线程的阻塞,从而提高了程序的反应速度。

使用SurfaceView,一般要实现一个SurfaceHolder.Callback接口,通过此接口。因为使用SurfaceView,所有的绘图工作必须得在Surface被创建之后才能开始,而在Surface被销毁之前必须结束,所以Callback中的surfaceCreated和surfaceDestroyed就变成了绘图处理代码的边界。

需要重写的方法:

surfaceChanged(SurfaceHolder holderformatwidthheight){}surfaceCreated(SurfaceHolder holder){}surfaceDestroyed(SurfaceHolder holder) {}

SurfaceHolder,可以把它看成是surface的控制器,用来操纵surface。处理它的Canvas上画的效果和动画,控制表面,大小,像素等等。


一般步骤:

  • 检测并访问摄像头,判断摄像头是否可访问

  • 创建预览,SurfaceView控件预览,并且实现SurfaceHolder接口。此控件能预览摄像的实时图像。

  • 其他二次开发操作:如设置监听来拍照,保存照片啊,等等其他开发。

  • 释放摄像头,摄像头使用完毕,应用程序必须正确的释放,方便第二次调用或其他程序使用。


Camera

Camera类中的一些处理都是通过Callback来进行的:

mCamera.autoFocus(mAutoFocusCallback)

其中mAutoFocusCallback继承自Camera.AutoFocusCallback接口,用户可以自定义的是对焦完成后的操作(比如延迟拍照等);

Camera类中的一些处理都是通过一堆Callback来进行的:

mCamera.takePicture(shutterCallbackrawCallbackjpegCallback)

比如实现拍照的操作

mCamera.setPreviewCallback(previewCallback)

这个方法可以获取到相机实时处理的Callback,然后通过重写其中的方法获取到相机通过摄像头获取的实时数据,这个就对二次开发十分重要,这个Callback也是十分重要的。


注意事项:

初始化相机时要先遍历设备上相机的个数,然后再通过

cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT

去选择是前置还是后置,再用

Camera.open(camIdx);

带参数的open(index)方法打开。

若要处理实时获取的数据,建议新开一个AsyncTask来完成,把耗时操作放入doInBackground方法里。

 @Overrideprotected Object doInBackground(Object[] params) {}

记得在使用完后或者切换界面时需要释放相机资源,把Callback设置为空。

mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.release();
mCamera = null

例子:打开前置摄像头并且实时获取数据

github:https://github.com/sadaharusong/FrontCamera/

Android摄像头获取实时数据+Demo相关推荐

  1. android系统相机实时数据采集流程,Android摄像头获取实时数据+Demo

    前言 首先需要用到的是一个叫Camera类的,更新的一个叫Camera2的类. Camera2是从 SDK 5.0(API Level 21)开始才被引入的.里面的方法有些还是比原来的方便许多的,但是 ...

  2. ddms java 截图_从Android设备获取实时截屏

    从Android设备获取实时截屏(adb) 前两篇文章已经把如何控制android设备的输入讲了,这一篇就是如何获取输出,通过adb的方式 原理 framebuffer获取流程 AdbClient和A ...

  3. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  4. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  5. 华泰股票交易接口如何获取实时数据和同步时间数据?

    下面直接分享华泰股票交易接口如何获取实时数据和同步时间数据? 首先.获取实时数据 python的函数库非常丰富,httplib具备获取API接口数据的功能. API返回参数是json格式的,可以用非标 ...

  6. 【IoT最佳实践】设备获取实时天气DEMO代码解读

    [摘要] 之前,我们曾为您介绍如何实现设备实时获取天气信息,本文将为您从代码逻辑层面解读该实时天气应用的DEMO. 本文承接[IoT最佳实践]设备获取实时天气信息,为您解读实时天气DEMO的代码逻辑, ...

  7. android 简单获取实时天气数据_绘图本身很简单但是获取数据很难

    看到我们生信技能树的教学群有学员提问这样的图如何绘制: 其实我们讲解过,绘图代码本身搜索即可拿到,关键词 ggpubr paired boxplot ,输入到 https://cn.bing.com/ ...

  8. android 自定义对话框 demo,自定义dialog对话框获取EditText数据demo

    效果: java代码 package com.example.dialogdemo; import android.app.Activity; import android.app.AlertDial ...

  9. python websocket爬虫_详解python websocket获取实时数据的几种常见链接方式

    第一种, 使用create_connection链接,需要pip install websocket-client (此方法不建议使用,链接不稳定,容易断,并且连接很耗时) import time f ...

最新文章

  1. db9针232接口波特率标准_RS232和RS485与RS422接口的基础知识详细介绍
  2. Apache Shiro和Spring Security的详细对比
  3. iframe 父窗口和子窗口相互的调用方法集锦
  4. 分区表的本地索引竟然失效了——ORA-01502
  5. OCS Inventory NG使用之在windows 2008 R2平台下安装服务器端(二)
  6. vuepc端实现数据加载_多模态注意力机制+多模态数据,完全实现端到端课堂活动检测|ICASSP 2020...
  7. 幻想和欲望毁了多少苦命的人(修改增加版)
  8. 【渝粤教育】 广东开放大学 10548_金融学k1_21秋考试
  9. idea重写接口没有@override_乐字节|Java8核心实战-接口默认方法
  10. ExtJs2.0学习系列(13)--Ext.TreePanel之第二式
  11. hwui opengl VS skia opengl VS skia vulkan?
  12. markdown 本地链接_Markdown从入门到入坑
  13. [BZOJ3944]Sum
  14. python好找工作吗2017-2017年 Python工程师面试经历分享(七家)
  15. Android接入腾讯Bugly统计SDK
  16. 为知笔记离线同步 — 没网也可以随时查看笔记
  17. 应用技术大公开系列Q之十一:(纤维).石墨烯纸制备工艺 (*3-4)
  18. Python 金融数据分析_8_Python基础(2)
  19. 魔兽地图编辑器插件 YDWE 触发器函数转化成jass代码 以及转化为自定义文本后重新转化为触发器函数
  20. 大数据风控---消费金融业务全流程风险解析

热门文章

  1. lv双肩包尺寸对照表_这10个最火的LV双肩包,我就是不要好好背!
  2. ART笔记1:模糊自适应共振理论
  3. 【bzoj1003】[ZJOI2006]物流运输trans 最短路+dp
  4. 近距离端详Android ART运行时库
  5. 一篇值得收藏的ML数据预处理原理与实践文章
  6. 北上广深之外,互联网经济也在杭州成都西安武汉异军突起
  7. matlab word几级标题,完整word版,MATLAB符号运算
  8. `Algorithm-Solution` `LeetCode` 6305. 二进制矩阵中翻转最多一次使路径不连通
  9. 腾讯Bugly 集成( Android SDK)
  10. linux小红帽实验心得,小红帽读书心得(精选4篇)