Android框架包括对各种相机和相机功能的支持,允许你在应用程序中捕捉图片和视频。本文档讨论了一种快速、简单的图像和视频捕获方法,并概述了为用户创建自定义相机体验的高级方法。
注意:这个页面描述了已经被弃用的Camera类。我们建议使用更新的类camera2,它适用于Android 5.0 (API级别21)或更高版本。在我们的博客上阅读更多关于camera2的信息并观看这个视频。
注意事项
在允许应用程序在Android设备上使用相机之前,您应该考虑一些关于应用程序打算如何使用这个硬件特性的问题。
摄像头需求——对应用程序来说,摄像头的使用是否如此重要,以至于不希望应用程序安装在没有摄像头的设备上?如果是,您应该在您的清单中声明相机需求。
快速图片或自定义相机-你的应用将如何使用相机?你只是对快速拍照或视频剪辑感兴趣,还是你的应用程序会提供一种新的使用相机的方式?要快速拍照或剪辑,可以考虑使用现有的相机应用程序。要开发定制的摄像头功能,请查看“构建摄像头应用”部分。
存储——应用程序生成的图像或视频是否只对应用程序可见或共享,以便其他应用程序(如图库或其他媒体和社交应用程序)可以使用它们?您是否希望即使您的应用程序已卸载,图片和视频仍然可用?查看保存媒体文件部分,了解如何实现这些选项。
基础
Android框架支持通过android.hardware.camera2API或摄像机意图来捕捉图像和视频。以下是相关的课程:
该软件包是控制设备摄像头的主要API。当你在构建一个相机应用程序时,它可以用来拍摄照片或视频。
相机
这个类是以前弃用的用于控制设备摄像机的API。
SurfaceView
这个类用于向用户显示实时的摄像机预览。
MediaRecorder
这个类用来记录摄像机的视频。
意图
类型为MediaStore.ACTION_IMAGE_CAPTURE或者MediaStore.ACTION_VIDEO_CAPTURE的意图可以用于捕获图像或视频,而无需直接使用Camera对象。
清单声明
在开始使用Camera API开发应用程序之前,您应该确保清单中有适当的声明,以允许使用Camera硬件和其他相关特性。
< uses-permission android:name = " android.permission.CAMERA" / >
注意:如果您通过调用现有的camera应用程序来使用camera,那么您的应用程序不需要请求此权限。
< uses-feature android:name = " android.hardware.CAMERA" / >用于Google play预判设备限制
<uses-permission android:name="android.permission.RECORD_AUDIO" />
音频录制权限-用于录制视频录制音频,您的应用程序必须请求音频捕获许可。
位置权限——如果应用程序用GPS定位信息标记图像,则必须请求ACCESS_FINE_LOCATION权限。请注意,如果您的应用程序的目标是Android 5.0 (API级别21)或更高,您还需要声明您的应用程序使用的是设备的GPS:
< uses-permission android:name = " android.permission.ACCESS_FINE_LOCATION "/>
<!——当你的应用目标是Android 5.0 (API级别21)或更高时需要添加一下功能需要。- ->
<uses-feature android:name="android.hardware.location.gps"/>
建立一个相机应用
一些开发人员可能需要一个相机用户界面,该界面是根据他们的应用程序的外观定制的,或者提供特殊的功能。编写自己的图片获取代码可以为用户提供更有吸引力的体验。
注意:下面的指南是针对旧的、不赞成使用的Camera API的。对于新的或高级的相机应用程序,推荐使用更新的android.hardware.camera2 API。