android基础学习之相机拍照部分
在学习这个模块之前必须要对android有关于相机拍照的API有所了解 , 这个模块的API有两部分 一部分就是Camera 还有一部分 是Camera2 好像androidX包里面还有一个CameraX , 但是 我们只能从最简单的来 就看android Camera包吧 我们线了解了解它的结构
由于API较多 我们这里就不做多的介绍 可以查看官网 :android.hardware | Android Developershttps://developer.android.google.cn/reference/android/hardware/package-summary
开发步骤:
- 首先 , 需要获取 相机对象实例 , 可以通过官网提供的open方法获取
- 还需要一个预览视图的容器(我的理解)术语来说就是需要一个表面 Sufarce
- 可以通过 相机对象 的 setPreviewDisplay方法来设置视图显示 该方法需要一个参数 就是Sufarceholder 对象
- 通过sufarce对象获取Sufarceholder 并设置Sufarceholder;
- 可以设置一下相机的参数 可以通过Camera.Parament这个类来设置
- 调用startPreView方法开启预览
- 在预览的状态下 调用TakePicture方法来实时拍照并获取拍照的图片 ;
代码:
开启预览和参数配置
SurfaceView surface = (SurfaceView) findViewById(R.id.sf); //获取视频承载对象SurfaceHolder holder = surface.getHolder();//通过这个承载对象获取holdercamera = Camera.open();//使用Carmera类的open方法调用摄像头 这个方法会返回一个camera对象camera.setDisplayOrientation(90);
//设置相机的参数
Camera.Parameters parameters = camera.getParameters();
//设置相机信息parameters.setPictureSize(400 , 400);//设置该相机拍摄的照片的大小
parameters.setPictureFormat(ImageFormat.JPEG);//设置相机拍照的格式
//开始预览
startPreview.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断相机对象是否被实例化if (camera!=null){try {camera.setPreviewDisplay(holder);//设置实时预览 --- 预览显示camera.startPreview();//开启预览isPreview = true ;} catch (IOException e) {e.printStackTrace();}}else {new IllegalArgumentException("相机为打开");}}
});
开始拍照
//设置拍照按钮的监听事件startTakePicture.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (camera == null || isPreview == false){Log.e("TAG", "相机没打开 或者是 未开启预览 " );}else {//开始拍照parameters.setRotation(90);camera.takePicture(null, null, new Camera.PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {//创建位图Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//为imageView控件添加图片image.setImageBitmap(bitmap);//继续回到预览状态camera.startPreview();isPreview = true;}});}}});
android基础学习之相机拍照部分相关推荐
- Android开发之调用相机拍照与本地图库选择图片
引用链接 Android开发之调用相机拍照与本地图库选择图片 Android调用相机实现拍照功能 部分截图 引言 小项目有一个访问相册的需求,在网上查找得到两位大神博客指点,但博客发布时间过旧,难免因 ...
- android代码调用相机,Android如何调用系统相机拍照
本文实例为大家分享了Android调用系统相机拍照的具体代码,供大家参考,具体内容如下 /** * 调用系统相机 */ private void takePhoto() { Uri uri = nul ...
- Android 7.0 获取相机拍照图片,适配三星手机拍照,解决三星手机拍照屏幕旋转,判断设备是否有摄像头
方法1 新建/res/xml/file_paths: <?xml version="1.0" encoding="utf-8"?> <path ...
- Android 调起系统相机拍照
概述 比奇小说网 m.biqi.org 最近在看 nanChen 写的图片选择器 ImagePicker,感觉写得很不错,也打算把从中学到的东西写下来.很多时候,遇到一个好的框架能够降低开发成本这是好 ...
- 调用Android系统自带相机拍照,从相册中获取图片
一,前言: 在日常的手机应用开发过程中,经常会遇到上传图片的需求,像上传头像之类的,这就需要调用系统的相机,相册获取照片.但是在Android 系统7.0之后认为这种操作是不安全的,这篇文章主要就是记 ...
- Android基础---学习历程【上课用到的资源---学期!汇总!整理】【课本源码、课后习题答案、上课课件与录播】
专业课 名:Android开发基础A 2020年 上半年[大二下学期]学的. 目 录 推荐博客 学习帮助文档(必看) 课本(Android 移动开发基础 案例教程) 课本源码and课后习 ...
- Android使用CameraX打开相机拍照简单使用
1.首先是效果图 2.布局及依赖 布局: <?xml version="1.0" encoding="utf-8"?> <androidx.c ...
- Android手机调用系统相机拍照、裁剪以及获取Url上传图片
前言 最近一个人在公司搞独立开发,遇到问题只能自己解决,虽然过程比较坎坷,但是收获还是颇多的,一个人也是要坚强滴,最近弄用户的头像遇到了一些小问题,虽然上一款应用有头像上传,但是发现了其中的一些小问题 ...
- Android WebView中打开相机拍照和选择相册
一般在项目中与js交互,可能会遇到上传文件图片等操作,避免不了一些坑,下面简单说一下,Android 在不同版本中webView调用相机,选择相册的方法是不一样的,3.0以下的调用 public vo ...
最新文章
- java基础 -- 数据类型,基本程序结构
- Nginx负载均衡实现之四层与七层负载
- 左神算法:单调栈结构(Java版)
- java.util.logging.Logger基础教程
- Angular HttpClient.get的实现单步调试
- 你在学校我安排了你没有做到最多凶你一顿,在公司不一样,直接得让走人!...
- Leetcode: Kth Largest Element in an Array
- th标签能包裹select吗_电影《八佰》过后,他能摘掉马思纯前男友标签了吗?
- DatagridView 常用功能代码
- django 1.8 官方文档翻译: 6-6-2 如何使用WSGI 部署
- pycharm中tensorflow代码不能自动补全或import红线问题解决
- PHP实现今天是星期几的几种写法
- Visual Studio中实用工具VAssistX
- linux下载flink安装包
- 找出不大于n的最大质数
- 硬盘主分区和逻辑驱动器的区别
- win10系统编辑服务器在哪里设置密码,技术编辑处置win10系统忘记登录密码的设置技巧...
- 【陈工笔记】# 如何用WPS演示给PPT加水印 #
- 分销商城系统核心功能模块
- JavaScript常用的工具函数,不全面大家补充哦
热门文章
- easypoi动态设置列宽
- matlab求逆矩阵(分数表示)
- 使用Jest测试JavaScript (入门篇) 1
- 旷视科技Face++联手vivo掀起美学革命 AI智能助推vivo X23全方位进阶
- x-forward-for科普
- 小米路由器怎么设置?小编教你设置小米路由器的方法
- 【步态识别】GaitEdge超越普通的端到端识别《GaitEdge: Beyond Plain End-to-end Gait Recognition for Better Practicality》
- 【CSS】CSS 规避脱标之两种用法
- linux命令的理解
- 联通宽带路由器的管理地址和管理员密码