public class Cam2 {String tag = "seeker";CameraManager camMgr;String sCameraID = "";CameraDevice cam ;public void init(Context ctx){camMgr = (CameraManager) ctx.getSystemService(Context.CAMERA_SERVICE);try {//获取可用摄像头列表for (String cameraId : camMgr.getCameraIdList()) {//获取相机的相关参数CameraCharacteristics characteristics = camMgr.getCameraCharacteristics(cameraId);// 不使用前置摄像头。Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);Log.i(tag, "facing:" + facing);if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) {sCameraID = cameraId;break;}StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);if (map == null) {continue;}// 检查闪光灯是否支持。//Boolean available = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);}} catch (CameraAccessException e) {e.printStackTrace();} catch (NullPointerException e) {//不支持Camera2API}imgReader = ImageReader.newInstance(640, 480, ImageFormat.YUV_420_888, 5);imgReader.setOnImageAvailableListener(new OnImageAvailableListener() {@Overridepublic void onImageAvailable(ImageReader reader) {Image image = reader.acquireNextImage();Log.i(tag, "-- " + image.getFormat() + " " + image);image.close();}}, null);}ImageReader imgReader = null;public void open(final Surface outputTarget){try {camMgr.openCamera(sCameraID, new StateCallback() {@Overridepublic void onOpened(CameraDevice camera) {// TODO Auto-generated method stubLog.i(tag, "cam onOpened:" + camera);cam = camera;try {final Builder builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);builder.addTarget(outputTarget);builder.addTarget(imgReader.getSurface());// 自动对焦应builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);camera.createCaptureSession(Arrays.asList(outputTarget, imgReader.getSurface()), new CameraCaptureSession.StateCallback() {@Overridepublic void onConfigured(CameraCaptureSession session) {try {// 开启相机预览并添加事件CaptureRequest mPreviewRequest = builder.build();//发送请求session.setRepeatingRequest(mPreviewRequest, null, null);} catch (CameraAccessException e) {e.printStackTrace();}}@Overridepublic void onConfigureFailed(CameraCaptureSession session) {}}, null);} catch (CameraAccessException e) {e.printStackTrace();}}@Overridepublic void onError(CameraDevice camera, int error) {// TODO Auto-generated method stubLog.i(tag, "cam onError:" + error);camera.close();cam = null;}@Overridepublic void onDisconnected(CameraDevice camera) {// TODO Auto-generated method stubLog.i(tag, "cam onDisconnected:" + camera);camera.close();cam = null;}}, new Handler(new Callback() {@Overridepublic boolean handleMessage(Message msg) {Log.i(tag, "cam msg:" + msg);return false;}}));} catch (CameraAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void close(Surface outputTarget){if(cam != null){try {Builder builder = cam.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);builder.removeTarget(outputTarget);} catch (CameraAccessException e) {e.printStackTrace();}cam.close();}}
}
public class MainActivity extends Activity {private Cam2 cam2 = new Cam2();SurfaceView surfaceView ;SurfaceHolder surfaceHolder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);surfaceView = (SurfaceView) findViewById(R.id.surface);surfaceHolder = surfaceView.getHolder();surfaceHolder.addCallback(surfaceCb);cam2.init(this);}SurfaceHolder.Callback surfaceCb = new Callback() {@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {cam2.close(holder.getSurface());}@Overridepublic void surfaceCreated(SurfaceHolder holder) {cam2.open(holder.getSurface());}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}};
}

Camera2使用方法例子代码相关推荐

  1. 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现

    随机模拟-蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出 ...

  2. POS消费机C#例子代码

    详细代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; usin ...

  3. POS机C井例子代码(2)

    详细代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; usin ...

  4. 不要再用main方法测试代码性能了,用这款JDK自带工具

    前言 作为软件开发人员,我们通常会写一些测试程序用来对比不同算法.不同工具的性能问题.而最常见的做法是写一个main方法,构造模拟场景进行并发测试. 如果细心的朋友可能已经发现,每次测试结果误差很大, ...

  5. java屏蔽虚拟按键代码_Android 中隐藏虚拟按键的方法实例代码

    下面通过一段代码给大家讲解android 隐藏虚拟按键的方法,废话不多说了,大家多多看看代码和注释吧,具体代码如下所示: /** * 隐藏虚拟按键,并且全屏 */ protected void hid ...

  6. 如何使用沃顿研究数据中心(WRDS,CRSP)查询美股历史交易数据(R语言的调用方法以及代码示例)

    https://wrds-web.wharton.upenn.edu/wrds/ WRDS 沃顿商学院金融系列数据库是由宾夕法尼亚大学沃顿商学院开发的金融领域的跨库研究工具,同时也包含Compusta ...

  7. 经典Robocode例子代码- -SnippetBot

    经典Robocode例子代码  - -SnippetBot 看过了Robocode的文章,对Robocde有了个大概了解,现在我我们就一个经典的Robocode例子源代码来分析Robocode也jav ...

  8. 经典Robocode例子代码

    经典Robocode例子代码 作者:Alisdair     //*------------------------------------------------------------------ ...

  9. 经典Robocode例子代码--SnippetBot

    经典Robocode例子代码  - -SnippetBot 看过了Robocode的文章,对Robocde有了个大概了解,现在我我们就一个经典的Robocode例子源代码来分析Robocode也jav ...

最新文章

  1. 【缅怀妈妈系列诗歌】之十:妈妈,孩儿答应您
  2. mavengradle 依赖指定版本范围或者最新版本
  3. dokuwiki 的管理和使用
  4. Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
  5. 字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型
  6. debian php安装pdo扩展,docker安装PHP扩展2020-05-25
  7. 自考--运筹学--计算题总结
  8. char类型输出地址
  9. 安卓最好的浏览器_今日软件 | AI一键抠图、隐私保护工具、全能下载器、安卓启动器、茄子快传、迅雷、批量字符替换、傲游浏览器、全局负一屏...
  10. 统计标点符号的次数 java_Java实现统计一篇文章中每个单词出现的次数
  11. bootstraptable查看详情_bootstrap table detailView详情视图树形模式
  12. winform调用fastreport制作报表(三)绑定数据
  13. Android Launcher研究与开发——桌面的初步定制化
  14. 我的第一个大创项目——智能药箱(1)前期准备
  15. 关键词百度指数叠加-关键词百度指数叠加
  16. 搜狗输入法linux版 rpm,wps for linux 不能使用搜狗输入法
  17. java pdf stamper_使用pdfstamper(Itext)将页码添加到pdf
  18. 新开课day21+day22总结
  19. 初二因式分解奥数竞赛题_初中数学因式分解含答案竞赛题精选
  20. 微型计算机音节,二年级微机下册教案

热门文章

  1. vuejs管理系统模板_2020年22种最佳VueJS管理员仪表板模板
  2. VSCode写leetcode
  3. 2014年高考计算机试题答案,春季高考历年真题-2014年天津市春季高考计算机试卷.doc...
  4. 了解Scapy工作原理
  5. 兰伯特(Lambert)模型
  6. 美洽客服系统怎么同步顾客身份
  7. Android培训班(67)dex文件打开流程
  8. xargs命令详解,xargs与管道的区别
  9. c#读取solidworks文件_CSharpSolidworks C#打开程序路径中后缀为SLDPRT的 文件 C#编程 238万源代码下载- www.pudn.com...
  10. vsc code-runner插件运行python文件,解释器更改为ananconda