(二)进阶练习____8、捕捉照片——简易录像
分任务链接地址:http://docs.eoeandroid.com/training/camera/videobasics.html
作者:GloriousOnion
完成时间:
目录[隐藏] |
摄像入门
本课介绍如何通过已有的相机应用拍摄影像。 如果您所开发的应用需要将拍摄的影像整合到一起,来完成特定工作,如果您只想拍摄一段影像而不想重新开发一个摄像应用,值得高兴的是,绝大部分的Android设备上已经装有可以摄像的应用。本节会介绍如何使用它。
声明App必需摄像头设备的支持
如果您所开发的App必需摄像头的支持才可以运行,那么需要在Manifest文件中加入<uses-feature>标签:
<manifest ... >
<uses-feature android:name="android.hardware.camera" />
...
</manifest ... >
如果您的App只是使用到了摄像头,而非必需,那么可以在该标签中加入android:required="false"。若加入该属性,Google Play将会允许没有摄像头的设备下载您的App。为此,您需要在程序运行时通过调用hasSystemFeature(PackageManager.FEATURE_CAMERA)来检测当前设备是否有摄像头设备。如果没有摄像头,您需要关闭App与摄像头有关的特性。
通过相机应用录制视频
通过调用开发者定义的完成特定需求的Intent对象可使其他App来协助完成特定功能。这个过程需要三步:构造Intent对象、启动外部Activity并实现用于处理返回的视频文件的代码。 下面的函数启动了录制视频的Intent。
private void dispatchTakeVideoIntent() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(takeVideoIntent, ACTION_TAKE_VIDEO); }
下面的函数用于检测设备上是否已安装了可处理您所发出的Intent的App:
public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
浏览视频
Android平台上的相机应用会把视频文件的存储位置通过Intent对象以Uri的形式返回,在onActivityResult()函数中可以对其进行处理。以下代码展示了如何获取视频并通过VideoView对象显示。
private void handleCameraVideo(Intent intent) { mVideoUri = intent.getData(); mVideoView.setVideoURI(mVideoUri); }

浙公网安备 33010602011771号