Android中相机拍照
Android中调用系统相机的api接口在android.hardware包中。包里面类主要用到了Camera类。该类里面包含几个内部类:Camera.Parameters、Camera.CameraInfo、Camera.PictureCallback。
Camera.Parameters是通过Camera.Parameters parameters = mCamera.getParameters()获取,主要用来设置相机的一些參数,包含图片的格式、是否开启闪光灯等。
Camera.CameraInfo是通过CameraInfo info = new CameraInfo(); Camera.getCameraInfo(0, info)获取,主要用来获取相机的參数,包含方向等。
Camera.PictureCallback是直接new Camera.PictureCallback()然后实现里面的回调方法,public void onPictureTaken(byte[] data, Camera camera)将byte[]转换为bitmap。
相机的调用是先int mCameraId = Camera.getNumberOfCameras() - 1, Camera.open(mCameraId)。依据CameraInfo调整相机方向等。然后点击拍照后调用设置Camera.Parameters。mCamera.takePicture(null, null, pictureCallBack);最后在Camera.PictureCallback里获取图片。
在调用系统相机时还须要用到android.view包里的用于显示图像的类,SurfaceView、SurfaceHolder、SurfaceHolder.Callback。
通过mSurfaceViewPicture = new SurfaceView(context), 在打开相机之后调用
mSurfaceHolder = mSurfaceViewPicture.getHolder();
mSurfaceHolder.addCallback(mCallback);
// 设置类型
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mPictureView.addView(mSurfaceViewPicture);//mPictureView是FrameLayout用于显示图形的。
private Callback mCallback = new Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
} catch (IOException e) {
LogUtils.e(TAG, ""+e.getMessage());
if (mCamera != null) {
mCamera.release();
mCamera = null;
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}
};
Android中相机拍照的更多相关文章
- Android中相机和相冊使用分析
Android中相机和相冊使用分析 欢迎转载,但请尊重原创(文章来自不易,转载请标明转载出处,谢谢) 在手机应用程序中,使用自带的相机拍照以及相冊选择喜欢的图片是最常见只是的用户需求,那么怎么合理使用 ...
- Android自定义相机拍照、图片裁剪的实现
最近项目里面又要加一个拍照搜题的功能,也就是用户对着不会做的题目拍一张照片,将照片的文字使用ocr识别出来,再调用题库搜索接口搜索出来展示给用户,类似于小猿搜题.学霸君等app. 其实Android提 ...
- 解决Android调用相机拍照,要报“打开相机失败”查看debug日志显示“setParameters failed”的问题
使用CameraLibrary项目,在部分手机或平板上不能正常使用,要报“打开相机失败”查看debug日志显示“setParameters failed”. 找到CameraView.java中的se ...
- android 调用相机拍照及相册
调用系统相机拍照: private Button btnDyxj; private ImageView img1; private File tempFile; btnDyxj = (Button) ...
- Android自定义相机拍照并使用CardView展示
直接上完整代码:在Android Studio新建一个项目,然后依次创建: 1.预先在drawable文件夹中保存的图片资源 2.创建:CameraPreView.java类: 3.创建:OnClic ...
- android 使用相机拍照,并存储到手机sd卡上,并利用系统录像录像并播放
//首先声明一个成员变量 String savePath,用来储存文件路径 /** * 保存照片路径 * @return 返回图片的一个文件 * @throws IOException 抛出一个异常 ...
- Android调用相机拍照并返回路径和调用系统图库选择图片
调用系统图库: Intent intent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI); ...
- 调用android系统相机拍照并保存
[java] view plaincopyprint? <span style="font-size:18px;">package com.demo; import j ...
- Android调用相机并将照片存储到sd卡上
Android中实现拍照有两种方法,一种是调用系统自带的相机,然后使用其返回的照片数据. 还有一种是自己用Camera类和其他相关类实现相机功能,这种方法定制度比较高,洗染也比较复杂,一般平常的应用只 ...
随机推荐
- 并发编程学习笔记(12)----Fork/Join框架
1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...
- DWG转PDF
DWG转PDF DWG转换PDF有两种方法,一种是利用PDF打印机,一种是利用专业软件: 利用PDF打印机最直接,但是不能批量打印,下面讲一下利用专业软件如何进行批量转换,在这里以梦想CAD软件(Mx ...
- nginx+keepalived+tomcat+memcache实现双VIP高可用及Session会话保持
Nginx+Keepalived+Tomcat+Memcached 实现双VIP负载均衡及Session会话保持 IP 信息列表: 名称 IP ...
- adb 命令实用
1.adb安装:adbinstall.bat:原理:将apk文件拖进此bat,install命令会强制(覆盖)安装apk安装包.代码如下: @echo on adb install -r % paus ...
- JAVA基础——构造函数方法总结(有参构造和无参构造)
使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回 ...
- angular4打包以后,刷新报404
项目打包以后,上传到服务器,可以正常的切换页面,但是一旦刷新就会报404,找不到页面,其解决方法是:在app.module.ts里面引入下面的模块: import {HashLocationStrat ...
- eclipse 中为 java 项目生成 API 文档、JavaDoc
当我们的项目很大,编写了很多代码的时候,就需要生成一个标准的 API 文档,让后续的开发人员,或者合作者可以清晰的了解您方法的使用. 1.点击 eclipse 的 Project 菜单,选择 Gene ...
- DTD 文件的引入
MyBatis 有两种配置文件:核心配置文件(mybatis- config.xml)和 SQL 映射文件(mapper.xml).这两种配置文件都需要手动引入各自的 DTD 文件(mybatis-3 ...
- Oracle 密码文件
一.密码文件 作用:主要进行DBA权限的身份认证 DBA用户:具有sysdba,sysoper权限的用户被称为dba用户.默认情况下sysdba角色中存在sys用户,sysoper角色中存在syste ...
- 网络基础——TCP
TCP和UDP协议特点 1.TCP 1>.传输控制协议 2>.可靠的.面向连接的协议 3>.传输效率低 2.UDP 1>.用户数据报协议 2>.不可靠的.无连接的服务 3 ...