Android Camera 相机开发详解

在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和架构上做了巨大的变动,
但是基于众所周知的原因,我们还必须基于 Android 4.+ 系统进行开发。本文介绍的是Camera接口开发及其使用方法,通过本文章,你将全面地学会Camera接口的开发流程。

图文与GithubPages原文均为本人原创

YOOJIA-CAMERAS

调用系统相机/其它App完成拍摄操作

如果你的App的需求只是调用摄像头拍照并拿到照片,老司机的建议是别自己实现拍照模块,这里面坑多水深。你完全可以使用Intent来调用系统相机或第三方具备拍照功能的App来拍照并获取返回照片数据。

创建一个Intent,指定两个拍摄类型之一:

  • MediaStore.ACTION_IMAGE_CAPTURE 拍摄照片;
  • MediaStore.ACTION_VIDEO_CAPTURE 拍摄视频;

Intent intent = new Intent(MediaStore.ACTION_IMAGE/VIDEO_CAPTURE);

通用流程startActivityForResult()onActivityResult()就不表述了。说说拍摄照片的Intent参数吧。

首先是设置拍摄后返回数据的地址:

intent.putExtra(MediaStore.EXTRA_OUTPUT, your-store-uri);

MediaStore.EXTRA_OUTPUT 参数用于指定拍摄完成后的照片/视频的储存路径。你可以使用Android默认的储存照片目录来保存:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURE)

也可以是其它任意你喜欢的储存目录。如果你使用了App内部目录,某些临时文件如拍摄并上传的头像文件,在处理完成后,要记得将它删除。这样做的好处是减少App占用储存空间,手机用户特别喜欢对占用大储存空间的App下重手删除和清理空间。如果你必须保存大体积的文件,可以使用公共空间来储存,把包袱丢出去,私有空间仅保存应用配置数据。

相机其它设置,如指定拍摄照片的尺寸大小,照片质量等,待以后文章更新吧。

// TODO 是程序界最大的谎言

使用Camera开发照相功能

使用Camera API来开发拍照模块需要费一番大功夫。下面是介绍我在开发NextQRCode项目中使用Camera API的方法和流程。

1.在 Android Manifest.xml 中声明相机权限

开发第一步是在 Android Manifest.xml 文件中声明使用相机的权限:

<uses-permission android:name="android.permission.CAMERA" />

有些同学在开发时忘了声明权限,运行时应用可能会崩溃掉。另外也要增加以下两个特性声明:

<uses-feature android:name="android.hardware.camera" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

required属性是说明这个特性是否必须满足。比方说示例的设置就是要求必须拥有相机设备但可以没有自动对焦功能。

这两个声明是可选的,它们用于应用商店(Google Play)过滤不支持相机和不支持自动对焦的设备。

另外在保存照片时需要写入储存器的权限,也需要加上读写储存器的权限声明:

<uses-permission android:name="android.permiss
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值