Android开启双摄像头
开启双目摄像头的需求大部分都会出现在人脸识别的设备上,所以这里的方法仅作为参考。
之前写过一篇双目摄像头的文章,但是说的非常笼统,重点的问题都没有提到,今天咱们就来好好说道说道
先在activity_main.xml里撸一个布局,两个SurfaceView用来分别显示两个摄像头获取的图像:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.charleyszc.twocamerasdemo.activity.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><SurfaceViewandroid:id="@+id/red_surface"android:layout_width="fill_parent"android:layout_height="350dp"/><SurfaceViewandroid:id="@+id/color_surface"android:layout_width="fill_parent"android:layout_height="350dp" /></LinearLayout></android.support.constraint.ConstraintLayout>
视频内容显示可以用SurfaceView或TextureView,这两个都可以进行视频画面帧的展示,他们的区别以后会说到,有兴趣的同学可以百度一下。简单来说,SurfaceView对内存上处理更好,TextureView支持移动、旋转、缩放等动画,以及截图操作。从性能和安全性角度出发,使用播放器的话优先选SurfaceView。但是显示摄像头图像会有需要镜像旋转等问题,所以我在实际使用的时候其实是用的TextureView。
首先就是需要在onCreate里绑定布局:
surfaceViewRed = findViewById(R.id.redsurface);
surfaceViewColor = findViewById(R.id.colorsurface);
surfaceHolderRed = surfaceViewRed.getHolder();
surfaceHolderColor = surfaceViewColor.getHolder();//动态权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, 1);
}
initRedCamera(); //0
initColorCamera(); //1
initXXXCamera方法里有每个摄像头的初始化和设置,例如initColorCamera()方法里:
public void initColorCamera() {colorCamera = Camera.open(1);colorCamera.setDisplayOrientation(270);// 这里可以用来做获取预览帧数据的操作
// Camera.Parameters parameters = colorCamera.getParameters();
// final int w = parameters.getPreviewSize().width;
// final int h = parameters.getPreviewSize().height;// colorCamera.setPreviewCallback(new Camera.PreviewCallback() {
// @Override
// public void onPreviewFrame(byte[] data, Camera camera) {PreviewImage.setColorPic(data, w, h);
// }
// });//显示摄像头预览图像surfaceHolderColor.addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {try {colorCamera.setPreviewDisplay(holder);} catch (IOException e) {e.printStackTrace();}colorCamera.startPreview();}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {}});}
在这里可以看见不光有SurfaceView,还有SurfaceHolder。SurfaceHolder是一个接口,其作用就像一个关于Surface的监听器。提供访问和控制SurfaceView背后的Surface 相关的方法 ,它通过三个回调方法,让我们可以得到Surface的创建、销毁或者改变。在SurfaceView中有一个方法getHolder,可以很方便地获得SurfaceView所对应的Surface所对应的SurfaceHolder。
这样摄像头就可以打开并显示了,说是打开双摄其实就是分别打开两个摄像头,算是一种思路吧。
要是您觉得,还可以的话也请帮忙给个星呗,不胜感谢!
demo地址:https://github.com/YuGongCharley/twoCamerasDemo
Android开启双摄像头相关推荐
- Android源码之单双摄像头修改
客制化需求中经常有要改成单摄像或者又要改回双摄像的.这篇博客总结一下关于单双摄像头的修改.关于单双摄像头需要修改下面三个地方: <一> device\sprd\scx35\sp7731g_ ...
- 支持双摄android软件,2cam app-2cam故事的两面(双摄像头相机)安卓版预约 v1.0_5577安卓网...
2cam故事的两面app欢迎下载,2cam为你找到拍摄新角度,独创的双摄像头模式,让您能够同时使用手机的前后镜头拍摄照片或者视频,让你全方位记录生活点滴,还能一键分享至社交平台,摄影达人必备的手机软件 ...
- 3d摄像头android手机多少钱,双摄像头2.0、3D动态全景拍照: 荣耀V8 手机 发布
双摄像头2.0.3D动态全景拍照: 荣耀V8 手机 发布2299元起 2016-05-11 08:25:29 192点赞 54收藏 457评论 直达链接 华为近两年一直在推双平行摄像头技术,也确实让这 ...
- android后置双摄像头,双后置摄像头_手机Android频道-中关村在线
处理器方面,HTC One M8装备的是一颗高通骁龙801系列四核心处理器,支持4G LTE网络,拥有四颗Krait 400微架构CPU,单颗CPU主频高达2.5GHz,集成Adreno 330 GP ...
- Android打开手机双摄像头灯光问题
//打开灯光private void openLight(Camera.Parameters parameters) {if(camera!=null) {camera.startPreview(); ...
- 从CES2015华硕发布的华硕ZenFone 2首发初评:双摄像头成亮点
[ 评测360]CES2015展会时间为1月6日-9日,然而就在会展第一天,华硕就为我们带来特大惊喜,两款智能手机,分别为华硕ZenFone 2(ZE551ML)和ZenFone Zoom (ZX55 ...
- 同为双摄像头,华为P9到底比iPhone 7 plus差在哪里?
一直以来,把手机拍照效果追赶上单反的拍摄效果是各个手机厂商的夙愿.但是,由于手机规格的设定,让这个愿望几乎不可能实现.有的手机厂商会研发出一个拍照外挂模块,以此来提高手机拍照的效果,如不久前Moto发 ...
- 安卓开发基础知识1(双摄像头安卓手机)
需求说明:安卓开发 内容 :双摄像头安卓手机调研 来自 :时间的诗 原文:http://mobile.163.com/16/0301/06/BH28BP9I001117A8_a ...
- 双摄像头采集的图片数据转换合成为视频
** 本文为CSDN原创文章,转载请注明出处 双摄像头数据转换为视频 ** 此文可将双摄像头实时采集的图像数据转换为指定格式的视频文件并保存,也可加以改动将图片序列合称为视频 #include < ...
- 全景视频拼接(二):双摄像头获取视频
项目要求:利用双摄像头同时采集两个视频,离线拼接,将两个视频拼接成一个视频. 该部分代码实现功能: 利用双摄像头获取视频 #include <iostream> #include < ...
最新文章
- 字典 update()
- 卧槽!面试官 5 连问一个 TCP 连接可以发多少个 HTTP 请求?
- 健康管理-健康的概念和健康管理目标特点
- springboot 2.x tomcat war包部署 localhost-startStop-1 启动卡顿卡死
- Mac下的浏览器速度比较,Chrome 得分最高
- [数据结构]P2.1 二叉搜索树
- Python版解决中文字符串错误
- 计算机组装模拟系统吗,怎么在线模拟组装电脑
- 人工智能数学基础---定积分2:定积分的性质
- 中国航空公司特点机型
- 京东平台和商家的不同合作模式
- 编程语言常见符号合集分享
- 基于Jsp、Java、数据库、HTML实现网上投票系统(含文档和代码)Jsp课程设计
- git中push和pull的区别是什么
- OpenStack架构
- 移动端界面设计之尺寸篇
- get 到的html代码如何转码,爬虫网页转码逻辑
- 笨拙的手指 代码优化版
- QT QChartView 鼠标随动 十字线 缩放 平移 拖动
- B2B行业网站销售方式及销售工作内容