没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1. Camera Basic:
安卓框架支持多种设备的多种相机应用,以支持应用中实现图片和视频的捕获功能。本文档讨论快速简单的图像和
视频捕获实现方式,并概要介绍一种定制化摄像头的实现。
1.1 注意事项:
在你的 添加相机功能之前,首先应该考虑如下几个关于硬件特性的问题:
相机需求:
是否你的应用与相机功能紧密相关,即,你的应用将在没有摄像头硬件的设备上无法运行?如果是这样的,那么在
文件中应该声明相机需求,参照:
清单声明 。
简单拍照功能或是个性化相机:
你的应用将如何使用相机?是单纯的简单拍照或摄录,还是提供一种新的个性化的相机使用方式。对于简单的拍照
和摄录,请参照:
调用系统相机 ;对于希望使用个性化相机的开发者,请参见: 个性化相机应用
存储:
对于那些通过你的应用所拍摄的图片或视频是希望仅仅被这个应用所使用还是希望被包括图片浏览器等其他应用所
使用和查看呢?当这这个应用被卸载之后,是否还希望这个图片能继续保存?参见 保存媒体文件 可以学习到相
关的更多详情。
1.2 基础知识
安卓的框架支持两种图片视频的拍摄实现方式:API 或 摄像头 。相关的类包括如下 个:
类:
操控设备摄像头的基本 。当搭建一个应用的时候,这个类用于实现拍照和摄录功能。
类:
用于为用户呈现摄像头的实时预览。
类:
用于摄像头录像功能。
类:
通过两个 来直接使用 对象完成拍照或摄像功能,这两个 是:
!"#
1.3 清单声明
在实际调用摄像头相关 进行开发之前,首先应该向清单文件:“manifest.xml”中添加相应的声明来指明应用
使用了摄像头硬件或其他相关特性,这些声明包括:
摄像头权限:应用必须请求权限才能使用设备的摄像头硬件:
!!"#!!$%&#!!&'(
注:如果应用直接通过 来调用摄像头,则不需要添加这个权限。
摄像头特性:应用必须声明使用了摄像头这个特性():
!!"$%&)&'(
对于摄像头特性列表,参照清单: Features Reference.
$$%% 会检查并防止具备这个特性的应用在没有摄像头硬件的设备上安装。这被称作“基于特性筛选”,参见:
Google Play and Feature-Based Filtering.。
当某些特殊情况下,程序需要支持摄像头或摄像头某些特性,但并不需要实际使用的时候,应该将 &'(
属性设置为 %:
!!"$%&)&$*%&+!&'(
存储权限:如果应用需要将图片或视频存储到外部存储器,例如 )* 卡,必须做出如下权限声明:
!!"#!!$%&#!!,-.&'(
视频录制权限:对于音视频的捕获,应用必须声明音视频权限:
!!"#!!$%&#!!&'(
位置权限:当你想丰富你的应用,为每张图片加上 GPS 位置信息的标记,那么你应该加上地理位置权限声明:
!!"#!!$%&#!!/.&'(
对于更多关于用户位置信息的知识,请参照:Location Strategies.
1.4 调用系统相机
调用系统相机中的“系统”指使用者的安卓设备上的现有相机应用。这种快速编码实现图片拍照和视频录制的方式是
通过 调用设备上的已经安装了的相机应用。相机 请求调用其他已安装的相机应用来拍摄,之后再将控
制权返回给你的应用。本节将展示如何通过这种方法来拍摄照片,摄录视频!
!"#
+
这个过程大体包含了一下几个调用过程:
1. 构成相机 Indent:
创建一个 来获取图片或视频,分别使用如下 类型:
:通过请求(调用)现有相机应用来获取图像;
:通过请求(调用)现有相机应用来获取视频。
2. 启动相机 Indent:
使用 !01/!+23方法来执行(启动)相机的 。在启动这个 之后,被调用的外部应
用使用它自己的用户界面和接口来完成拍摄功能。
3. 获取 Indent 返回结果:
通过在你的应用内部实现 01!+23方法来接受回调,并处理从相机 中返回的数据。
1.4.1 拍照 Indent:
通过相机 的方式来拍照是一种快速编码的方式。这种图片拍照的 可以包含如下额外信息:
--
此设置请求一个 对象,用以指明保存文件的文件路径和文件名。虽然这是一个可选的行为,但在此强烈建议这
样做。若不指明此值,相机程序将把拍摄到的图片用默认文件名和路径保存。对于默认的文件名和路径,开发人员
可以通过 423获取。
如下示例展示了如何构建一个图片拍摄用的 并执行:
#0!+56%7889
#0+9
:0
#;+02<+!0!3=
>>!#2!0!39
>>!2+139
>>''?#+)++4##+
>>%239
>>+%4#/+2539''+!0)
4
>>#@2-A+39''!)4+
>>''!)4#
>>!01/!+2A5639
B
此示例代码中 4#/+23方法的详细介绍请参看:1.6
保存媒体文件
当程序流程执行到 !01/!+23方法时,系统将会切换到外部相机应用的用户界面。在用户完成
拍照或取消拍照时,用户界面回到你所开发的这个应用。作为开发人员,你必须实现 01!+23方法来
截获返回的结果,并保证你的应用继续正确执行。对于获取 Indent 返回结果的详细介绍,参见:1.4.3 获取
Indent
返回结果 。
!"#
1.4.2 摄录 Indent
和通过 调用系统相机拍照一样, 调用系统摄像头进行视频捕获也是一种快速编码的方式。一个视频摄
录 可以包含如下额外信息:
MediaStore.EXTRA_OUTPUT(,请求一个 来指明保存视频文件的文件名和路径。是一个被强烈推荐的可选参
数。若不指明,则视频被保存为默认的文件名和路径,并通过 Indent 的 423域返回。
MediaStore.EXTRA_VIDEO_QUALITY & :设置视频质量和文件大小,- 为最低, 为更高的视频质量,同时占用更
大存储空间(更大文件大小)。
MediaStore.EXTRA_DURATION_LIMIT:设置视频长度限制,单位为秒。
MediaStore.EXTRA_SIZE_LIMIT:设置捕获视频的文件大小,单位为 .。
如下示例演示了如何构建并启动一个视频摄录 :
#0!+56%C889
#0+9
:0
#;+02<+!0!3=
>>!#2!0!39
>>!2+139
>>''
>>%239
>>+%4#/+2539>''+!0)
0
>>#@2-A+39>''!)4+
>>#@2-6.5A739''!)04*+1
)4)
>>''!)#
>>!01/!+2A5639
B
此示例代码中 4#/+23方法的详细介绍请参看:1.6
保存媒体文件
当程序流程执行到 !01/!+23方法时,系统将会切换到外部相机应用的用户界面。在用户完成
摄录或取消摄录时,用户界面回到你所开发的这个应用。作为开发人员,你必须实现 01!+23方法来
截获返回的结果,并保证你的应用继续正确执行。对于获取 Indent 返回结果的详细介绍,参见下一节:1.4.3 获取
Indent
返回结果 。
!"#
剩余17页未读,继续阅读
资源评论
- qq_376707722018-01-04666,很好用的
- cszj123zyx2014-05-25很好,而且不用积分,感谢分享
josephus_mu
- 粉丝: 2
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功